From 3ee31409521d0861b60a2c74b8ebcb6cb6f911bf Mon Sep 17 00:00:00 2001
From: Fabrice  ALLAIN <fabrice.allain@pasteur.fr>
Date: Wed, 4 Apr 2018 16:35:21 +0200
Subject: [PATCH] Updated toctree & ariaec setup command within sphinx
 documentation

---
 .gitignore                                    |    1 +
 CHANGELOG                                     |   52 +-
 README.rst                                    |   58 +-
 aria/conbox/commands.py                       |    6 +-
 docs/_build/doctrees/contents.doctree         |  Bin 7120 -> 0 bytes
 docs/_build/doctrees/copyright.doctree        |  Bin 6868 -> 0 bytes
 docs/_build/doctrees/environment.pickle       |  Bin 8904 -> 0 bytes
 docs/_build/doctrees/glossary.doctree         |  Bin 2110 -> 0 bytes
 docs/_build/doctrees/installation.doctree     |  Bin 2114 -> 0 bytes
 docs/_build/doctrees/tutorial.doctree         |  Bin 2110 -> 0 bytes
 docs/_build/html/_sources/contents.rst.txt    |   29 -
 docs/_build/html/_sources/copyright.rst.txt   |    9 -
 docs/_build/html/_sources/glossary.rst.txt    |    0
 .../_build/html/_sources/installation.rst.txt |    0
 docs/_build/html/_sources/tutorial.rst.txt    |    0
 docs/_build/html/_static/alabaster.css        |  693 ----
 docs/_build/html/_static/custom.css           |    1 -
 docs/_build/html/contents.html                |  244 --
 docs/_build/html/installation.html            |  222 --
 docs/_build/html/objects.inv                  |  Bin 356 -> 0 bytes
 docs/_build/html/searchindex.js               |    1 -
 docs/_build/html/tutorial.html                |  222 --
 docs/api/conbox.rst                           |  122 +
 docs/api/core.rst                             |    7 +
 docs/changelog.rst                            |    4 +
 docs/conf.py                                  |   30 +-
 docs/configuration.rst                        |   85 +
 docs/contents.rst                             |   21 +
 docs/copyright.rst                            |    9 -
 docs/examples/index.rst                       |    4 +
 docs/glossary.rst                             |    0
 docs/installation.rst                         |   18 +
 docs/{index.rst => introduction.rst}          |   15 +-
 docs/tutorial.rst                             |    0
 docs/usage.rst                                |  156 +
 examples-dev/olds/Makefile                    |   20 +
 .../olds/_build/doctrees/ariaec.doctree       |  Bin 0 -> 854286 bytes
 .../olds/_build/doctrees/ariaec.test.doctree  |  Bin 0 -> 3690 bytes
 .../olds/_build/doctrees/environment.pickle   |  Bin 0 -> 365681 bytes
 .../olds}/_build/doctrees/index.doctree       |  Bin 5391 -> 5418 bytes
 .../olds}/_build/doctrees/modules.doctree     |  Bin 3506 -> 3521 bytes
 .../olds}/_build/html/.buildinfo              |    2 +-
 .../_build/html/_modules/ariaec/analysis.html |  729 ++++
 .../_build/html/_modules/ariaec/base.html     |  755 +++++
 .../_build/html/_modules/ariaec/commands.html |  752 +++++
 .../html/_modules/ariaec/converter.html       | 2041 ++++++++++++
 .../_build/html/_modules/ariaec/maplot.html   |  425 +++
 .../_build/html/_modules/ariaec/ndconv.html   |  385 +++
 .../_build/html/_modules/ariaec/pdbdist.html  |  646 ++++
 .../_build/html/_modules/ariaec/pdbqual.html  |  278 ++
 .../_build/html/_modules/ariaec/protein.html  |  861 +++++
 .../_build/html/_modules/ariaec/protmap.html  | 2743 +++++++++++++++
 .../_build/html/_modules/ariaec/reader.html   | 1141 +++++++
 .../_build/html/_modules/ariaec/settings.html |  543 +++
 .../_build/html/_modules/ariaec/setup.html    |  541 +++
 .../olds/_build/html/_modules/index.html      |   61 +-
 .../olds/_build/html/_sources/ariaec.rst.txt  |  123 +
 .../_build/html/_sources/ariaec.test.rst.txt  |   10 +
 .../olds}/_build/html/_sources/index.rst.txt  |    8 +-
 .../_build/html/_sources/modules.rst.txt      |    0
 .../olds}/_build/html/_static/ajax-loader.gif |  Bin
 .../olds}/_build/html/_static/basic.css       |    8 +-
 .../_build/html/_static/comment-bright.png    |  Bin
 .../_build/html/_static/comment-close.png     |  Bin
 .../olds}/_build/html/_static/comment.png     |  Bin
 .../_build/html/_static/css/badge_only.css    |    0
 .../olds}/_build/html/_static/css/theme.css   |    0
 .../olds}/_build/html/_static/doctools.js     |   56 +-
 .../_build/html/_static/down-pressed.png      |  Bin
 .../olds}/_build/html/_static/down.png        |  Bin
 .../olds}/_build/html/_static/file.png        |  Bin
 .../html/_static/fonts/Inconsolata-Bold.ttf   |  Bin
 .../_static/fonts/Inconsolata-Regular.ttf     |  Bin
 .../_build/html/_static/fonts/Lato-Bold.ttf   |  Bin
 .../html/_static/fonts/Lato-Regular.ttf       |  Bin
 .../html/_static/fonts/RobotoSlab-Bold.ttf    |  Bin
 .../html/_static/fonts/RobotoSlab-Regular.ttf |  Bin
 .../_static/fonts/fontawesome-webfont.eot     |  Bin
 .../_static/fonts/fontawesome-webfont.svg     |    0
 .../_static/fonts/fontawesome-webfont.ttf     |  Bin
 .../_static/fonts/fontawesome-webfont.woff    |  Bin
 .../olds}/_build/html/_static/jquery-3.1.0.js |    0
 .../olds}/_build/html/_static/jquery.js       |    0
 .../_build/html/_static/js/modernizr.min.js   |    0
 .../olds}/_build/html/_static/js/theme.js     |    0
 .../olds}/_build/html/_static/minus.png       |  Bin
 .../olds}/_build/html/_static/plus.png        |  Bin
 .../olds}/_build/html/_static/pygments.css    |    0
 .../olds}/_build/html/_static/searchtools.js  |    5 +-
 .../_build/html/_static/underscore-1.3.1.js   |    0
 .../olds}/_build/html/_static/underscore.js   |    0
 .../olds}/_build/html/_static/up-pressed.png  |  Bin
 .../olds}/_build/html/_static/up.png          |  Bin
 .../olds}/_build/html/_static/websupport.js   |    2 +-
 examples-dev/olds/_build/html/ariaec.html     | 2953 +++++++++++++++++
 .../olds/_build/html/ariaec.test.html         |   33 +-
 examples-dev/olds/_build/html/genindex.html   |  905 +++++
 .../olds}/_build/html/index.html              |   23 +-
 .../olds}/_build/html/modules.html            |   15 +-
 examples-dev/olds/_build/html/objects.inv     |  Bin 0 -> 1991 bytes
 .../olds/_build/html/py-modindex.html         |  136 +-
 .../olds}/_build/html/search.html             |   15 +-
 examples-dev/olds/_build/html/searchindex.js  |    1 +
 examples-dev/olds/ariaec.rst                  |  114 +
 examples-dev/olds/ariaec.test.rst             |   10 +
 examples-dev/olds/index.rst                   |   20 +
 examples-dev/olds/make.bat                    |   36 +
 {docs => examples-dev/olds}/modules.rst       |    0
 setup.py                                      |   12 +-
 109 files changed, 16742 insertions(+), 1675 deletions(-)
 delete mode 100644 docs/_build/doctrees/contents.doctree
 delete mode 100644 docs/_build/doctrees/copyright.doctree
 delete mode 100644 docs/_build/doctrees/environment.pickle
 delete mode 100644 docs/_build/doctrees/glossary.doctree
 delete mode 100644 docs/_build/doctrees/installation.doctree
 delete mode 100644 docs/_build/doctrees/tutorial.doctree
 delete mode 100644 docs/_build/html/_sources/contents.rst.txt
 delete mode 100644 docs/_build/html/_sources/copyright.rst.txt
 delete mode 100644 docs/_build/html/_sources/glossary.rst.txt
 delete mode 100644 docs/_build/html/_sources/installation.rst.txt
 delete mode 100644 docs/_build/html/_sources/tutorial.rst.txt
 delete mode 100644 docs/_build/html/_static/alabaster.css
 delete mode 100644 docs/_build/html/_static/custom.css
 delete mode 100644 docs/_build/html/contents.html
 delete mode 100644 docs/_build/html/installation.html
 delete mode 100644 docs/_build/html/objects.inv
 delete mode 100644 docs/_build/html/searchindex.js
 delete mode 100644 docs/_build/html/tutorial.html
 create mode 100644 docs/api/conbox.rst
 create mode 100644 docs/api/core.rst
 create mode 100644 docs/changelog.rst
 create mode 100644 docs/configuration.rst
 create mode 100644 docs/contents.rst
 delete mode 100644 docs/copyright.rst
 delete mode 100644 docs/glossary.rst
 rename docs/{index.rst => introduction.rst} (68%)
 delete mode 100644 docs/tutorial.rst
 create mode 100644 docs/usage.rst
 create mode 100644 examples-dev/olds/Makefile
 create mode 100644 examples-dev/olds/_build/doctrees/ariaec.doctree
 create mode 100644 examples-dev/olds/_build/doctrees/ariaec.test.doctree
 create mode 100644 examples-dev/olds/_build/doctrees/environment.pickle
 rename {docs => examples-dev/olds}/_build/doctrees/index.doctree (78%)
 rename {docs => examples-dev/olds}/_build/doctrees/modules.doctree (92%)
 rename {docs => examples-dev/olds}/_build/html/.buildinfo (82%)
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/analysis.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/base.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/commands.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/converter.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/maplot.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/ndconv.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/pdbdist.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/pdbqual.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/protein.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/protmap.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/reader.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/settings.html
 create mode 100644 examples-dev/olds/_build/html/_modules/ariaec/setup.html
 rename docs/_build/html/genindex.html => examples-dev/olds/_build/html/_modules/index.html (60%)
 create mode 100644 examples-dev/olds/_build/html/_sources/ariaec.rst.txt
 create mode 100644 examples-dev/olds/_build/html/_sources/ariaec.test.rst.txt
 rename {docs => examples-dev/olds}/_build/html/_sources/index.rst.txt (61%)
 rename {docs => examples-dev/olds}/_build/html/_sources/modules.rst.txt (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/ajax-loader.gif (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/basic.css (98%)
 rename {docs => examples-dev/olds}/_build/html/_static/comment-bright.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/comment-close.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/comment.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/css/badge_only.css (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/css/theme.css (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/doctools.js (82%)
 rename {docs => examples-dev/olds}/_build/html/_static/down-pressed.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/down.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/file.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/Inconsolata-Bold.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/Inconsolata-Regular.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/Lato-Bold.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/Lato-Regular.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/RobotoSlab-Bold.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/RobotoSlab-Regular.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/fontawesome-webfont.eot (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/fontawesome-webfont.svg (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/fontawesome-webfont.ttf (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/fonts/fontawesome-webfont.woff (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/jquery-3.1.0.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/jquery.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/js/modernizr.min.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/js/theme.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/minus.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/plus.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/pygments.css (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/searchtools.js (99%)
 rename {docs => examples-dev/olds}/_build/html/_static/underscore-1.3.1.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/underscore.js (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/up-pressed.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/up.png (100%)
 rename {docs => examples-dev/olds}/_build/html/_static/websupport.js (99%)
 create mode 100644 examples-dev/olds/_build/html/ariaec.html
 rename docs/_build/html/glossary.html => examples-dev/olds/_build/html/ariaec.test.html (77%)
 create mode 100644 examples-dev/olds/_build/html/genindex.html
 rename {docs => examples-dev/olds}/_build/html/index.html (84%)
 rename {docs => examples-dev/olds}/_build/html/modules.html (89%)
 create mode 100644 examples-dev/olds/_build/html/objects.inv
 rename docs/_build/html/copyright.html => examples-dev/olds/_build/html/py-modindex.html (50%)
 rename {docs => examples-dev/olds}/_build/html/search.html (89%)
 create mode 100644 examples-dev/olds/_build/html/searchindex.js
 create mode 100644 examples-dev/olds/ariaec.rst
 create mode 100644 examples-dev/olds/ariaec.test.rst
 create mode 100644 examples-dev/olds/index.rst
 create mode 100644 examples-dev/olds/make.bat
 rename {docs => examples-dev/olds}/modules.rst (100%)

diff --git a/.gitignore b/.gitignore
index da18743..0838ab6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 examples/dev/
+examples*dev/
 examples/tmp/
 docs/olds/
 *.simg
diff --git a/CHANGELOG b/CHANGELOG
index c6df0aa..8bde8a1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,32 +1,32 @@
-1. What's new in version 2.4 ?
+What's new in version 2.4 ?
 --------------------------------
 
-   1.1 Potential of Mean Forces for dihedral angles () and H-bonds ()
-   1.2 Clustering step during the iterative process
-   1.3 Extended scoring function including PMF, coulombic and full Lennard Jones functions
-   1.4 Restraints generation from evolutionary couplings and secondary structure prediction 
+    * Potential of Mean Forces for dihedral angles () and H-bonds ()
+    * Clustering step during the iterative process
+    * Extended scoring function including PMF, coulombic and full Lennard Jones functions
+    * Restraints generation from evolutionary couplings and secondary structure prediction 
 
 
-1. What's new in version 2.3?
+What's new in version 2.3?
 ----------------------------------
 
-- bug fixes
-
-- support of CCPN version 2 (instead of CCPN v1)
-
-- extension of symmetric oligomers support (C3, C5 and D2)
-  (in the GUI, go to "Data > Symmetry")
-
-- introduction of the log-harmonic potential for distance restraints (Nilges et al. Structure, 2008)
-  (go to "Structure Generation > CNS > Annealing Parameters > Log-Hamonic potential")
-
-- import of CCPN Models/Structure ensembles as initial structure for the minimization protocol or
-  as template structures for the initial assignment/calibration step. 
-
-- addition of Zinc ions coordination (through covalent bonds)
-  (go to "Add > Zinc Coordination")
-
-- Automated Molprobilty (clashlist) analysis
-  (go to "Analyses > Molprobity Clashlist")
-
-- addition of old aria1.x features (keep_structures, only fully assigned peaks)
+    * bug fixes
+    
+    * support of CCPN version 2 (instead of CCPN v1)
+    
+    * extension of symmetric oligomers support (C3, C5 and D2)
+      (in the GUI, go to "Data > Symmetry")
+    
+    * introduction of the log-harmonic potential for distance restraints (Nilges et al. Structure, 2008)
+      (go to "Structure Generation > CNS > Annealing Parameters > Log-Hamonic potential")
+    
+    * import of CCPN Models/Structure ensembles as initial structure for the minimization protocol or
+      as template structures for the initial assignment/calibration step. 
+    
+    * addition of Zinc ions coordination (through covalent bonds)
+      (go to "Add > Zinc Coordination")
+    
+    * Automated Molprobilty (clashlist) analysis
+      (go to "Analyses > Molprobity Clashlist")
+    
+    * addition of old aria1.x features (keep_structures, only fully assigned peaks)
diff --git a/README.rst b/README.rst
index c552de7..394dc0e 100644
--- a/README.rst
+++ b/README.rst
@@ -1,50 +1,48 @@
+=====================================================
 de Novo Ambiguous Restraints for Iterative Assignment
 =====================================================
 
 **A pipeline for automated de novo contact map assignment**
 
-|Pipeline status| |Coverage report|
+.. image:: https://gitlab.pasteur.fr/bis-aria/ariaec/badges/master/pipeline.svg
+   :target: https://gitlab.pasteur.fr/bis-aria/ariaec/commits/master
+   :alt: Pipeline status
+
+.. image:: https://gitlab.pasteur.fr/bis-aria/ariaec/badges/master/coverage.svg
+   :target: https://gitlab.pasteur.fr/bis-aria/ariaec/commits/master
+   :alt: Coverage report
+
 
 ``ariaec``  is a Python_ library that provides *de novo* structure prediction
 based on ARIA_ pipeline and evolutionary restraints inferred from co-evolution.
 
-The package add several command line interfaces aside the usual ARIA commands in
- order to convert data, setup an ARIA project with evolutionary restraints,
- analyze contact maps or protein structures and generate statistics from a culled
- list of PDB files. An exhaustive list of the commands is available in the
- section
-``nbsphinx`` is a Sphinx_ extension that provides a source parser for
-``*.ipynb`` files.
-Custom Sphinx directives are used to show `Jupyter `_ code cells (and of
-course their results) in both HTML and LaTeX output.
-Un-evaluated notebooks -- i.e. notebooks without stored output cells -- will be
-automatically executed during the Sphinx build process.
 
-Quick Start:
-------------
-    #. Be sure to check if ``pip`` (>= 9.0), ``setuptools`` (>= 18.0), ``numpy``
-(>= 1.11) and ``matplotlib`` are actually instaled in your personnal python
-installation or virtual environment.
+The package add a new command line interface aside the usual ARIA commands in
+order to convert data, setup an ARIA project with evolutionary restraints,
+analyze contact maps or protein structures and generate statistics from a culled
+list of PDB files.
+
+
+Quick Start
+-----------
+    1. Be sure to check if the following packages are correctly installed with
+    your python installation or virtual environment.
 
-    #. Download the ``zip`` or ``tar`` version at https://gitlab.pasteur.fr/bis-aria/ariaec
+        * ``pip`` (>= 9.0)
+        * ``setuptools`` (>= 18.0)
+        * ``numpy`` (>= 1.11)
+        * ``matplotlib``
 
-    #. Edit your ``index.rst`` and add the names of your ``*.ipynb`` files
-       to the ``toctree``.
+    2. Download the ``zip`` or ``tar`` version at Gitlab_
 
-    #. Run Sphinx!
+    3. Extract the files and run ``pip install .`` inside the new directory
 
-Online documentation (and example of use):
-    http://nbsphinx.readthedocs.io/
+More explanation about the ``pip`` installation can be found in the
+:doc: `installation` section
 
-Source code repository (and issue tracker):
-    https://github.com/spatialaudio/nbsphinx/
 
-License:
---------
-.. MIT -- see the file ``LICENSE`` for details.
 
 .. Hyperlinks
+.. _Gitlab: https://gitlab.pasteur.fr/bis-aria/ariaec
 .. _ARIA: http://aria.pasteur.fr
 .. _Python: https://www.python.org
-.. _Sphinx: http://sphinx-doc.org/
-.. _Jupyter Notebook: http://jupyter.org/
diff --git a/aria/conbox/commands.py b/aria/conbox/commands.py
index eb19a88..bcac5fe 100644
--- a/aria/conbox/commands.py
+++ b/aria/conbox/commands.py
@@ -212,8 +212,8 @@ class AriaEcCommands(object):
                            help="secondary structure prediction file")
         group.add_argument("-p", "--ariaproject", dest="ariaproject",
                            action=ReadableFile,
-                           help="ARIA project file. This file will be used as"
-                                "an initialization file if")
+                           help="ARIA project file used to initialize a new "
+                                "project with contact map data.")
         group.add_argument("-t", "--type",
                            nargs="*", dest="contact_types",
                            choices=self.contact_types, help="Infile(s) contact "
@@ -231,7 +231,7 @@ class AriaEcCommands(object):
         group.add_argument("--no-filter", dest="no_filter", action="store_true",
                            default=False, help="Do not filter contact map.")
         group.add_argument("--extract-all", dest="extractall", action="store_true",
-                           default=False, help="Extract data or all data and"
+                           default=False, help="Extract data or all data and "
                                                "parameters if an ARIA project"
                                                "is defined with -p option")
         return parser
diff --git a/docs/_build/doctrees/contents.doctree b/docs/_build/doctrees/contents.doctree
deleted file mode 100644
index c39c4a1e2446bb870a62dbfad8f1b40746c1cb8d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7120
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
WTkw$3GjUZTWqKC>-)3Xo$^QWe<u~;J

diff --git a/docs/_build/doctrees/copyright.doctree b/docs/_build/doctrees/copyright.doctree
deleted file mode 100644
index 7d110a629d68205ab19ea27b4cc6013fd99b7f3a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6868
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

diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
deleted file mode 100644
index d33247210ef006896462da1635f694de75dfde1e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8904
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
a`c$PJN00THQ<n0ok!P##VvO=+@&5qol2hOS

diff --git a/docs/_build/doctrees/glossary.doctree b/docs/_build/doctrees/glossary.doctree
deleted file mode 100644
index b71bf39c0b2dc6a05a67a769854dae2901bb2684..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2110
zcmZ`)`FGny5KhxNv2!>{FODX(9EB7}RG`pO&O#|iKosbdatN`O*48$wUCr()wgE%S
z^^*UZS;<b)yvGlDFS2Gv-+c3ZGY_VdR41hq(rzl9ay#cAbFSPR9=r4qr$=~v9a@Uz
z+zktE@x%xluwu)Ob;41eR&mO^7H38{3+;j#%j29|%X$>tjIagmq%?*K##Wam;W!t<
zT*?z|n9s)f5Kgkv>8{pJX~$#hm~ptUbqr?xXGLmpafEGXCYg{aRl=nRm!V}?e_U||
zreNL~rfgT6oEtnD!s32C<Kdke;b~~nzrLi!Gb20;%XXM|w2UW_79Wf7aaef-O_lvb
zgipfhBjIuN>Rg1Y&`N}>y0N$x;Zx9@kcj8AX;_#LAcf+1f%@IYdO+3F5kBJq7TP%K
z;MowGA{}$_9C5LD7?s6~5k3!#lh4*rUKrszEDMzi!xI-1jXmxxUW)KVXj<-^P(6z;
ztshLhYqWA)rE_<gENS-mvc`=OZmz@02`O=hCEEmi+hRa4PEl!XQkr=|d0Zue*t|@1
zOQw1y4LwdsMfeI#)0|#~7Im6%Ujkp-C3*0|L*+EYgz~P0(6-Kqf|7EtIg77TDW{V|
zUws1_^u`SFDlC|;e?tl@jl^rPnmJe4>p|eOCjAQTx|`bcg3RSIz&D|lGRH|yd4bnM
z%C5+bCEwu^-`bjnQ#SWfD@k=WmO5dQK)p?o)E>!O)dGEo^qMj0#)<E4HDGa!S~6=X
z<-HIZ<Oa#{{Sa2UG1|n`p-zeLxPHu-N+r$p1}u9vEM;bdM-n^u0W?zHDSP-~2+KV0
za6k7UVaYgmcykZdbm@xH{a?+GV8-J~9Nr>iG<sF$@xWUFKc<l_rDa~k`;xQx32{sU
z6{@SpVV_c1yU&dBfT<Q|Ier$x89%SCkQLvt<2m7V9JioJFE%b-zLMhSu)+s|yiNKq
ziNuQAFNmU<M60goVK|;K335kR;k3aosd6GU+m3n8gp65AuC9o@y$fs9NxpB%1GU7q
z@LYYh2gkYE!LP${UxnpmN`2%Kzwz`93QhVDBx|FXw0MW?<~gB_RgGxeG3>#7y**+t
zZoEq{y}Aym^IQ7F5#sS4G)mXqxQ5@s+&JA!@q5Y^>hOs02WVB18<t4;5tiaqSk@sb
z$Gk)#w8-EEeNYVWC)!|ZNyf-61iYq^n(zxFCXH^F1;%^iCf14jB6S)5yw!yEqe?>t
z4Y+fQz;$4DvTT!kH>akig5+wD>6`~$CM6RpxNY=(PfEayU_1#r^jk4>nO4D#`WF(2
z4SG`3CO5-PV;!cjMEk_?f%A5yX*lG&(CTr;X_eDlyTn4JwFCBhWTwhwaqTk9c45J*
zYTv~IE=*k9@Ao%r5S5Elz7tTW4e-8S)ylC!oQYm0>CfRdoRC`eP{Qh?%pWmap521B
z-<|OR+X|*diki^s<gh4;Jvdi8n@e8pBVyZSaWeKfl5xiKt88J>L}=k`Wf7q)H`P7l
z$`3k4w+r)hq{z1QbLrQ3MbQ2--U-VNoH=?}>I>N4nu6p0`VB@nBoQAzx%CzMWrV-N
ztYba@h`(j$VU9WSPp71XhNBVwzD}p8Eb8b#qHGXB)32ZEay^J>Z&W8aOJR1><HHCV
eb^M=E39ZQ)u=rPmf5VKID?$2ag#VVE&Hn(C4jC%|

diff --git a/docs/_build/doctrees/installation.doctree b/docs/_build/doctrees/installation.doctree
deleted file mode 100644
index 2422faaa0e3e29c6bfbd99c493f38fa19f8d123d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2114
zcmZ`)`FGny5KhxNv7N+8dT}(N<tU^;q5_4Ma+aeM0-`{tltV0QX>DyI?P_*cu>%-d
zu9y7R%u05W<~@GMdyzFW`sSPOn|UxDCps>j%<P8JiLh<|m<#3Fc<j<coF3uvHE1cG
z3%64Uizi0dfMr{Dt&@)Ov|@?qS)3W+EOZKPtYEpYmiH;R8DR@LacK+{WLB3Z7T6A<
zorqW)?z3?&gp<5<x~H{M+6iVIHxB1FkHM_}tV}E}jIaaEIF(sKm2fe_C1@Ew7*|||
zDVTGHE8Ej17Y0v;u&`gxczCBqcp94YuP<rw%m~lIlHJL>I%AVai;qS4I4nPcrpkUI
z!YASMk#JVMIv3#zv|{P1ZY-`w_!KlJB;xsW8s;YiWKs#dK>hAxJ)r982%qr)3vC>A
z@N5W8nT)x3j<{GjjLPE02%m?A$!BXQFN|;vmZVCg5wT-LV_!Inmm+)-npQX`Ro~)E
zYX=kW8Lga9N&7C(N}4^stZ{vW8*6ZKLJI5hc#D8<SquoqDJrc^LNhNYPpDWDo0p01
zjH`Z0LuWCm2w#C|n$xS$qE2JsOW<p}Bo9$|sDg$VQ{I&jI@TFkP*UzSXYq9^<#c@L
zt8YMq-k2S{3iGDt-;lyeli@X3Nu4X~^&oIslYXUey$x;pLF)1>z&D|la3@Gkd4bnM
z%C5*|nb;N?zO^|Gr)=(}R+8#0%XG{$0`)dUQhOwCRSWbT(rd~yH%@$avjGcZ)ET#y
zQr-)pL2k$dz8}JhFh(0j9qNP#XZ2&sRg%$MZ@`jg!%}8Scrs!KKY&Iex@8|f3}H#+
zUE$}xLs(KF9DcM1tGaYW>He?g$1vmZ#13x~G8(-qb2ju=z)xsoi%FRmY+rH~ZxP2N
zP^o%)9QG-Nbq3rh5148Rp5tdBobmJO$*kg=Igt}yCvX#*^kV(u<tqt(4$ERF$=js=
zl1Qw${emc(iM8s<K8E8NlOVUHl};P{k}AiU=37kUTxN_X<m!sZ+q<wzo#gwLJWva>
zh3D$4Jvc7ZHhvwB`zov`6Y3++@EcFxu+XFrNwPMIXBO{}-8?6>v8oY`JBB@&tG5U9
z;>NoK)2r){I=`h)93dX>L8ElN^=tSYw8!aQir-VVREI}|KR~OBT(?BRkFdxRX?d5Z
z9P<)|&?18u^g%hqpJ;=v#wjPa5b&BtYQirJMjG8J3uJrbCf;QOnYa{x-fTkWQKcb=
z2Hd$x;JPq7S+?=LTT@e0L3}kxbuNM)&oVAmaNFqno|J$a$weG=>9=CXrCJ3y>R(78
zHjs+uN*R7pZy4(^fkoOWP7Iy5EKS6r*o9VKC_(F-X4@ksD!m;{pihRXjK*rGVY&<R
zURnE2mT+O><iTLDQ3I)*oQUm!LT!Ne{km3;4_PYvX-0nzx8OvkRUb20d6fMlrpwct
z(DD0|9Wbt7S|+Fot&R^1qu7IUwYx<os+~lPyOhOauOpdfJj2Qw7EOc}&Q>-dzJ#f6
zqELR=3A$aFqeDg3t)EN3$}58Q7xH#kcHzv?<5FM2!R8bk_ZM(D!W|Ow;j>#`vR_8{
zE6h6H_mB8ndLG)`k%zh^Ej1jC@b@)3M`ck*{}H9b2%3HcRoCl5M7yIp%V`3$lO7*N
f(5U18j7n%tPJzY0BK#X>ykrT|KO_9N>~8!AA)p$~

diff --git a/docs/_build/doctrees/tutorial.doctree b/docs/_build/doctrees/tutorial.doctree
deleted file mode 100644
index a167d75d120d104283ae96bca3f8e5a398a8a42a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2110
zcmZ`)`F9&N5KhxNv7N+8dT}(N<tU^;vIPn)<t&tP1eOAwQjTSjcV({{t+XR)V+Sy_
zTrc^r8SUChn)mo2??qnC=$mi8Z|1>tlIo;%LfQ?bQ*PV-m~-XYc<j<coF3uvHE1c8
zbGK7)izi0dfMr{DtrL#ow2D*Svp6%tS?CnZSRUuxTGpq_%?Ml2NlIfVVQh725{~T<
z+9^-8VLlq?LO97vr+ZpEr5%s0W5(h9<}sM{&x+LI!U#LiOfn%;%7lv%E<ww%!8qeG
zOu?KpOxd0`IX8GRgoXWl#=|=`!qd>Ce|<`eXGVAymh4X6)iR#kwD?$rkHhjKXsYNZ
zB771~AGsb^pUy?N0<A>2sv3){5k3XY35j?<n}+!b0a7TA7pUHStOry*9pN(`V4;np
z3Z4z2Dbg_)&k+|3hf!I)7~%7<FnP9y^1=w$U`eP{7@oM8XzX)m@lu2@Lep~Rgz8&-
zY3-onJ)@Q5DsA6ovZUVQ%No~5xUmK&C#1w(mTVF5EsFucI7O+oNvY=r#c`DgV)HW5
zEt%?<)buzZ72zu|O?`S5T2yJmeF}VSm*l|<50z6B6N<YMLdQBI3JS`-<}AKWshmy@
zz4`_;=!@CGt1xeR{tGFrG!n1DO6FW)uLptCn)EBU>uqS$4>Fg_0N;dG${Z&-<po|3
zDY_yzmVBE_d~0(WPTAZ`tt8diSn7mH0`)fCr1D7Ksut)wq}Pl|Hx7JvvjGcZ)RI|C
zA@7CIAU8;k?}xC$jnO8i3Ux|^$MrE|DwWjN8?fZruoRgQ9!c!r2hd1)x9sDGAuRE{
z%YEN>2usGf!<&1ss!Lat?*DRr1T!8_;_wzBqt>f3kB8n0_%XF?F)i~V-j|%kPl#g@
zs8BsUzV<0y>kODt9x&zNEXU76IOF@(6SCqvc04D%j^idY>BIWP%U4qT9G3Y|khe+y
zC6QQh`vp-nlW5fweGJDvCP8isE1Wj?C1p;eW?M1OnUFC{$<-B+w|8NcD#`aPd7zfq
z7M`oG_TV^I+xT@juB))TOsS4s;y0eYVWCMMf@EzJlNRrg-8?5Wv8oo0D~3IotEWfo
z#f^6frdQV?b$&}v93dX>L8ElN^=tSYw8!CIir-VTP={NDKR~Oxxo(MsA7L?0g=Jl$
za?DE<LW>Mu(1T)#KhXqRO)^GqA>cKQRD>TGF==$GEHK_9H?eL!5UI=X=glT`9#tAL
zXuzFY1g;CSlVO|OyE!#A6(m=KOy@l4F)5i)!EK}Odr|^s1mj82rQeDjmuVH;sDB}W
z*nkGSrlZ_2)?o^ZG*28KI&W9%hC{v!tv*+rMmhDhM=VrYJ7B+0W~xjU*Dk|s7v{aH
z_FXLC!o<ac!C<2XQMowf+W}p*0p9ncS~)h1Gtti^{W;u%6H==_N?3W6`6GtQvs=*d
zvok(mTfwwQQ4?C792P~f2j^;MbIGfDL~Oe(PR2e*GS0Yvl`Slq2rZngEFzTUrrL*G
z`9`Pcc43Z|6xp^umwt>_1nm#w?Xc{^nWKxP-hhM6DLC%8-*ALGB;vy>x87pEjPO^O
zb*%4?_*-@!+RTxEx+M)X9F6ezHCjbwQQ!U}%7zg%{rIUi*Mo@WMzxZ&6lNziK8&DI
d-~Tfzp*2|p7XOOyZ<z6NB}o5_@ZYk#@gI|<87lw)

diff --git a/docs/_build/html/_sources/contents.rst.txt b/docs/_build/html/_sources/contents.rst.txt
deleted file mode 100644
index d34d8cf..0000000
--- a/docs/_build/html/_sources/contents.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _contents:
-
-Sphinx documentation contents
-=============================
-
-.. toctree::
-   :maxdepth: 2
-
-   installation
-   tutorial
-   modules
-
-   copyright
-
-
-Indices and tables
-==================
-
-.. only:: builder_html
-
-   * :ref:`genindex`
-   * :ref:`modindex`
-   * :ref:`search`
-   * :ref:`glossary`
-
-.. only:: not builder_html
-
-   * :ref:`modindex`
-   * :ref:`glossary`
\ No newline at end of file
diff --git a/docs/_build/html/_sources/copyright.rst.txt b/docs/_build/html/_sources/copyright.rst.txt
deleted file mode 100644
index 6a3311c..0000000
--- a/docs/_build/html/_sources/copyright.rst.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-:tocdepth: 2
-
-.. _copyright:
-
-Sphinx authors
-==============
-
-.. include:: ../COPYRIGHT
-
diff --git a/docs/_build/html/_sources/glossary.rst.txt b/docs/_build/html/_sources/glossary.rst.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/_build/html/_sources/installation.rst.txt b/docs/_build/html/_sources/installation.rst.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/_build/html/_sources/tutorial.rst.txt b/docs/_build/html/_sources/tutorial.rst.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css
deleted file mode 100644
index be65b13..0000000
--- a/docs/_build/html/_static/alabaster.css
+++ /dev/null
@@ -1,693 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
-    font-size: 17px;
-    background-color: #fff;
-    color: #000;
-    margin: 0;
-    padding: 0;
-}
-
-
-div.document {
-    width: 940px;
-    margin: 30px auto 0 auto;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 220px;
-}
-
-div.sphinxsidebar {
-    width: 220px;
-    font-size: 14px;
-    line-height: 1.5;
-}
-
-hr {
-    border: 1px solid #B1B4B6;
-}
-
-div.body {
-    background-color: #fff;
-    color: #3E4349;
-    padding: 0 30px 0 30px;
-}
-
-div.body > .section {
-    text-align: left;
-}
-
-div.footer {
-    width: 940px;
-    margin: 20px auto 30px auto;
-    font-size: 14px;
-    color: #888;
-    text-align: right;
-}
-
-div.footer a {
-    color: #888;
-}
-
-p.caption {
-    font-family: inherit;
-    font-size: inherit;
-}
-
-
-div.relations {
-    display: none;
-}
-
-
-div.sphinxsidebar a {
-    color: #444;
-    text-decoration: none;
-    border-bottom: 1px dotted #999;
-}
-
-div.sphinxsidebar a:hover {
-    border-bottom: 1px solid #999;
-}
-
-div.sphinxsidebarwrapper {
-    padding: 18px 10px;
-}
-
-div.sphinxsidebarwrapper p.logo {
-    padding: 0;
-    margin: -10px 0 0 0px;
-    text-align: center;
-}
-
-div.sphinxsidebarwrapper h1.logo {
-    margin-top: -10px;
-    text-align: center;
-    margin-bottom: 5px;
-    text-align: left;
-}
-
-div.sphinxsidebarwrapper h1.logo-name {
-    margin-top: 0px;
-}
-
-div.sphinxsidebarwrapper p.blurb {
-    margin-top: 0;
-    font-style: normal;
-}
-
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
-    font-family: 'Garamond', 'Georgia', serif;
-    color: #444;
-    font-size: 24px;
-    font-weight: normal;
-    margin: 0 0 5px 0;
-    padding: 0;
-}
-
-div.sphinxsidebar h4 {
-    font-size: 20px;
-}
-
-div.sphinxsidebar h3 a {
-    color: #444;
-}
-
-div.sphinxsidebar p.logo a,
-div.sphinxsidebar h3 a,
-div.sphinxsidebar p.logo a:hover,
-div.sphinxsidebar h3 a:hover {
-    border: none;
-}
-
-div.sphinxsidebar p {
-    color: #555;
-    margin: 10px 0;
-}
-
-div.sphinxsidebar ul {
-    margin: 10px 0;
-    padding: 0;
-    color: #000;
-}
-
-div.sphinxsidebar ul li.toctree-l1 > a {
-    font-size: 120%;
-}
-
-div.sphinxsidebar ul li.toctree-l2 > a {
-    font-size: 110%;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #CCC;
-    font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar hr {
-    border: none;
-    height: 1px;
-    color: #AAA;
-    background: #AAA;
-
-    text-align: left;
-    margin-left: 0;
-    width: 50%;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-a {
-    color: #004B6B;
-    text-decoration: underline;
-}
-
-a:hover {
-    color: #6D4100;
-    text-decoration: underline;
-}
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: 'Garamond', 'Georgia', serif;
-    font-weight: normal;
-    margin: 30px 0px 10px 0px;
-    padding: 0;
-}
-
-div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
-div.body h2 { font-size: 180%; }
-div.body h3 { font-size: 150%; }
-div.body h4 { font-size: 130%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
-    color: #DDD;
-    padding: 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    color: #444;
-    background: #EAEAEA;
-}
-
-div.body p, div.body dd, div.body li {
-    line-height: 1.4em;
-}
-
-div.admonition {
-    margin: 20px 0px;
-    padding: 10px 30px;
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
-    background-color: #FBFBFB;
-    border-bottom: 1px solid #fafafa;
-}
-
-div.admonition p.admonition-title {
-    font-family: 'Garamond', 'Georgia', serif;
-    font-weight: normal;
-    font-size: 24px;
-    margin: 0 0 10px 0;
-    padding: 0;
-    line-height: 1;
-}
-
-div.admonition p.last {
-    margin-bottom: 0;
-}
-
-div.highlight {
-    background-color: #fff;
-}
-
-dt:target, .highlight {
-    background: #FAF3E8;
-}
-
-div.warning {
-    background-color: #FCC;
-    border: 1px solid #FAA;
-}
-
-div.danger {
-    background-color: #FCC;
-    border: 1px solid #FAA;
-    -moz-box-shadow: 2px 2px 4px #D52C2C;
-    -webkit-box-shadow: 2px 2px 4px #D52C2C;
-    box-shadow: 2px 2px 4px #D52C2C;
-}
-
-div.error {
-    background-color: #FCC;
-    border: 1px solid #FAA;
-    -moz-box-shadow: 2px 2px 4px #D52C2C;
-    -webkit-box-shadow: 2px 2px 4px #D52C2C;
-    box-shadow: 2px 2px 4px #D52C2C;
-}
-
-div.caution {
-    background-color: #FCC;
-    border: 1px solid #FAA;
-}
-
-div.attention {
-    background-color: #FCC;
-    border: 1px solid #FAA;
-}
-
-div.important {
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.note {
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.tip {
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.hint {
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.seealso {
-    background-color: #EEE;
-    border: 1px solid #CCC;
-}
-
-div.topic {
-    background-color: #EEE;
-}
-
-p.admonition-title {
-    display: inline;
-}
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre, tt, code {
-    font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
-    font-size: 0.9em;
-}
-
-.hll {
-    background-color: #FFC;
-    margin: 0 -12px;
-    padding: 0 12px;
-    display: block;
-}
-
-img.screenshot {
-}
-
-tt.descname, tt.descclassname, code.descname, code.descclassname {
-    font-size: 0.95em;
-}
-
-tt.descname, code.descname {
-    padding-right: 0.08em;
-}
-
-img.screenshot {
-    -moz-box-shadow: 2px 2px 4px #EEE;
-    -webkit-box-shadow: 2px 2px 4px #EEE;
-    box-shadow: 2px 2px 4px #EEE;
-}
-
-table.docutils {
-    border: 1px solid #888;
-    -moz-box-shadow: 2px 2px 4px #EEE;
-    -webkit-box-shadow: 2px 2px 4px #EEE;
-    box-shadow: 2px 2px 4px #EEE;
-}
-
-table.docutils td, table.docutils th {
-    border: 1px solid #888;
-    padding: 0.25em 0.7em;
-}
-
-table.field-list, table.footnote {
-    border: none;
-    -moz-box-shadow: none;
-    -webkit-box-shadow: none;
-    box-shadow: none;
-}
-
-table.footnote {
-    margin: 15px 0;
-    width: 100%;
-    border: 1px solid #EEE;
-    background: #FDFDFD;
-    font-size: 0.9em;
-}
-
-table.footnote + table.footnote {
-    margin-top: -15px;
-    border-top: none;
-}
-
-table.field-list th {
-    padding: 0 0.8em 0 0;
-}
-
-table.field-list td {
-    padding: 0;
-}
-
-table.field-list p {
-    margin-bottom: 0.8em;
-}
-
-/* Cloned from
- * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
- */
-.field-name {
-    -moz-hyphens: manual;
-    -ms-hyphens: manual;
-    -webkit-hyphens: manual;
-    hyphens: manual;
-}
-
-table.footnote td.label {
-    width: .1px;
-    padding: 0.3em 0 0.3em 0.5em;
-}
-
-table.footnote td {
-    padding: 0.3em 0.5em;
-}
-
-dl {
-    margin: 0;
-    padding: 0;
-}
-
-dl dd {
-    margin-left: 30px;
-}
-
-blockquote {
-    margin: 0 0 0 30px;
-    padding: 0;
-}
-
-ul, ol {
-    /* Matches the 30px from the narrow-screen "li > ul" selector below */
-    margin: 10px 0 10px 30px;
-    padding: 0;
-}
-
-pre {
-    background: #EEE;
-    padding: 7px 30px;
-    margin: 15px 0px;
-    line-height: 1.3em;
-}
-
-div.viewcode-block:target {
-    background: #ffd;
-}
-
-dl pre, blockquote pre, li pre {
-    margin-left: 0;
-    padding-left: 30px;
-}
-
-tt, code {
-    background-color: #ecf0f3;
-    color: #222;
-    /* padding: 1px 2px; */
-}
-
-tt.xref, code.xref, a tt {
-    background-color: #FBFBFB;
-    border-bottom: 1px solid #fff;
-}
-
-a.reference {
-    text-decoration: none;
-    border-bottom: 1px dotted #004B6B;
-}
-
-/* Don't put an underline on images */
-a.image-reference, a.image-reference:hover {
-    border-bottom: none;
-}
-
-a.reference:hover {
-    border-bottom: 1px solid #6D4100;
-}
-
-a.footnote-reference {
-    text-decoration: none;
-    font-size: 0.7em;
-    vertical-align: top;
-    border-bottom: 1px dotted #004B6B;
-}
-
-a.footnote-reference:hover {
-    border-bottom: 1px solid #6D4100;
-}
-
-a:hover tt, a:hover code {
-    background: #EEE;
-}
-
-
-@media screen and (max-width: 870px) {
-
-    div.sphinxsidebar {
-    	display: none;
-    }
-
-    div.document {
-       width: 100%;
-
-    }
-
-    div.documentwrapper {
-    	margin-left: 0;
-    	margin-top: 0;
-    	margin-right: 0;
-    	margin-bottom: 0;
-    }
-
-    div.bodywrapper {
-    	margin-top: 0;
-    	margin-right: 0;
-    	margin-bottom: 0;
-    	margin-left: 0;
-    }
-
-    ul {
-    	margin-left: 0;
-    }
-
-	li > ul {
-        /* Matches the 30px from the "ul, ol" selector above */
-		margin-left: 30px;
-	}
-
-    .document {
-    	width: auto;
-    }
-
-    .footer {
-    	width: auto;
-    }
-
-    .bodywrapper {
-    	margin: 0;
-    }
-
-    .footer {
-    	width: auto;
-    }
-
-    .github {
-        display: none;
-    }
-
-
-
-}
-
-
-
-@media screen and (max-width: 875px) {
-
-    body {
-        margin: 0;
-        padding: 20px 30px;
-    }
-
-    div.documentwrapper {
-        float: none;
-        background: #fff;
-    }
-
-    div.sphinxsidebar {
-        display: block;
-        float: none;
-        width: 102.5%;
-        margin: 50px -30px -20px -30px;
-        padding: 10px 20px;
-        background: #333;
-        color: #FFF;
-    }
-
-    div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
-    div.sphinxsidebar h3 a {
-        color: #fff;
-    }
-
-    div.sphinxsidebar a {
-        color: #AAA;
-    }
-
-    div.sphinxsidebar p.logo {
-        display: none;
-    }
-
-    div.document {
-        width: 100%;
-        margin: 0;
-    }
-
-    div.footer {
-        display: none;
-    }
-
-    div.bodywrapper {
-        margin: 0;
-    }
-
-    div.body {
-        min-height: 0;
-        padding: 0;
-    }
-
-    .rtd_doc_footer {
-        display: none;
-    }
-
-    .document {
-        width: auto;
-    }
-
-    .footer {
-        width: auto;
-    }
-
-    .footer {
-        width: auto;
-    }
-
-    .github {
-        display: none;
-    }
-}
-
-
-/* misc. */
-
-.revsys-inline {
-    display: none!important;
-}
-
-/* Make nested-list/multi-paragraph items look better in Releases changelog
- * pages. Without this, docutils' magical list fuckery causes inconsistent
- * formatting between different release sub-lists.
- */
-div#changelog > div.section > ul > li > p:only-child {
-    margin-bottom: 0;
-}
-
-/* Hide fugly table cell borders in ..bibliography:: directive output */
-table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
-  border: none;
-  /* Below needed in some edge cases; if not applied, bottom shadows appear */
-  -moz-box-shadow: none;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
\ No newline at end of file
diff --git a/docs/_build/html/_static/custom.css b/docs/_build/html/_static/custom.css
deleted file mode 100644
index 2a924f1..0000000
--- a/docs/_build/html/_static/custom.css
+++ /dev/null
@@ -1 +0,0 @@
-/* This file intentionally left blank. */
diff --git a/docs/_build/html/contents.html b/docs/_build/html/contents.html
deleted file mode 100644
index 9bb303d..0000000
--- a/docs/_build/html/contents.html
+++ /dev/null
@@ -1,244 +0,0 @@
-
-
-<!DOCTYPE html>
-<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
-<head>
-  <meta charset="utf-8">
-  
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  
-  <title>Sphinx documentation contents &mdash; ARIA 4 documentation</title>
-  
-
-  
-  
-  
-  
-
-  
-
-  
-  
-    
-
-  
-
-  
-  
-    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
-  
-
-  
-
-  
-        <link rel="index" title="Index"
-              href="genindex.html"/>
-        <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
-
-  
-  <script src="_static/js/modernizr.min.js"></script>
-
-</head>
-
-<body class="wy-body-for-nav" role="document">
-
-   
-  <div class="wy-grid-for-nav">
-
-    
-    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
-      <div class="wy-side-scroll">
-        <div class="wy-side-nav-search">
-          
-
-          
-            <a href="index.html" class="icon icon-home"> ARIA
-          
-
-          
-          </a>
-
-          
-            
-            
-              <div class="version">
-                2
-              </div>
-            
-          
-
-          
-<div role="search">
-  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
-    <input type="text" name="q" placeholder="Search docs" />
-    <input type="hidden" name="check_keywords" value="yes" />
-    <input type="hidden" name="area" value="default" />
-  </form>
-</div>
-
-          
-        </div>
-
-        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-          
-            
-            
-              
-            
-            
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">Sphinx documentation contents</a></li>
-<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
-</ul>
-</div>
-            
-          
-        </div>
-      </div>
-    </nav>
-
-    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-      
-      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
-        
-          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
-        
-      </nav>
-
-
-      
-      <div class="wy-nav-content">
-        <div class="rst-content">
-          
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
-  <ul class="wy-breadcrumbs">
-    
-      <li><a href="index.html">Docs</a> &raquo;</li>
-        
-      <li>Sphinx documentation contents</li>
-    
-    
-      <li class="wy-breadcrumbs-aside">
-        
-            
-            <a href="_sources/contents.rst.txt" rel="nofollow"> View page source</a>
-          
-        
-      </li>
-    
-  </ul>
-
-  
-  <hr/>
-</div>
-          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
-           <div itemprop="articleBody">
-            
-  <div class="section" id="sphinx-documentation-contents">
-<span id="contents"></span><h1>Sphinx documentation contents<a class="headerlink" href="#sphinx-documentation-contents" title="Permalink to this headline">¶</a></h1>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="modules.html">ariaec</a><ul class="simple">
-</ul>
-</li>
-<li class="toctree-l1"><a class="reference internal" href="copyright.html">Sphinx authors</a></li>
-</ul>
-</div>
-</div>
-<div class="section" id="indices-and-tables">
-<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
-<ul class="simple">
-<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
-<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
-<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
-<li><span class="xref std std-ref">glossary</span></li>
-</ul>
-</div>
-
-
-           </div>
-           <div class="articleComments">
-            
-           </div>
-          </div>
-          <footer>
-  
-
-  <hr/>
-
-  <div role="contentinfo">
-    <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
-
-    </p>
-  </div>
-  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
-
-</footer>
-
-        </div>
-      </div>
-
-    </section>
-
-  </div>
-  
-
-
-  
-
-    <script type="text/javascript">
-        var DOCUMENTATION_OPTIONS = {
-            URL_ROOT:'./',
-            VERSION:'4',
-            COLLAPSE_INDEX:false,
-            FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true,
-            SOURCELINK_SUFFIX: '.txt'
-        };
-    </script>
-      <script type="text/javascript" src="_static/jquery.js"></script>
-      <script type="text/javascript" src="_static/underscore.js"></script>
-      <script type="text/javascript" src="_static/doctools.js"></script>
-      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
-  
-
-  
-  
-    <script type="text/javascript" src="_static/js/theme.js"></script>
-  
-
-  
-  
-  <script type="text/javascript">
-      jQuery(function () {
-          SphinxRtdTheme.StickyNav.enable();
-      });
-  </script>
-   
-
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/_build/html/installation.html b/docs/_build/html/installation.html
deleted file mode 100644
index bb49dbe..0000000
--- a/docs/_build/html/installation.html
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
-<!DOCTYPE html>
-<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
-<head>
-  <meta charset="utf-8">
-  
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  
-  <title>&lt;no title&gt; &mdash; ARIA 4 documentation</title>
-  
-
-  
-  
-  
-  
-
-  
-
-  
-  
-    
-
-  
-
-  
-  
-    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
-  
-
-  
-
-  
-        <link rel="index" title="Index"
-              href="genindex.html"/>
-        <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
-
-  
-  <script src="_static/js/modernizr.min.js"></script>
-
-</head>
-
-<body class="wy-body-for-nav" role="document">
-
-   
-  <div class="wy-grid-for-nav">
-
-    
-    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
-      <div class="wy-side-scroll">
-        <div class="wy-side-nav-search">
-          
-
-          
-            <a href="index.html" class="icon icon-home"> ARIA
-          
-
-          
-          </a>
-
-          
-            
-            
-              <div class="version">
-                2
-              </div>
-            
-          
-
-          
-<div role="search">
-  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
-    <input type="text" name="q" placeholder="Search docs" />
-    <input type="hidden" name="check_keywords" value="yes" />
-    <input type="hidden" name="area" value="default" />
-  </form>
-</div>
-
-          
-        </div>
-
-        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-          
-            
-            
-              
-            
-            
-              <!-- Local TOC -->
-              <div class="local-toc"><ul class="simple">
-</ul>
-</div>
-            
-          
-        </div>
-      </div>
-    </nav>
-
-    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-      
-      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
-        
-          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
-        
-      </nav>
-
-
-      
-      <div class="wy-nav-content">
-        <div class="rst-content">
-          
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
-  <ul class="wy-breadcrumbs">
-    
-      <li><a href="index.html">Docs</a> &raquo;</li>
-        
-      <li>&lt;no title&gt;</li>
-    
-    
-      <li class="wy-breadcrumbs-aside">
-        
-            
-            <a href="_sources/installation.rst.txt" rel="nofollow"> View page source</a>
-          
-        
-      </li>
-    
-  </ul>
-
-  
-  <hr/>
-</div>
-          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
-           <div itemprop="articleBody">
-            
-  
-
-           </div>
-           <div class="articleComments">
-            
-           </div>
-          </div>
-          <footer>
-  
-
-  <hr/>
-
-  <div role="contentinfo">
-    <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
-
-    </p>
-  </div>
-  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
-
-</footer>
-
-        </div>
-      </div>
-
-    </section>
-
-  </div>
-  
-
-
-  
-
-    <script type="text/javascript">
-        var DOCUMENTATION_OPTIONS = {
-            URL_ROOT:'./',
-            VERSION:'4',
-            COLLAPSE_INDEX:false,
-            FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true,
-            SOURCELINK_SUFFIX: '.txt'
-        };
-    </script>
-      <script type="text/javascript" src="_static/jquery.js"></script>
-      <script type="text/javascript" src="_static/underscore.js"></script>
-      <script type="text/javascript" src="_static/doctools.js"></script>
-      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
-  
-
-  
-  
-    <script type="text/javascript" src="_static/js/theme.js"></script>
-  
-
-  
-  
-  <script type="text/javascript">
-      jQuery(function () {
-          SphinxRtdTheme.StickyNav.enable();
-      });
-  </script>
-   
-
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
deleted file mode 100644
index bcf75841406bd471eb2d939d7016def94fd090f5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 356
zcmV-q0h|6KAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkGQb|Dy
zBOq2~a&u{KZaN?`3L_v?Xk{RBWo=<;Ze(S0Aa7<MbZBXFAZBT7WguyDAY*TBaB^jH
zb7f>8b#rNMXCQiPX<{x4c-n=Lze)r#5XSpFMMT>ZY!49*vA9AIudt5Eun9~uOEL?$
zov-2R`6R9;aT8atOMWxoH~%yRhQLWCHhV)_?rx+m?Ao$Nc^a(?XSu{Czfi@F!cU6O
ztsd1Y;Kt$d>R*p>j&88rH&I~Mg__t>{4HtfwxYFgl?@PFFmUcwmF7yvucsK0Qc`hl
zTdFMQ-3F5E7~xK=o+Y!fdjZtsK{Cn1^YQR-|MB*o`b}Ic28k77-b?4R@=aAw=8s{<
zc~=8j@knMuC}a8WPj~Hta<Ym}fffl=)V4RytXw0<pVR<?C#FS(t!HJMo<9Mb)Zr_o
CG@ye3

diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
deleted file mode 100644
index aa9f47f..0000000
--- a/docs/_build/html/searchindex.js
+++ /dev/null
@@ -1 +0,0 @@
-Search.setIndex({docnames:["contents","copyright","glossary","index","installation","modules","tutorial"],envversion:52,filenames:["contents.rst","copyright.rst","glossary.rst","index.rst","installation.rst","modules.rst","tutorial.rst"],objects:{},objnames:{},objtypes:{},terms:{all:1,ambigu:1,ani:1,aria:1,ariaec:0,assign:1,author:0,autom:1,bardiaux:1,benjamin:1,copyright:1,date:1,distribut:1,explicit:1,express:1,fit:1,glossari:0,habeck:1,holder:1,impli:1,includ:1,index:[0,3],infring:1,iter:1,kind:1,limit:1,malliavin:1,merchant:1,michael:1,modifi:1,modul:[0,1,3],nilg:1,noe:1,non:1,packag:1,page:[0,3],particular:1,permiss:1,prohibit:1,provid:1,purpos:1,reserv:1,restraint:1,revis:1,riep:1,right:1,search:[0,3],softwar:1,substant:1,theres:1,thi:1,version:1,warranti:1,without:1,wolfgang:1},titles:["Sphinx documentation contents","Sphinx authors","&lt;no title&gt;","Welcome to ARIAEC\u2019s documentation!","&lt;no title&gt;","ariaec","&lt;no title&gt;"],titleterms:{ariaec:[3,5],author:1,content:0,document:[0,3],indic:[0,3],sphinx:[0,1],tabl:[0,3],welcom:3}})
\ No newline at end of file
diff --git a/docs/_build/html/tutorial.html b/docs/_build/html/tutorial.html
deleted file mode 100644
index ab145b6..0000000
--- a/docs/_build/html/tutorial.html
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
-<!DOCTYPE html>
-<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
-<head>
-  <meta charset="utf-8">
-  
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  
-  <title>&lt;no title&gt; &mdash; ARIA 4 documentation</title>
-  
-
-  
-  
-  
-  
-
-  
-
-  
-  
-    
-
-  
-
-  
-  
-    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
-  
-
-  
-
-  
-        <link rel="index" title="Index"
-              href="genindex.html"/>
-        <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
-
-  
-  <script src="_static/js/modernizr.min.js"></script>
-
-</head>
-
-<body class="wy-body-for-nav" role="document">
-
-   
-  <div class="wy-grid-for-nav">
-
-    
-    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
-      <div class="wy-side-scroll">
-        <div class="wy-side-nav-search">
-          
-
-          
-            <a href="index.html" class="icon icon-home"> ARIA
-          
-
-          
-          </a>
-
-          
-            
-            
-              <div class="version">
-                2
-              </div>
-            
-          
-
-          
-<div role="search">
-  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
-    <input type="text" name="q" placeholder="Search docs" />
-    <input type="hidden" name="check_keywords" value="yes" />
-    <input type="hidden" name="area" value="default" />
-  </form>
-</div>
-
-          
-        </div>
-
-        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
-          
-            
-            
-              
-            
-            
-              <!-- Local TOC -->
-              <div class="local-toc"><ul class="simple">
-</ul>
-</div>
-            
-          
-        </div>
-      </div>
-    </nav>
-
-    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
-
-      
-      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
-        
-          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
-        
-      </nav>
-
-
-      
-      <div class="wy-nav-content">
-        <div class="rst-content">
-          
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<div role="navigation" aria-label="breadcrumbs navigation">
-
-  <ul class="wy-breadcrumbs">
-    
-      <li><a href="index.html">Docs</a> &raquo;</li>
-        
-      <li>&lt;no title&gt;</li>
-    
-    
-      <li class="wy-breadcrumbs-aside">
-        
-            
-            <a href="_sources/tutorial.rst.txt" rel="nofollow"> View page source</a>
-          
-        
-      </li>
-    
-  </ul>
-
-  
-  <hr/>
-</div>
-          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
-           <div itemprop="articleBody">
-            
-  
-
-           </div>
-           <div class="articleComments">
-            
-           </div>
-          </div>
-          <footer>
-  
-
-  <hr/>
-
-  <div role="contentinfo">
-    <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
-
-    </p>
-  </div>
-  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
-
-</footer>
-
-        </div>
-      </div>
-
-    </section>
-
-  </div>
-  
-
-
-  
-
-    <script type="text/javascript">
-        var DOCUMENTATION_OPTIONS = {
-            URL_ROOT:'./',
-            VERSION:'4',
-            COLLAPSE_INDEX:false,
-            FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true,
-            SOURCELINK_SUFFIX: '.txt'
-        };
-    </script>
-      <script type="text/javascript" src="_static/jquery.js"></script>
-      <script type="text/javascript" src="_static/underscore.js"></script>
-      <script type="text/javascript" src="_static/doctools.js"></script>
-      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
-  
-
-  
-  
-    <script type="text/javascript" src="_static/js/theme.js"></script>
-  
-
-  
-  
-  <script type="text/javascript">
-      jQuery(function () {
-          SphinxRtdTheme.StickyNav.enable();
-      });
-  </script>
-   
-
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/api/conbox.rst b/docs/api/conbox.rst
new file mode 100644
index 0000000..8ba7229
--- /dev/null
+++ b/docs/api/conbox.rst
@@ -0,0 +1,122 @@
+Conbox
+======
+
+.. automodule:: aria.conbox
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Analysis
+--------
+
+.. automodule:: aria.conbox.analysis
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+
+Commands
+--------
+
+.. automodule:: aria.conbox.commands
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Common
+------
+
+.. automodule:: aria.conbox.common
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Converter
+---------
+
+.. automodule:: aria.conbox.converter
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Maplot
+------
+
+.. automodule:: aria.conbox.maplot
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+NDConv
+------
+
+.. automodule:: aria.conbox.ndconv
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+PDBDist
+-------
+
+.. automodule:: aria.conbox.pdbdist
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+PDBQual
+-------
+
+.. automodule:: aria.conbox.pdbqual
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+PDBStat
+-------
+
+.. automodule:: aria.conbox.pdbqual
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Protein
+--------
+
+.. automodule:: aria.conbox.protein
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+ProtMap
+-------
+
+.. automodule:: aria.conbox.protmap
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Reader
+------
+
+.. automodule:: aria.conbox.reader
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Settings
+---------
+
+.. automodule:: aria.conbox.settings
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Setup
+------
+
+.. automodule:: aria.conbox.setup
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
diff --git a/docs/api/core.rst b/docs/api/core.rst
new file mode 100644
index 0000000..14ae33f
--- /dev/null
+++ b/docs/api/core.rst
@@ -0,0 +1,7 @@
+Core
+====
+
+.. automodule:: aria.core
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/changelog.rst b/docs/changelog.rst
new file mode 100644
index 0000000..4ccd509
--- /dev/null
+++ b/docs/changelog.rst
@@ -0,0 +1,4 @@
+Changelog
+=========
+
+.. include:: ../CHANGELOG
diff --git a/docs/conf.py b/docs/conf.py
index 9524ade..ad64ddb 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -19,7 +19,10 @@
 # import os
 # import sys
 # sys.path.insert(0, os.path.abspath('.'))
+import time
 import sphinx_rtd_theme
+import sphinx_bootstrap_theme
+from setup import get_version
 
 # -- General configuration ------------------------------------------------
 
@@ -38,7 +41,7 @@ extensions = [
     'sphinx.ext.mathjax',
     'sphinx.ext.viewcode',
     'sphinx.ext.napoleon',
-    'sphinx.ext.nbsphinx'
+    # 'sphinx.ext.nbsphinx'
 ]
 
 # Add any paths that contain templates here, relative to this directory.
@@ -51,11 +54,10 @@ templates_path = ['_templates']
 source_suffix = '.rst'
 
 # The master toctree document.
-master_doc = 'index'
+master_doc = 'introduction'
 
 # General information about the project.
 project = u'ARIAEC'
-import time
 author = u'Benjamin Bardiaux, Michael Habeck, Therese Malliavin, ' \
          u'Wolfgang Rieping, and Michael Nilges'
 copyright = u'{}, {}'.format(
@@ -66,10 +68,9 @@ copyright = u'{}, {}'.format(
 # built documents.
 #
 # The short X.Y version.
-import setup
-version = setup.get_version()
+version = get_version(full=False)
 # The full version, including alpha/beta/rc tags.
-release = setup.get_version()
+release = get_version(full=True)
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -96,20 +97,35 @@ todo_include_todos = False
 # a list of builtin themes.
 #
 html_theme = "sphinx_rtd_theme"
+# html_theme = "bootstrap"
 
 html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
+# html_theme_path = sphinx_bootstrap_theme.get_html_theme_path()
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
 #
-# html_theme_options = {}
+html_theme_options = {
+    'logo_only': True
+}
+
+html_logo = "_static/logo.jpg"
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
 html_static_path = ['_static']
 
+
+html_context = {
+    'css_files': [
+        '_static/theme_overrides.css',  # override wide tables in RTD theme
+        ],
+     }
+
+html_favicon = "_static/favicon.ico"
+
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
 #
diff --git a/docs/configuration.rst b/docs/configuration.rst
new file mode 100644
index 0000000..9608258
--- /dev/null
+++ b/docs/configuration.rst
@@ -0,0 +1,85 @@
+Configuration
+=============
+
+The following tables list the available parameters with the corresponding
+sections. In order to change default parameters, the tool can accept a
+configuration file with the ``-c`` option in the :doc:`usage`. This
+configuration file should follow the `INI <https://en.wikipedia.org/wiki/INI_file>`_ format.
+
+**Example:**
+
+.. code-block:: guess
+
+    [section]
+    ; comment
+    parameter: value
+
+
+main
+----
+
+.. rst-class:: table-hover
+
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| Name                     | Type | Default              | Description                                                                                                                                                     |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ss_dist_file             | path | `ss_dist.txt`_       | Distances between stable secondary structures. Those distances are  used to make supplementary distance restraints related to secondary structure predictions.  |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| scsc_min_file            | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| interlowerbounds_pdbstat | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| intertarget_pdbstat      | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| interupperbounds_pdbstat | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| intralowerbounds_pdbstat | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| intratarget_pdbstat      | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| intraupperbounds_pdbstat | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ariaproject_template     | str  | `2.3.6`_             |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| procheck_executable      | path |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| prosa_executable         |      |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| whatif_executable        |      |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| clashlist_executable     |      |                      |                                                                                                                                                                 |
++--------------------------+------+----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
+ss_dist.txt
++++++++++++
+.. _ss_dist.txt:
+
+.. literalinclude:: ../aria/conbox/data/ss_dist.txt
+
+A
++++++++++++
+
+contactdef
+----------
+
+setup
+-----
+
+maplot
+------
+
+bbconv
+------
+
+pdbqual
+-------
+
+pdbdist
+-------
+
+pdbstat
+-------
+
+analysis
+--------
diff --git a/docs/contents.rst b/docs/contents.rst
new file mode 100644
index 0000000..706adb8
--- /dev/null
+++ b/docs/contents.rst
@@ -0,0 +1,21 @@
+.. toctree::
+   :maxdepth: 2
+   :caption: Documentation
+
+   changelog
+   installation
+   usage
+   configuration
+
+.. toctree::
+   :maxdepth: 2
+   :caption: API
+
+   api/core
+   api/conbox
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Examples
+
+   examples/index
diff --git a/docs/copyright.rst b/docs/copyright.rst
deleted file mode 100644
index 6a3311c..0000000
--- a/docs/copyright.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-:tocdepth: 2
-
-.. _copyright:
-
-Sphinx authors
-==============
-
-.. include:: ../COPYRIGHT
-
diff --git a/docs/examples/index.rst b/docs/examples/index.rst
index e69de29..d975cbf 100644
--- a/docs/examples/index.rst
+++ b/docs/examples/index.rst
@@ -0,0 +1,4 @@
+.. _examples:
+
+Examples
+========
diff --git a/docs/glossary.rst b/docs/glossary.rst
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/installation.rst b/docs/installation.rst
index e69de29..9eb2c73 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -0,0 +1,18 @@
+Installation
+============
+
+.. note::
+
+    Installation procedure may change in the future
+
+Dependencies
+------------
+
+
+Basic installation
+------------------
+
+
+Singularity
+-----------
+
diff --git a/docs/index.rst b/docs/introduction.rst
similarity index 68%
rename from docs/index.rst
rename to docs/introduction.rst
index 746aac6..fe448a9 100644
--- a/docs/index.rst
+++ b/docs/introduction.rst
@@ -6,16 +6,11 @@
 
 .. include:: ../README.rst
 
-.. toctree::
-   :maxdepth: 1
-   :caption: Contents
+License
+-------
+.. include:: ../COPYRIGHT
 
-   introduction
-   changelog
-   installation
-   tutorial
-   examples/index
-   api
+.. include:: contents.rst
 
 
 Indices and tables
@@ -23,4 +18,4 @@ Indices and tables
 
 * :ref:`genindex`
 * :ref:`modindex`
-* :ref:`search`
+* :ref:`search`
\ No newline at end of file
diff --git a/docs/tutorial.rst b/docs/tutorial.rst
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/usage.rst b/docs/usage.rst
new file mode 100644
index 0000000..ed54d26
--- /dev/null
+++ b/docs/usage.rst
@@ -0,0 +1,156 @@
+Command Line Interface
+======================
+
+The command line interface is accessible by calling ``ariaec`` (or ``ec2aria``
+for older versions) within the terminal at the end of the installation process.
+
+.. code-block:: bash
+
+    $ ariaec [-h] -o OUTPUT_DIRECTORY [-c CONF_FILE] [--nolog] [-d] COMMAND
+
+
+**Commands**
+
+.. rst-class:: table-hover
+
+
++-------------------------+-----------------------------------------------------+
+|  Name                   | Short description                                   |
++-------------------------+-----------------------------------------------------+
+| `setup <Setup_>`_       | Setup ARIA project with EC data                     |
++-------------------------+-----------------------------------------------------+
+| `bbconv <BBconv_>`_     | Translate BBcontacts as distance restraints         |
++-------------------------+-----------------------------------------------------+
+| `maplot <Maplot_>`_     | Contact map visualisation tool                      |
++-------------------------+-----------------------------------------------------+
+| `pdbqual <PDBQual_>`_   | Call PDB quality tools                              |
++-------------------------+-----------------------------------------------------+
+| `analysis <Analysis_>`_ | Analyze results from an ARIA project                |
++-------------------------+-----------------------------------------------------+
+| `tbl2xml <TBL2XML_>`_   | Convert TBL restraints in ARIA XML format           |
++-------------------------+-----------------------------------------------------+
+| `pdbdist <PDBDist_>`_   | Extract distance from a culled list of PDBs         |
++-------------------------+-----------------------------------------------------+
+| `pdbstat <PDBStat_>`_   | Statistical analysis of ``pdbdist`` results         |
++-------------------------+-----------------------------------------------------+
+| `iniconv <Iniconv_>`_   | Convert a INI file as csv for easy readability      |
++-------------------------+-----------------------------------------------------+
+
+
+**Options**
+
+
+.. rst-class:: table-hover
+
+
++--------------------------------------------------------+-----------------------------------------------------+
+|  Name                                                  | Description                                         |
++--------------------------------------------------------+-----------------------------------------------------+
+| ``-h``, ``--help``                                     | show help message and exit                          |
++--------------------------------------------------------+-----------------------------------------------------+
+| ``-o OUTPUT_DIRECTORY``, ``--output OUTPUT_DIRECTORY`` | Output directory (default: None)                    |
++--------------------------------------------------------+-----------------------------------------------------+
+| ``-c CONF_FILE``, ``--conf CONF_FILE``                 | configuration file (default: None)                  |
++--------------------------------------------------------+-----------------------------------------------------+
+| ``--nolog``                                            | Don't generate log files (default: False)           |
++--------------------------------------------------------+-----------------------------------------------------+
+| ``-d``, ``--debug``                                    | Increase output verbosity (default: False)          |
++--------------------------------------------------------+-----------------------------------------------------+
+
+
+Setup
+--------------
+Translate contact maps as distance restraints and setup ARIA infrastructure.
+
+.. code-block:: bash
+
+    $ ariaec setup [-options] seq infile [infile ...] -t intype [intype ...]
+
+
+
+**Arguments**
+
+.. rst-class:: table-hover
+
+
++-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+|  Name                   | Short description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
++-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``seq``                 | Sequence file [``FASTA``]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
++-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``infile``              | Contact or pdb file(s) used to build aria distance restraints                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
++-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``intype``              | Contact Map file format:sup:`*`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
++-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :sup:`*` Accepted contact map formats combining formats supported by ConKit_ with few supplementary formats: ``gremlin``, ``pconsc1``, ``pconsc3``, ``pconsc2``, ``bbcontacts``, ``metapsicov_stg1``, ``membrain``, ``metapsicovhb``, ``comsat``, ``casprr``, ``ccmpred``, ``plm``, ``bclcontact``, ``epcmap``, ``evfold``, ``native``, ``pconsc``, ``psicov``, ``freecontact``, ``genericstructure``, ``ncont``, ``plmc``, ``plmdca``, ``metapsicov_stg2``, ``native_full``, ``metapsicov``, ``evcoupling``, ``contactlist``, ``plmev``, ``mmcif``, ``casp``, ``pdb``, ``flib`` |
++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+.. _ConKit: http://www.conkit.org/en/latest/
+
+
+**Options**
+
+
+.. rst-class:: table-hover
+
+
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+|  Name                                                  | Description                                                                                                                                            |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``-d DISTFILE``, ``--distfile DISTFILE``               | Pdb or distance matrix iif distance_type set to distfile in conf file, use distances in the given file as target distance to build distance restraints |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``-s SSPRED``, ``--ssfile SSPRED``                     | Secondary structure prediction file                                                                                                                    |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``-p ARIAPROJECT``, ``--ariaproject ARIAPROJECT``      | ARIA project file. This project will be updated with data generated during the ``ariaec setup`` call                                                   |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``-r SEQRANGE``, ``--range SEQRANGE``                  | Index range if we don't want tu use the whole sequence and map                                                                                         |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``-n REF``, ``--native REF``                           | Native pdb. Allow TP/FP detection                                                                                                                      |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``--hb HB``                                            | H-bonds contact file (eg: metapsicov.hb)                                                                                                               |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``--ssidx``                                            | Use secondary structure index                                                                                                                          |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``--no-filter``                                        | Do not filter contact map                                                                                                                              |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+| ``--extract-all``                                      | Extract data or all data and parameters if an ARIA project is defined with ``-p`` option                                                               |
++--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+
+Bbconv
+--------------
+Translate BBcontacts as distance restraints which can be used during
+`setup <Setup_>`_.
+
+
+Maplot
+--------------
+Contactmap analysis and visualisation tool.
+
+
+Analysis
+--------------
+Analyze results from an ARIA project.
+
+
+PDBQual
+--------------
+Call PDB quality tools.
+
+
+TBL2XML
+--------------
+Convert TBL restraints in ARIA XML format.
+
+
+PDBDist
+--------------
+Extract distance from a culled list of PDBs.
+
+PDBStat
+--------------
+Statistical analysis of ``pdbdist`` results.
+
+IniConv
+--------------
+Convert a INI file as csv for easy readability.
diff --git a/examples-dev/olds/Makefile b/examples-dev/olds/Makefile
new file mode 100644
index 0000000..5146cab
--- /dev/null
+++ b/examples-dev/olds/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+SPHINXPROJ    = AriaEc
+SOURCEDIR     = .
+BUILDDIR      = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
diff --git a/examples-dev/olds/_build/doctrees/ariaec.doctree b/examples-dev/olds/_build/doctrees/ariaec.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..873ef5ec80ab1638d3d206ad59d8ac749e5f2ed5
GIT binary patch
literal 854286
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
AA^-pY

literal 0
HcmV?d00001

diff --git a/examples-dev/olds/_build/doctrees/ariaec.test.doctree b/examples-dev/olds/_build/doctrees/ariaec.test.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..79196e96c42406483073a8221518dff844321ccc
GIT binary patch
literal 3690
zcmcgvX?xv96?U9>yNQ=LYpLBTp(Qsown}N*;IgG9DXFQT#nXgEh`G|-JF2xE&BzNN
z>HwiO`woScec$(;Ka*d=JCd$ryUp|P0r+4)mNj#h_q^{pM;n8FkotuVBQ>9-flw{;
z7>h)=Xy4iEG+5I9HXBQLEcALN6dfpOsC{j6U|=9lgCY`^pC%f|6%9Mrj^N)s54rH?
zwNTp1xWCMMf<~Nz9acq0=}^O0ns|ZeDjF?mj7?-bSHg>hQaGxp<<h~uF{yQ>MchBr
zqC<#myrc<4mh)AW7P&8Ik`1t77(*~L^)d^>H-1}m7+0rDI?|RnFQ=q=K3dYT{_`Lk
zZtNYu_7u{wJAB<2QKW2{#=`FMDB@vaUrqC6h4h5IB!v=o2mi~~wM-NHVg<llm}nbV
zDtiYY^SRP=f{ke2Gl<ejHlpgl=nmH6TIXS>0CM!IlJ0D?(V)o8IYl!r8}TEq6#kxd
z*=PsA<_5yMT(&<96y5ET#g5dj<_z|8ee6$hHdGrq?b55|2rt-yC`<(1vp5J3O||J>
zi6>u%Q2+qxH7=cL@5K<si$sgsK<sQuuLWYaE%<#v_NY8APso#OsJchzB$AqI%NbYB
zy7Dep-tEfMZXpqdgmVd(^Lsrmi8b)hzO9@4Z(OI>mGl5Yk@v~tj=aaIY)#3tMTZw1
zIW6$33Pavu{J(yee|nHj)-0aeX7PEBsOTX%%uQ%R{m>qkChZF)y}_hy=>Oy%`Y#~m
z>Bd);>m$2-HMwpZe515q(af8W(wj?qi%Dr=S4tPEluTANt`oaeL2oq)UNlbGP$X7F
z1Ym(N7}78r)d2FR-MapZBkX{YG#j~k@oDFZ^Ef?<jBET*i^ulX0?OjOoM*B{ZvzyU
zO1f;Icyu2mU+5G>TClo2j6`7R)C%J)&9&9^h~mr+5uAC%(o$I6G>X#IFzH!h%@>(b
zr?twJmGe-EV4<~?LtTdFRy$77OLE~u*_IChT2O*MyU?<%%kXENzKurbSHfHuJQB%D
zt-`rLtk_Z5X_WfF{KK{iwdhMl*(#G^vSx#Ic9YY5wto7YW%Ob_bpFCQD@>ZyytMNy
zq>C6V%k%1VJ+G}q)SXAxMsa6bS1J@P<$0PfSWeo9!@LZv9gwt4=^lSMU#8@^(Z$=r
zl_&lqoNsQtu){2#{@YmJ+<5VSi}uZpm;MiU(-p|<iINsU;c5(Ag1FGD#<p2b@2KU*
zCj25dGsSDh!jleb1;S5rZYWER!=?>ax@oGDR0~gOo@;vN;yyNF>TH_xyGnYhEr;cK
zIU-LLrlL>Fquh9A2X)R9)lKtQ<n(Tbjc?nj+WS&TjE&;Yx`RJc(p5I4*5ghZdHs`$
zuDSFcc6e75)$RAX^gecU&vCDM^?sLJHs*)A%0kfxT=Gn>V~6_bRx{#*$Zk8r{`^(M
zUFw*yjK&eS@37G@Xfh9w`S{LQ6bYBQY`pKR4xm?(WK&@hgb=p&09sFAi3nYKmW?W*
zH9CW$<sCz)n^&7g(0YbP1r`;GQi@AT+HATHg=hK&0$)~?B8($2o#p|SjZ7qgNc<4v
zGXuyGPkIHm4bR8QL&OF#@^UtYOzW0IY7={j$V{jL#rJVfJ8VK>KxeoVn*~Wx0aH5l
zcX(Z4LwJ*~(<(cZcg-8DHboxM8k><?XKKN=b(&(?3We^@r+LqoI*x2wXJY|3bDPH*
zeaOM>3S6&h<n&>T>LV&P#45ls<wYs_AcFb`P9i<*RY^_966};b(#^$>E)KErChBH=
zc+QdM95y3NQ}U2n8USgpev~{3A{2CkO&KH=u1EwD0T#N>h62$kdh{`eO^LW8Ou^R?
zgcL&4$G6yQTIj6Mx3l>Pj3L11Yr27uQ1hgSy*0yp`Xp*K85D8mZF5c0^8gn^B}}?$
zb8HjGCRTZ#n1EqR@R+t7cFYv2i$P$3_OK@+UM=WTY!ol%?!EuPfIiI*i?t9E2Hgvw
zXQm^42G|T^?svl;eYPnsn79&RCZsui4wn5W<;$LkG1fdDU^A)~u+ML@S!5D#EASRg
zylN+;FKn^>m^$=Dr^zc*q6m;j9MP8yd}~<>VqirSdBP(_Uxv;MCfJdyZK=ulD_iVf
z-F7^~YWga|G_=}5%df%39^mQgY^c!PxeN3S)@rUB4!(ffVY0JC^i4Kaot#qu;ahCd
z3qr*^fU?2mMTd<+*%=&$YxEKt)~qkF2>1xRh7n1aPT_%^%SA@t-hzyH$6E~pE$KUp
zqikX~)9AZwh%H@4aNlDi{hs=Ld4f$s{~D9m$P2rxrXOswv7Sf-8ZFB4Lj+$@<Q8Z@
z0{JUZc(p3%$D8bsA;Y%ne!{H2>Q+}*G0V+@Ua8J(0ywH{`l)HCiRNpb40|%dkEWkt
zMM{$%{hZD025gT`ej#tL3DfJmTOj?C4Tb^z3el$c<iN(<)biI`?9N(=A`(^q07zPT
z{k8r#;Clmm#b!mnb=mQX*I}YWUVS!+#8fAs-)*vk`0|0)>gV5^rdz?Y-8%o^6diVK
zZ}YFG(;pWH>d%HhmGtK}=F+r0C65;1;LdNfdglD4q`%6Om<?D_{#LChueekeY^>jf
W75&|%f3RUg8ce@`mh`WpGyiWYtwgy1

literal 0
HcmV?d00001

diff --git a/examples-dev/olds/_build/doctrees/environment.pickle b/examples-dev/olds/_build/doctrees/environment.pickle
new file mode 100644
index 0000000000000000000000000000000000000000..61fbb12e5da8e22a339e9dd4d80b005f6b5551e9
GIT binary patch
literal 365681
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

literal 0
HcmV?d00001

diff --git a/docs/_build/doctrees/index.doctree b/examples-dev/olds/_build/doctrees/index.doctree
similarity index 78%
rename from docs/_build/doctrees/index.doctree
rename to examples-dev/olds/_build/doctrees/index.doctree
index 35d9479b9c171bcec89bfaa738a62daf4279a8c4..7418f750a0ccf7476bd3785a4573aa1e8c31c6e1 100644
GIT binary patch
delta 386
zcmeCzTBS9?Ttu0HfuTG#CpkYiRiPwbA+abkQFo%(DnTWvpl(UNE?96f3u6&0P}Vhh
zay6rkuv<~4f@49Ef{~$up_!GDxs{30<Wr2j4&FfX^pg@RlT&kYiuE&q#_Fdf=Hw)1
z=IMv$7iAY0Bqpcohh(G{r|KsG#R@7*GV=5E9f1a?ChKPAl}zqsI!e%*vdJ<mi@{D0
zM>rj1hVJA`EPf)YKsTUEY&K^7$Y)ff#K^!9DwdX+lNz6ySDac@l9`_upPHALl#`lL
zqzsho2<0wHEQbrJOb!$gWmKJ<E+Qwa29)+@2xZPpDK1h6vTKVpCQlGi64nH>wSZ)X
oOom2=Ty2r|<f9^53OYcM*dkpZ8Om0ang-IQ2Ue;NBukU@07=SoCjbBd

delta 375
zcmZ3b)vq<dTv&;LfuTG#CpkYiRiPwbA+abkaiaGs0Y#{oZb`l_NNh42V-ahRr=zR$
z<XT1>Vc+~b1^?s{1tVhxLo+Kw11m#|$!8dQ%^ZQI=_i}(X8?`UPfN_nNzBaC4=Bpd
zN=+^))(07snyjA$6f3AK$;i*scLa+}p2>8Spy6ecHCPsdog0pDt|QP%lkc<m39A4t
zMibxc$oi4bIaDkyGbc4ZGp{(cs3bE#FFrLdF)1fCrAUd9fuSRmyC|_7E~E?;@@5R>
zO)1SSh%ZhpDap)BFD_D<TqPpMtqPK3$WW>+Qk%S5L`hg3$geHZ0FoIp85$XKwMCkf
iABbovXaPlHi?o4cC|gl#T4qXdkq%g?E|4ru(gOfMT5wwc

diff --git a/docs/_build/doctrees/modules.doctree b/examples-dev/olds/_build/doctrees/modules.doctree
similarity index 92%
rename from docs/_build/doctrees/modules.doctree
rename to examples-dev/olds/_build/doctrees/modules.doctree
index d0ad5fd7c140f844f56a5fa75dac6569a2f7b02a..ec92b93586bb0a0c21ccfea1e77eff648e441d22 100644
GIT binary patch
delta 130
zcmdlaeNcMBO9x*D1_u44#LDE<oSb6)jQreG{j|iKoW#sL{qX#v?BasN<W&8TjMU;(
z{Uo4RL1jrsexAN#QD$OlvTkNx$!2**9UiVw=FF7h!c(<{rzZ#SO7WhlEj*hcnxT{-
gUR!u>ayhTM$obg93!!X9sc9f}7i$YIl_u!{05*v+RsaA1

delta 123
zcmX>oy-9k)OEYH%1_u3PbN!6`+*JLv#GIVO%sl;oqWrAX<dS0j#G=f^)MWi6pjbg=
zNk)F2z9U#<vnHbs4{L@@ZQ-fO@w`%kr)vw(WQb-cWr)`np4G^ZjGbJ_DmHlmFR#eC
Y*uwLnY(=SQnJLAE7itSHmL}-|0FW##5dZ)H

diff --git a/docs/_build/html/.buildinfo b/examples-dev/olds/_build/html/.buildinfo
similarity index 82%
rename from docs/_build/html/.buildinfo
rename to examples-dev/olds/_build/html/.buildinfo
index a74d88e..eaba7c8 100644
--- a/docs/_build/html/.buildinfo
+++ b/examples-dev/olds/_build/html/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 4da5904f1f9b1887d948b51687bdfaa0
+config: cbf8f1a8c4c0d68994ae9bd4f214590d
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/analysis.html b/examples-dev/olds/_build/html/_modules/ariaec/analysis.html
new file mode 100644
index 0000000..23be177
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/analysis.html
@@ -0,0 +1,729 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.analysis &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.analysis</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.analysis</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Created on 4/7/17</span>
+
+<span class="sd">@author: fallain</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
+<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">from</span> <span class="nn">glob</span> <span class="k">import</span> <span class="n">glob</span>
+<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">OrderedDict</span>
+<span class="kn">from</span> <span class="nn">Bio.PDB</span> <span class="k">import</span> <span class="n">PDBParser</span><span class="p">,</span> <span class="n">PDBIO</span>
+<span class="kn">from</span> <span class="nn">sklearn.decomposition</span> <span class="k">import</span> <span class="n">PCA</span>
+<span class="kn">from</span> <span class="nn">aria.AriaXML</span> <span class="k">import</span> <span class="n">AriaXMLPickler</span>
+<span class="kn">from</span> <span class="nn">matplotlib.lines</span> <span class="k">import</span> <span class="n">Line2D</span>
+<span class="kn">from</span> <span class="nn">mpl_toolkits.mplot3d</span> <span class="k">import</span> <span class="n">Axes3D</span>
+<span class="kn">from</span> <span class="nn">aria.SuperImposer</span> <span class="k">import</span> <span class="n">SuperImposer</span>
+<span class="kn">from</span> <span class="nn">.converter</span> <span class="k">import</span> <span class="n">AriaEcXMLConverter</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">NotDisordered</span><span class="p">,</span> <span class="n">Capturing</span>
+<span class="kn">from</span> <span class="nn">matplotlib.colors</span> <span class="k">import</span> <span class="n">ListedColormap</span>
+<span class="kn">from</span> <span class="nn">aria.DataContainer</span> <span class="k">import</span> <span class="n">DATA_SEQUENCE</span>
+<span class="kn">from</span> <span class="nn">aria.StructureEnsemble</span> <span class="k">import</span> <span class="n">StructureEnsemble</span><span class="p">,</span> <span class="n">StructureEnsembleSettings</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="colscatter"><a class="viewcode-back" href="../../ariaec.html#ariaec.analysis.colscatter">[docs]</a><span class="k">def</span> <span class="nf">colscatter</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">axe</span><span class="p">,</span> <span class="n">colors</span><span class="p">,</span> <span class="n">ndim</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">axtitle</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">xlabel</span><span class="o">=</span><span class="s2">&quot;x&quot;</span><span class="p">,</span>
+               <span class="n">ylabel</span><span class="o">=</span><span class="s2">&quot;y&quot;</span><span class="p">,</span> <span class="n">zlabel</span><span class="o">=</span><span class="s2">&quot;z&quot;</span><span class="p">,</span> <span class="n">legend_prefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">others</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Scatter plot with palette colors</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    X :</span>
+
+<span class="sd">    axe :</span>
+
+<span class="sd">    colors :</span>
+
+<span class="sd">    ndim :</span>
+<span class="sd">         (Default value = 2)</span>
+<span class="sd">    axtitle :</span>
+<span class="sd">         (Default value = &quot;&quot;)</span>
+<span class="sd">    xlabel :</span>
+<span class="sd">         (Default value = &quot;x&quot;)</span>
+<span class="sd">    ylabel :</span>
+<span class="sd">         (Default value = &quot;y&quot;)</span>
+<span class="sd">    zlabel :</span>
+<span class="sd">         (Default value = &quot;z&quot;)</span>
+<span class="sd">    legend_prefix :</span>
+<span class="sd">         (Default value = &quot;&quot;)</span>
+<span class="sd">    others :</span>
+<span class="sd">         (Default value = False)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">palette</span> <span class="o">=</span> <span class="n">sns</span><span class="o">.</span><span class="n">color_palette</span><span class="p">(</span><span class="s2">&quot;hls&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">colors</span><span class="p">)))</span>
+    <span class="n">dims</span> <span class="o">=</span> <span class="p">[</span><span class="n">X</span><span class="p">[:,</span> <span class="n">i</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">ndim</span><span class="p">)]</span>
+    <span class="n">axe</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="o">*</span><span class="n">dims</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">colors</span><span class="p">,</span>
+                <span class="n">cmap</span><span class="o">=</span><span class="n">ListedColormap</span><span class="p">(</span><span class="n">palette</span><span class="p">))</span>
+    <span class="n">axe</span><span class="o">.</span><span class="n">invert_xaxis</span><span class="p">()</span>
+
+    <span class="k">if</span> <span class="n">others</span><span class="p">:</span>
+        <span class="n">axe</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="n">Line2D</span><span class="p">([</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;none&quot;</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">palette</span><span class="p">[</span><span class="n">colidx</span><span class="p">],</span>
+                           <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;o&quot;</span><span class="p">)</span>
+                    <span class="k">for</span> <span class="n">colidx</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">colors</span><span class="p">)],</span>
+                   <span class="p">[</span><span class="n">legend_prefix</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">colidx</span><span class="p">)</span> <span class="k">if</span> <span class="n">colidx</span> <span class="o">!=</span> <span class="nb">max</span><span class="p">(</span>
+                       <span class="n">colors</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;Others&quot;</span> <span class="k">for</span> <span class="n">colidx</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">colors</span><span class="p">)],</span>
+                   <span class="n">numpoints</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">axe</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="n">Line2D</span><span class="p">([</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">linestyle</span><span class="o">=</span><span class="s2">&quot;none&quot;</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">palette</span><span class="p">[</span><span class="n">colidx</span><span class="p">],</span>
+                           <span class="n">marker</span><span class="o">=</span><span class="s2">&quot;o&quot;</span><span class="p">)</span>
+                    <span class="k">for</span> <span class="n">colidx</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">colors</span><span class="p">)],</span>
+                   <span class="p">[</span><span class="n">legend_prefix</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">colidx</span><span class="p">)</span> <span class="k">for</span> <span class="n">colidx</span> <span class="ow">in</span>
+                    <span class="nb">set</span><span class="p">(</span><span class="n">colors</span><span class="p">)],</span> <span class="n">numpoints</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+
+    <span class="n">axe</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">axtitle</span><span class="p">)</span>
+    <span class="n">axe</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="n">xlabel</span><span class="p">)</span>
+    <span class="n">axe</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="n">ylabel</span><span class="p">)</span>
+    <span class="k">if</span> <span class="n">ndim</span> <span class="o">==</span> <span class="mi">3</span><span class="p">:</span>
+        <span class="n">axe</span><span class="o">.</span><span class="n">set_zlabel</span><span class="p">(</span><span class="n">zlabel</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="EnsembleAnalysis"><a class="viewcode-back" href="../../ariaec.html#ariaec.analysis.EnsembleAnalysis">[docs]</a><span class="k">class</span> <span class="nc">EnsembleAnalysis</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;ARIA extended ensemble analysis&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_get_ensemble_paths</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get list of pdb files related to aria ensemble(s)</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        iteration_path : str</span>
+<span class="sd">            ARIA iteration path where all pdb files are saved            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Get the list of all the generated structures in iteration path if no</span>
+        <span class="c1"># clustering. Otherwise, get the list of all generated structures</span>
+        <span class="n">list_of_pdb</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">,</span> <span class="s2">&quot;report.clustering&quot;</span><span class="p">)):</span>
+            <span class="c1"># Get the list of pdb for each cluster</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Clusters found in this iteration, compute analysis for&quot;</span>
+                     <span class="s2">&quot;each generated cluster ensemble&quot;</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">clustlist</span> <span class="ow">in</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">,</span> <span class="s1">&#39;*clust*.list&#39;</span><span class="p">)):</span>
+                <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">clustlist</span><span class="p">)</span> <span class="k">as</span> <span class="n">cluster</span><span class="p">:</span>
+                    <span class="n">list_of_pdb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cluster</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">splitlines</span><span class="p">())</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># no clustering, pdb list correspond to all generated structures</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;No cluster found in this iteration, compute analysis for&quot;</span>
+                     <span class="s2">&quot; iteration ensemble&quot;</span><span class="p">)</span>
+            <span class="n">list_of_pdb</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+                <span class="p">[</span><span class="n">foo</span> <span class="k">for</span> <span class="n">foo</span> <span class="ow">in</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">,</span> <span class="s2">&quot;*.pdb&quot;</span><span class="p">))</span>
+                 <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">foo</span><span class="p">)</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;fitted_&#39;</span><span class="p">)])</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Lists of structures:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+            <span class="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">_</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">list_of_pdb</span><span class="p">]))</span>
+        <span class="k">return</span> <span class="n">list_of_pdb</span>
+
+<div class="viewcode-block" id="EnsembleAnalysis.violation_analysis"><a class="viewcode-back" href="../../ariaec.html#ariaec.analysis.EnsembleAnalysis.violation_analysis">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">violation_analysis</span><span class="p">(</span><span class="n">project</span><span class="p">,</span> <span class="n">iteration_id</span><span class="p">,</span> <span class="n">restraints</span><span class="p">,</span> <span class="n">ensemble</span><span class="p">,</span> <span class="n">out_file</span><span class="p">,</span>
+                           <span class="n">dists_ref</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">headerflag</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">clusteridx</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        clusteridx</span>
+<span class="sd">        project : aria.Project.Project object</span>
+<span class="sd">        iteration_id : </span>
+<span class="sd">        restraints :</span>
+<span class="sd">            </span>
+<span class="sd">        ensemble :</span>
+<span class="sd">            </span>
+<span class="sd">        out_file :</span>
+<span class="sd">            </span>
+<span class="sd">        dists_ref : </span>
+<span class="sd">            Reference distances (Default value = None)</span>
+<span class="sd">        headerflag :</span>
+<span class="sd">            (Default value = True)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">protein_id</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getSettings</span><span class="p">()[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span>
+        <span class="n">nbest</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getProtocol</span><span class="p">()</span><span class="o">.</span><span class="n">getIterationSettings</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)[</span>
+            <span class="s2">&quot;number_of_best_structures&quot;</span><span class="p">]</span>
+        <span class="n">cutoff</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getProtocol</span><span class="p">()</span><span class="o">.</span><span class="n">getIterationSettings</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)[</span>
+            <span class="s2">&quot;violation_analyser_settings&quot;</span><span class="p">][</span><span class="s2">&quot;violation_tolerance&quot;</span><span class="p">]</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">out_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="n">headerflag</span> <span class="k">else</span> <span class="nb">open</span><span class="p">(</span><span class="n">out_file</span><span class="p">,</span> <span class="s1">&#39;a&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">out</span><span class="p">:</span>
+
+            <span class="k">for</span> <span class="n">restraintlist</span> <span class="ow">in</span> <span class="n">restraints</span><span class="p">:</span>
+
+                <span class="k">for</span> <span class="n">rest</span> <span class="ow">in</span> <span class="n">restraintlist</span><span class="p">:</span>
+
+                    <span class="n">output</span> <span class="o">=</span> <span class="p">[]</span>
+                    <span class="n">dd</span> <span class="o">=</span> <span class="p">[]</span>
+                    <span class="n">ddref</span> <span class="o">=</span> <span class="p">[]</span>
+
+                    <span class="k">for</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="n">rest</span><span class="o">.</span><span class="n">getContributions</span><span class="p">():</span>
+
+                        <span class="n">dist</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">try</span><span class="p">:</span>
+                            <span class="n">dist</span> <span class="o">=</span> <span class="p">[</span><span class="n">ensemble</span><span class="o">.</span><span class="n">getDistances</span><span class="p">(</span><span class="o">*</span><span class="n">sp</span><span class="o">.</span><span class="n">getAtoms</span><span class="p">())</span>
+                                    <span class="k">for</span> <span class="n">sp</span> <span class="ow">in</span> <span class="n">contrib</span><span class="p">]</span>
+                            <span class="c1"># Liste des distances pour la contribution c pour</span>
+                            <span class="c1"># chaque structure de l&#39;ensemble (une ou plusieur</span>
+                            <span class="c1"># distance(s) par structure de l&#39;ensemble si contribution</span>
+                            <span class="c1"># ambigue ou non)</span>
+                            <span class="n">dist</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span>
+                                <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">dist</span><span class="p">,</span> <span class="o">-</span> <span class="mf">6.</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mf">1.</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)</span>
+                            <span class="c1"># Liste des distances pour chaque structure de l&#39;ensemble</span>
+                            <span class="c1"># (liste associant une distance par structure de l&#39;ensemble).</span>
+                            <span class="c1"># Si contrib non ambig (associee a une seule paire de spins),</span>
+                            <span class="c1"># cette liste devrait etre identique a la precedente</span>
+                            <span class="n">dd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span>
+
+                        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="ne">Exception</span><span class="p">,</span> <span class="n">msg</span><span class="p">))</span>
+                            <span class="k">pass</span>
+
+                        <span class="n">dref</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">if</span> <span class="n">dists_ref</span><span class="p">:</span>
+                            <span class="k">try</span><span class="p">:</span>
+                                <span class="n">dref</span> <span class="o">=</span> <span class="p">[</span><span class="n">dists_ref</span><span class="p">(</span><span class="o">*</span><span class="n">sp</span><span class="o">.</span><span class="n">getAtoms</span><span class="p">())</span> <span class="k">for</span> <span class="n">sp</span> <span class="ow">in</span> <span class="n">contrib</span><span class="p">]</span>
+                                <span class="n">dref</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">dref</span><span class="p">,</span> <span class="o">-</span><span class="mf">6.</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span>
+                                                <span class="o">-</span><span class="mf">1.</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)</span>
+                                <span class="n">ddref</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dref</span><span class="p">)</span>
+
+                            <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+                                <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="ne">Exception</span><span class="p">,</span> <span class="n">msg</span><span class="p">))</span>
+                                <span class="k">pass</span>
+
+                        <span class="n">tmp</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;protein&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">protein_id</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getReferencePeak</span><span class="p">()</span><span class="o">.</span><span class="n">getSpectrum</span><span class="p">()</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;iteration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">iteration_id</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;clust&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">clusteridx</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;ens_size&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">nbest</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;rest_no&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getId</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;contrib_no&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="o">.</span><span class="n">getId</span><span class="p">()</span>
+                        <span class="c1"># Assuming there is only one spin per contribution</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;resid_1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getResidue</span><span class="p">()</span><span class="o">.</span><span class="n">getNumber</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;resid_2&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getResidue</span><span class="p">()</span><span class="o">.</span><span class="n">getNumber</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;res_1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getResidue</span><span class="p">()</span><span class="o">.</span><span class="n">getName</span><span class="p">()[:</span><span class="mi">3</span><span class="p">]</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;res_2&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getResidue</span><span class="p">()</span><span class="o">.</span><span class="n">getName</span><span class="p">()[:</span><span class="mi">3</span><span class="p">]</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;atm_1&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;atm_2&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;viol_cutoff&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">cutoff</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;d_target&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getDistance</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;lower_bound&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getLowerBound</span><span class="p">()</span> <span class="o">-</span> <span class="n">cutoff</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;upper_bound&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getUpperBound</span><span class="p">()</span> <span class="o">+</span> <span class="n">cutoff</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;rest_weight&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">rest</span><span class="o">.</span><span class="n">getWeight</span><span class="p">()</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;dc_min&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="k">if</span> <span class="n">dist</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;dc_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="k">if</span> <span class="n">dist</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span>  <span class="c1"># Moyenne des distances associes a la contrib c dans l&#39;ensemble</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;dc_med&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="k">if</span> <span class="n">dist</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span>
+                        <span class="n">tmp</span><span class="p">[</span><span class="s1">&#39;dc_ref&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">dref</span><span class="p">)</span> <span class="k">if</span> <span class="n">dref</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span>
+
+                        <span class="n">output</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tmp</span><span class="p">)</span>
+
+                    <span class="c1"># Liste des distances (effective si plusieurs spin par</span>
+                    <span class="c1"># contribution) associe aux contraintes</span>
+                    <span class="n">dd</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">dd</span><span class="p">)</span>
+                    <span class="n">ddref</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">ddref</span><span class="p">)</span>  <span class="c1"># Idem pour natif</span>
+
+                    <span class="n">dd_eff</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">dd</span><span class="p">,</span> <span class="o">-</span><span class="mi">6</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mf">1.</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)</span>
+                    <span class="n">ddref_eff</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">ddref</span><span class="p">,</span> <span class="o">-</span><span class="mi">6</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span> <span class="o">-</span><span class="mf">1.</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)</span>
+
+                    <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="p">)):</span>
+                        <span class="c1"># Moyenne des distances effectives dans l&#39;ensemble de</span>
+                        <span class="c1"># structure. Peut etre biaisee si on a des structures qui</span>
+                        <span class="c1"># ont une distance anormalement elevee. Dans ce cas, on ne</span>
+                        <span class="c1"># peut evaluer si la contrainte a ete correctement supprimee</span>
+                        <span class="c1">#  dans l&#39;ensemble etudie.</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;Deff_min&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">dd_eff</span><span class="p">)</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;Deff_avg&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">dd_eff</span><span class="p">)</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;Deff_med&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">median</span><span class="p">(</span><span class="n">dd_eff</span><span class="p">)</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;Deff_sdev&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">dd_eff</span><span class="p">)</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;Deff_ref&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">ddref_eff</span><span class="p">)</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;pc_viol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span>
+                            <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">greater</span><span class="p">(</span><span class="n">dd_eff</span><span class="p">,</span> <span class="n">rest</span><span class="o">.</span><span class="n">getUpperBound</span><span class="p">()</span> <span class="o">+</span> <span class="n">cutoff</span><span class="p">)))</span> <span class="o">/</span> <span class="n">nbest</span>
+                        <span class="c1"># Normalement d_ref ne contient qu&#39;un seul elt puisqu&#39;il y a</span>
+                        <span class="c1">#  qu&#39;une seule structure ( a verifier )</span>
+                        <span class="c1"># distance effective native</span>
+                        <span class="c1"># Distance effective minimum dans l&#39;ensemble</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;viol&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> \
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;pc_viol&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="mf">0.5</span> <span class="k">else</span> <span class="kc">False</span>
+                        <span class="c1"># Contrainte consideree comme valide si la distance effective</span>
+                        <span class="c1"># dans la structure de reference est en dessous du seuil de</span>
+                        <span class="c1"># violations.</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;valid&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> \
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;upper_bound&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;dc_ref&#39;</span><span class="p">]</span> <span class="o">&gt;=</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;lower_bound&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="kc">False</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;contact_5&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> \
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;dc_ref&#39;</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">5.0</span> <span class="k">else</span> <span class="kc">False</span>
+                        <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;contact_8&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> \
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;dc_ref&#39;</span><span class="p">]</span> <span class="o">&lt;=</span> <span class="mf">8.0</span> <span class="k">else</span> <span class="kc">False</span>
+
+                        <span class="k">if</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;contact_8&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;viol&#39;</span><span class="p">]:</span>
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;group&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;VP viol&#39;</span>
+                        <span class="k">elif</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;contact_8&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;viol&#39;</span><span class="p">]:</span>
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;group&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;VP&#39;</span>
+                        <span class="k">elif</span> <span class="ow">not</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;contact_8&#39;</span><span class="p">]</span> <span class="ow">and</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;viol&#39;</span><span class="p">]:</span>
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;group&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;FP viol&#39;</span>
+                        <span class="k">else</span><span class="p">:</span>
+                            <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="s1">&#39;group&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;FP&#39;</span>
+
+                        <span class="k">if</span> <span class="n">headerflag</span><span class="p">:</span>
+                            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">output</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
+                            <span class="n">headerflag</span> <span class="o">=</span> <span class="kc">False</span>
+
+                        <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">k</span><span class="p">]</span>
+                                                   <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">output</span><span class="p">[</span><span class="n">x</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()]))</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing violation analysis of clust </span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> file&quot;</span><span class="p">,</span> <span class="n">clusteridx</span><span class="p">,</span>
+                 <span class="n">out_file</span><span class="p">)</span></div>
+
+    <span class="c1"># def extract_ariaensemble_matrix(self):</span>
+    <span class="c1">#     &quot;&quot;&quot;</span>
+    <span class="c1">#</span>
+    <span class="c1">#     Returns</span>
+    <span class="c1">#     -------</span>
+    <span class="c1">#</span>
+    <span class="c1">#     &quot;&quot;&quot;</span>
+    <span class="c1">#     pass</span>
+
+    <span class="c1"># TODO: As described in Guillaume paper, clustering on aligned CA</span>
+    <span class="c1"># coordinates highly depends on the efficiency of the alignment method</span>
+<div class="viewcode-block" id="EnsembleAnalysis.pca_projection"><a class="viewcode-back" href="../../ariaec.html#ariaec.analysis.EnsembleAnalysis.pca_projection">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">pca_projection</span><span class="p">(</span>
+            <span class="n">ensemble</span><span class="p">,</span> <span class="n">molecule</span><span class="p">,</span> <span class="n">infos</span><span class="p">,</span> <span class="n">atmask</span><span class="o">=</span><span class="s2">&quot;CA&quot;</span><span class="p">,</span>
+            <span class="n">title</span><span class="o">=</span><span class="s2">&quot;3D PCA projection on backbone coordinates&quot;</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        PCA projection of ensemble coordinates</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        ensemble :</span>
+<span class="sd">        molecule :</span>
+<span class="sd">        infos</span>
+<span class="sd">        atmask :</span>
+<span class="sd">            (Default value = &quot;CA&quot;)</span>
+<span class="sd">        title</span>
+<span class="sd">        outfile</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">sns</span><span class="o">.</span><span class="n">set_style</span><span class="p">(</span><span class="s1">&#39;ticks&#39;</span><span class="p">)</span>
+        <span class="n">pca</span> <span class="o">=</span> <span class="n">PCA</span><span class="p">(</span><span class="n">n_components</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
+        <span class="n">mask</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">getId</span><span class="p">()</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">molecule</span><span class="o">.</span><span class="n">get_chains</span><span class="p">()</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">getResidues</span><span class="p">()</span>
+                <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">getAtoms</span><span class="p">()</span> <span class="k">if</span> <span class="n">a</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span> <span class="o">==</span> <span class="n">atmask</span><span class="p">]</span>
+
+        <span class="c1"># Align all structures on ca backbone</span>
+        <span class="n">si</span> <span class="o">=</span> <span class="n">SuperImposer</span><span class="p">(</span><span class="n">ensemble</span><span class="p">,</span> <span class="n">molecule</span><span class="p">)</span>
+        <span class="n">si</span><span class="o">.</span><span class="n">getSettings</span><span class="p">()[</span><span class="s1">&#39;number_of_best_structures&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;all&#39;</span>
+        <span class="n">si</span><span class="o">.</span><span class="n">_fit</span><span class="p">(</span><span class="n">mask</span><span class="p">)</span>
+
+        <span class="c1"># Get matrix of coordinates</span>
+        <span class="n">fitcoords</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">getFittedCoordinates</span><span class="p">()</span>
+        <span class="n">fitcoords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">take</span><span class="p">(</span><span class="n">fitcoords</span><span class="p">,</span> <span class="n">mask</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+        <span class="n">ns</span><span class="p">,</span> <span class="n">na</span><span class="p">,</span> <span class="n">xyz</span> <span class="o">=</span> <span class="n">fitcoords</span><span class="o">.</span><span class="n">shape</span>
+        <span class="c1"># Change the shape of coords matrix in order to use pca, kmeans, ...</span>
+        <span class="n">fitcoords</span><span class="o">.</span><span class="n">shape</span> <span class="o">=</span> <span class="n">ns</span><span class="p">,</span> <span class="n">na</span> <span class="o">*</span> <span class="n">xyz</span>
+
+        <span class="n">ensemble</span><span class="o">.</span><span class="n">getSettings</span><span class="p">()[</span><span class="s1">&#39;number_of_best_structures&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">15</span>
+
+        <span class="n">fitcoords_reduced</span> <span class="o">=</span> <span class="n">pca</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">fitcoords</span><span class="p">)</span>
+
+        <span class="c1">#</span>
+        <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+
+        <span class="n">ax</span> <span class="o">=</span> <span class="n">Axes3D</span><span class="p">(</span><span class="n">fig</span><span class="p">)</span>
+
+        <span class="n">colscatter</span><span class="p">(</span>
+            <span class="n">fitcoords_reduced</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">infos</span><span class="p">,</span> <span class="n">ndim</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">axtitle</span><span class="o">=</span><span class="n">title</span><span class="p">,</span>
+            <span class="n">xlabel</span><span class="o">=</span><span class="s2">&quot;Principal component 1&quot;</span><span class="p">,</span> <span class="n">ylabel</span><span class="o">=</span><span class="s2">&quot;Principal component 2&quot;</span><span class="p">,</span>
+            <span class="n">zlabel</span><span class="o">=</span><span class="s2">&quot;Principal component 3&quot;</span><span class="p">,</span> <span class="n">legend_prefix</span><span class="o">=</span><span class="s2">&quot;Clust &quot;</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">outfile</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="EnsembleAnalysis.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.analysis.EnsembleAnalysis.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Execute Ensemble analysis&quot;&quot;&quot;</span>
+        <span class="c1"># Args</span>
+        <span class="n">project_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;project&quot;</span><span class="p">]</span>
+        <span class="c1"># restraints_path = self.settings.analysis.args[&quot;restraints&quot;]</span>
+        <span class="n">native_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ref&quot;</span><span class="p">)</span>
+        <span class="n">out_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">]</span>
+        <span class="n">list_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;listname&quot;</span><span class="p">]</span>
+
+        <span class="c1"># Create Aria objects</span>
+        <span class="n">pickler</span> <span class="o">=</span> <span class="n">AriaXMLPickler</span><span class="p">()</span>
+        <span class="n">project</span> <span class="o">=</span> <span class="n">pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">project_path</span><span class="p">)</span>
+        <span class="n">molecule_path</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">DATA_SEQUENCE</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getLocation</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
+        <span class="n">molecule</span> <span class="o">=</span> <span class="n">pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">molecule_path</span><span class="p">)</span>
+
+        <span class="c1"># If we are at the first iteration, we select the related ensemble and</span>
+        <span class="c1"># restraints, otherwise we take the ensemble from the previous iteration</span>
+        <span class="n">iteration_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;iteration&quot;</span><span class="p">]</span>
+        <span class="n">iteration_id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
+            <span class="s1">&#39;[0-9]+&#39;</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">))</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
+        <span class="k">if</span> <span class="n">iteration_id</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="c1"># If we are not at the first iteration, we select analysis</span>
+            <span class="c1"># parameters related to user input iteration and update iteration</span>
+            <span class="c1"># path in order to get ensemble of structures from previous</span>
+            <span class="c1"># iteration</span>
+            <span class="n">iteration_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">),</span> <span class="s2">&quot;it</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">iteration_id</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Ensemble analysis will be done on restraints and &quot;</span>
+                     <span class="s2">&quot;ensemble from it</span><span class="si">%d</span><span class="s2"> with violation criteria of it</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">,</span>
+                     <span class="p">(</span><span class="n">iteration_id</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> <span class="n">iteration_id</span><span class="p">)</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">):</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Can not found previous iteration (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                          <span class="n">iteration_path</span><span class="p">)</span>
+
+        <span class="c1"># Load restraints related to the actual iteration</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading distance restraints file(s)&quot;</span><span class="p">)</span>
+        <span class="c1"># restraints = glob(os.path.join(iteration_path, &#39;*restraints.xml&#39;)) if\</span>
+        <span class="c1">#     not self.settings.analysis.args.get(&#39;restraint&#39;) else \</span>
+        <span class="c1">#     [self.settings.analysis.args.get(&#39;restraint&#39;)]</span>
+        <span class="c1"># if not restraints:</span>
+        <span class="c1">#     # Load tbl restraints and convert them into aria xml format</span>
+        <span class="n">restraints</span> <span class="o">=</span> <span class="n">glob</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">,</span> <span class="s1">&#39;*.tbl&#39;</span><span class="p">))</span>
+        <span class="n">restraints</span> <span class="o">=</span> <span class="n">AriaEcXMLConverter</span><span class="o">.</span><span class="n">tbl2xml</span><span class="p">(</span>
+            <span class="n">iteration_path</span><span class="p">,</span> <span class="n">molecule_path</span><span class="p">,</span> <span class="n">restraints</span><span class="p">,</span> <span class="n">list_name</span><span class="p">)</span>
+        <span class="n">restraints</span> <span class="o">=</span> <span class="p">[</span><span class="n">pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">restraint</span><span class="p">)</span><span class="o">.</span><span class="n">restraint</span>
+                      <span class="k">for</span> <span class="n">restraint</span> <span class="ow">in</span> <span class="n">restraints</span><span class="p">]</span>
+
+        <span class="c1"># Read structure ensembles</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading structure ensemble(s)&quot;</span><span class="p">)</span>
+
+        <span class="c1"># Load ensemble parameters</span>
+        <span class="n">protein_id</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getSettings</span><span class="p">()[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span>
+        <span class="n">nbest</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getProtocol</span><span class="p">()</span><span class="o">.</span><span class="n">getIterationSettings</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)[</span>
+            <span class="s2">&quot;number_of_best_structures&quot;</span><span class="p">]</span>
+        <span class="n">sort_crit</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getProtocol</span><span class="p">()</span><span class="o">.</span><span class="n">getIterationSettings</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)[</span>
+            <span class="s2">&quot;sort_criterion&quot;</span><span class="p">]</span>
+        <span class="n">se_settings</span> <span class="o">=</span> <span class="n">StructureEnsembleSettings</span><span class="p">()</span>
+        <span class="n">se_settings</span><span class="p">[</span><span class="s1">&#39;sort_criterion&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">sort_crit</span>
+        <span class="n">se_settings</span><span class="p">[</span><span class="s1">&#39;number_of_best_structures&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">nbest</span>
+
+        <span class="c1"># Get list of pdb related to structure ensemble(s)</span>
+        <span class="n">ens_paths</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_ensemble_paths</span><span class="p">(</span><span class="n">iteration_path</span><span class="p">)</span>
+
+        <span class="k">with</span> <span class="n">Capturing</span><span class="p">()</span> <span class="k">as</span> <span class="n">output</span><span class="p">:</span>
+            <span class="c1"># We define here as many structure ensemble object as number of</span>
+            <span class="c1"># list in ens_paths (if clustering used)</span>
+            <span class="n">clustensembles</span> <span class="o">=</span> <span class="p">[</span>
+                <span class="n">StructureEnsemble</span><span class="p">(</span><span class="n">se_settings</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">ens_paths</span><span class="p">]</span>
+            <span class="p">[</span><span class="n">ensemble</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">ens_paths</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">molecule</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">&#39;cns&#39;</span><span class="p">)</span>
+             <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">ensemble</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">clustensembles</span><span class="p">)]</span>
+            <span class="p">[</span><span class="n">ensemble</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
+             <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">ensemble</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">clustensembles</span><span class="p">)]</span>
+            <span class="k">if</span> <span class="n">output</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
+
+        <span class="c1"># Get the lowest energy ensemble</span>
+        <span class="c1"># LOG.info(&quot;Sorting structure ensemble(s) with %s criteria&quot;, sort_crit)</span>
+        <span class="c1"># energies = np.array([</span>
+        <span class="c1">#     np.mean([d[&#39;total_energy&#39;] for d in ens.getInfo()[:, 1]][:nbest])</span>
+        <span class="c1">#     if len(ens) &gt;= nbest else None for ens in clustensembles],</span>
+        <span class="c1">#     dtype=np.float)</span>
+
+        <span class="c1"># Get native structure</span>
+        <span class="c1"># Issue with several pdb files which have the same residue_number in</span>
+        <span class="c1">#  atm and hetatm sections ... We remove them with bio pdb</span>
+        <span class="n">dists_ref</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="k">if</span> <span class="n">native_path</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading native structure&quot;</span><span class="p">)</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">captureWarnings</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">native</span> <span class="o">=</span> <span class="n">PDBParser</span><span class="p">()</span><span class="o">.</span><span class="n">get_structure</span><span class="p">(</span><span class="n">protein_id</span><span class="p">,</span> <span class="n">native_path</span><span class="p">)</span>
+            <span class="n">native_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">out_path</span><span class="p">,</span> <span class="n">protein_id</span> <span class="o">+</span> <span class="s2">&quot;_ordered.native.pdb&quot;</span><span class="p">)</span>
+            <span class="n">io</span> <span class="o">=</span> <span class="n">PDBIO</span><span class="p">()</span>
+            <span class="n">io</span><span class="o">.</span><span class="n">set_structure</span><span class="p">(</span><span class="n">native</span><span class="p">)</span>
+            <span class="n">io</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">native_path</span><span class="p">,</span> <span class="n">select</span><span class="o">=</span><span class="n">NotDisordered</span><span class="p">())</span>
+
+            <span class="n">native</span> <span class="o">=</span> <span class="n">StructureEnsemble</span><span class="p">(</span><span class="n">se_settings</span><span class="p">)</span>
+            <span class="n">native</span><span class="o">.</span><span class="n">display_warnings</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="n">native</span><span class="o">.</span><span class="n">read</span><span class="p">([</span><span class="n">native_path</span><span class="p">],</span> <span class="n">molecule</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">&#39;cns&#39;</span><span class="p">)</span>
+
+            <span class="n">dists_ref</span> <span class="o">=</span> <span class="n">native</span><span class="o">.</span><span class="n">getDistances</span>
+
+        <span class="c1"># We get here the distance of &#39;number_of_best_structures&#39; in the</span>
+        <span class="c1">#  ensemble</span>
+        <span class="c1"># ens_getdists = ensemble.getDistances</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Violation analysis&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">clustidx</span><span class="p">,</span> <span class="n">clustensemble</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">clustensembles</span><span class="p">):</span>
+            <span class="n">out_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">out_path</span><span class="p">,</span> <span class="s1">&#39;violations.csv&#39;</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">violation_analysis</span><span class="p">(</span><span class="n">project</span><span class="p">,</span> <span class="n">iteration_id</span><span class="p">,</span> <span class="n">restraints</span><span class="p">,</span>
+                                    <span class="n">clustensemble</span><span class="p">,</span> <span class="n">out_file</span><span class="p">,</span>
+                                    <span class="n">clusteridx</span><span class="o">=</span><span class="n">clustidx</span><span class="p">,</span> <span class="n">dists_ref</span><span class="o">=</span><span class="n">dists_ref</span><span class="p">,</span>
+                                    <span class="n">headerflag</span><span class="o">=</span><span class="kc">True</span> <span class="k">if</span> <span class="n">clustidx</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">False</span><span class="p">)</span>
+
+        <span class="c1"># For the plotting part, we need a StructureEnsemble instance with all</span>
+        <span class="c1"># pdb files from the iteration</span>
+
+        <span class="n">allensemble</span> <span class="o">=</span> <span class="n">StructureEnsemble</span><span class="p">(</span><span class="n">se_settings</span><span class="p">)</span>
+        <span class="n">allensemble</span><span class="o">.</span><span class="n">read</span><span class="p">(</span>
+            <span class="n">files</span><span class="o">=</span><span class="p">[</span><span class="n">pdbfile</span> <span class="k">for</span> <span class="n">se</span> <span class="ow">in</span> <span class="n">ens_paths</span> <span class="k">for</span> <span class="n">pdbfile</span> <span class="ow">in</span> <span class="n">se</span><span class="p">],</span>
+            <span class="n">molecule</span><span class="o">=</span><span class="n">molecule</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">&#39;cns&#39;</span><span class="p">)</span>
+
+        <span class="n">infos</span> <span class="o">=</span> <span class="p">[</span><span class="n">inf</span> <span class="k">for</span> <span class="n">inf</span> <span class="ow">in</span> <span class="n">allensemble</span><span class="o">.</span><span class="n">getInfo</span><span class="p">()]</span>
+        <span class="p">[</span><span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;clust&#39;</span><span class="p">:</span> <span class="n">idx</span><span class="p">})</span> <span class="k">for</span> <span class="n">info</span> <span class="ow">in</span> <span class="n">infos</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">clustlist</span> <span class="ow">in</span>
+         <span class="nb">enumerate</span><span class="p">(</span><span class="n">ens_paths</span><span class="p">)</span> <span class="k">if</span> <span class="nb">filter</span><span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">info</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">clustlist</span><span class="p">)]</span>
+
+        <span class="c1"># Compute pca projection of cluster labels on all the</span>
+        <span class="c1"># generated structures. Add later an option to visualize extra</span>
+        <span class="c1"># information like RMSD, quality, ... with a csv file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pca_projection</span><span class="p">(</span>
+            <span class="n">allensemble</span><span class="p">,</span> <span class="n">molecule</span><span class="p">,</span> <span class="p">[</span><span class="n">info</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;clust&#39;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">info</span> <span class="ow">in</span> <span class="n">infos</span><span class="p">],</span>
+            <span class="n">atmask</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">analysis</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;atmask&quot;</span><span class="p">],</span>
+            <span class="n">title</span><span class="o">=</span><span class="s2">&quot;3D PCA projection on </span><span class="si">%s</span><span class="s2"> backbone coordinates </span><span class="se">\n</span><span class="si">%s</span><span class="s2"> contacts&quot;</span>
+                  <span class="s2">&quot; at iteration </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">protein_id</span><span class="p">,</span> <span class="n">list_name</span><span class="p">,</span>
+                                        <span class="nb">str</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)),</span>
+            <span class="n">outfile</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">out_path</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">_it</span><span class="si">%s</span><span class="s2">_clusts.3dpca.png&quot;</span> <span class="o">%</span>
+                                 <span class="p">(</span><span class="n">protein_id</span><span class="p">,</span> <span class="n">list_name</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">iteration_id</span><span class="p">)))</span>
+        <span class="p">)</span></div></div>
+
+        <span class="c1"># with open(os.path.join(iter_dir,</span>
+        <span class="c1">#                        &quot;analysis/pyfit/accuracydssp/RMSD.dat&quot;)) as rmsdfile:</span>
+        <span class="c1">#     accdssp = {key: float(value) for key, value in</span>
+        <span class="c1">#                [line.split() for line in rmsdfile if</span>
+        <span class="c1">#                 re.search(&quot;pdb&quot;, line)]}</span>
+
+        <span class="c1"># [info[1].update({&#39;ensemble&#39;: False})</span>
+        <span class="c1">#  for info in infos]</span>
+        <span class="c1"># [info[1].update({&#39;ensemble&#39;: True})</span>
+        <span class="c1">#  for info in infos</span>
+        <span class="c1">#  for clustlist in [clustlist[0:15] for clustlist in clustlists] if</span>
+        <span class="c1">#  filter(re.compile(info[0]).match, clustlist)]</span>
+        <span class="c1"># [info[1].update(</span>
+        <span class="c1">#     {&#39;accdssp&#39;: accdssp.get(os.path.basename(info[0]), None)})</span>
+        <span class="c1">#  for info in infos]</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/base.html b/examples-dev/olds/_build/html/_modules/ariaec/base.html
new file mode 100644
index 0000000..ab2ba1d
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/base.html
@@ -0,0 +1,755 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.base &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.base</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.base</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Basic tools aria_ec</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">abc</span> <span class="k">import</span> <span class="n">ABCMeta</span><span class="p">,</span> <span class="n">abstractmethod</span>
+<span class="kn">from</span> <span class="nn">Bio.PDB</span> <span class="k">import</span> <span class="n">Select</span>
+
+<span class="kn">import</span> <span class="nn">six</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">logging.config</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">ast</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">shutil</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">pkg_resources</span> <span class="k">as</span> <span class="nn">pkgr</span>
+<span class="kn">import</span> <span class="nn">matplotlib.artist</span> <span class="k">as</span> <span class="nn">art</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="addtup"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.addtup">[docs]</a><span class="k">def</span> <span class="nf">addtup</span><span class="p">(</span><span class="n">tup</span><span class="p">,</span> <span class="n">inc</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Increment all values by 1 in a tuple</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    tup :</span>
+<span class="sd">        param inc:</span>
+<span class="sd">    inc :</span>
+<span class="sd">        (Default value = 1)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">return</span> <span class="nb">tuple</span><span class="p">((</span><span class="n">val</span> <span class="o">+</span> <span class="n">inc</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">tup</span><span class="p">))</span></div>
+
+
+<div class="viewcode-block" id="titleprint"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.titleprint">[docs]</a><span class="k">def</span> <span class="nf">titleprint</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="n">progname</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Init log file</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    outfile :</span>
+<span class="sd">        param progname: docstring</span>
+<span class="sd">    desc :</span>
+<span class="sd">        return: (Default value = &#39;&#39;)</span>
+<span class="sd">    progname :</span>
+<span class="sd">        (Default value = &#39;&#39;)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">out</span> <span class="o">=</span> <span class="s1">&#39;&#39;&#39;</span>
+<span class="s1">================================================================================</span>
+<span class="si">{progname}</span><span class="s1"></span>
+<span class="s1">                                </span><span class="si">{desc}</span><span class="s1"></span>
+<span class="s1">================================================================================</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">progname</span><span class="o">=</span><span class="n">progname</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="o">.</span><span class="n">capitalize</span><span class="p">())</span>
+    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">out</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span></div>
+
+
+<div class="viewcode-block" id="get_filename"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.get_filename">[docs]</a><span class="k">def</span> <span class="nf">get_filename</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Search filename in the given path</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    path :</span>
+<span class="sd">        return:</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">return</span> <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;/&quot;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span></div>
+
+
+<div class="viewcode-block" id="reg_load"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.reg_load">[docs]</a><span class="k">def</span> <span class="nf">reg_load</span><span class="p">(</span><span class="n">regex</span><span class="p">,</span> <span class="n">filepath</span><span class="p">,</span> <span class="n">sort</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    </span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    regex :</span>
+<span class="sd">        param filepath:</span>
+<span class="sd">    sort :</span>
+<span class="sd">        return: (Default value = None)</span>
+<span class="sd">    filepath :</span>
+<span class="sd">        </span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="n">lines_dict</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">)</span> <span class="k">as</span> <span class="n">infile</span><span class="p">:</span>
+        <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">infile</span><span class="p">):</span>
+            <span class="n">match</span> <span class="o">=</span> <span class="n">regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                <span class="n">lines_dict</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span>
+
+    <span class="k">if</span> <span class="n">sort</span><span class="p">:</span>
+        <span class="n">lines_dict</span> <span class="o">=</span> <span class="n">sort_2dict</span><span class="p">(</span><span class="n">lines_dict</span><span class="p">,</span> <span class="n">sort</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">lines_dict</span></div>
+
+
+<div class="viewcode-block" id="sort_2dict"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.sort_2dict">[docs]</a><span class="k">def</span> <span class="nf">sort_2dict</span><span class="p">(</span><span class="n">unsort_dict</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Sort 2d dict by key</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    reverse :</span>
+<span class="sd">        param key: (Default value = True)</span>
+<span class="sd">    unsort_dict :</span>
+<span class="sd">        return: sorted dict</span>
+<span class="sd">    key :</span>
+<span class="sd">        </span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">sorted_index</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">unsort_dict</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">unsort_dict</span><span class="p">[</span><span class="n">x</span><span class="p">][</span><span class="n">key</span><span class="p">]),</span>
+                          <span class="n">reverse</span><span class="o">=</span><span class="n">reverse</span><span class="p">)</span>
+    <span class="n">sorted_dict</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">for</span> <span class="n">rank</span><span class="p">,</span> <span class="n">ind</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sorted_index</span><span class="p">):</span>
+        <span class="n">sorted_dict</span><span class="p">[</span><span class="n">rank</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">unsort_dict</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
+
+    <span class="k">return</span> <span class="n">sorted_dict</span></div>
+
+
+<div class="viewcode-block" id="cart_dist"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.cart_dist">[docs]</a><span class="k">def</span> <span class="nf">cart_dist</span><span class="p">(</span><span class="n">vectx</span><span class="p">,</span> <span class="n">vecty</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Evaluate cartesian distance beetween 2 points x, vecty</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    vectx :</span>
+<span class="sd">        numpy array (len = n dimensions)</span>
+<span class="sd">    vecty :</span>
+<span class="sd">        numpy array (len = n dimensions)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">power</span><span class="p">(</span><span class="n">vectx</span> <span class="o">-</span> <span class="n">vecty</span><span class="p">,</span> <span class="mi">2</span><span class="p">)))</span></div>
+
+
+<div class="viewcode-block" id="format_str"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.format_str">[docs]</a><span class="k">def</span> <span class="nf">format_str</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Convert str in bool, float, int or str</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    string :</span>
+<span class="sd">        return:</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*(true)\s*$&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">):</span>
+        <span class="k">return</span> <span class="kc">True</span>
+    <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*(false)\s*$&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">):</span>
+        <span class="k">return</span> <span class="kc">False</span>
+    <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*\d+\s*$&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
+        <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
+    <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^[\s\d-]+\.\d+\s*$&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
+        <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
+    <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^&quot;.+&quot;$&#39;</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
+        <span class="c1"># remove &quot; characters</span>
+        <span class="k">return</span> <span class="n">string</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
+    <span class="k">elif</span> <span class="s2">&quot;,&quot;</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
+        <span class="k">return</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">)</span>
+    <span class="k">elif</span> <span class="s2">&quot;+&quot;</span> <span class="ow">in</span> <span class="n">string</span><span class="p">:</span>
+        <span class="k">return</span> <span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;+&#39;</span><span class="p">)</span>
+    <span class="k">elif</span> <span class="s2">&quot;/&quot;</span> <span class="ow">in</span> <span class="n">string</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
+        <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
+    <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;[/\w]+&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
+        <span class="k">return</span> <span class="n">string</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="k">if</span> <span class="n">string</span><span class="p">:</span>
+            <span class="k">try</span><span class="p">:</span>
+                <span class="n">ev_str</span> <span class="o">=</span> <span class="n">ast</span><span class="o">.</span><span class="n">literal_eval</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
+            <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Don&#39;t understand given string </span><span class="si">%s</span><span class="s2">. Please check &quot;</span>
+                          <span class="s2">&quot;format.&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span>
+                <span class="k">return</span> <span class="kc">None</span>
+            <span class="k">except</span> <span class="ne">SyntaxError</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Given string </span><span class="si">%s</span><span class="s2"> is not a valid expression&quot;</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span>
+                <span class="k">return</span> <span class="kc">None</span>
+            <span class="k">return</span> <span class="n">ev_str</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="kc">None</span></div>
+
+
+<div class="viewcode-block" id="format_dict"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.format_dict">[docs]</a><span class="k">def</span> <span class="nf">format_dict</span><span class="p">(</span><span class="n">indict</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    </span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    indict :</span>
+<span class="sd">        return:</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">indict</span><span class="p">:</span>
+        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">indict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
+            <span class="n">indict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">format_str</span><span class="p">(</span><span class="n">indict</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
+    <span class="k">return</span> <span class="n">indict</span></div>
+
+
+<div class="viewcode-block" id="ppdict"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.ppdict">[docs]</a><span class="k">def</span> <span class="nf">ppdict</span><span class="p">(</span><span class="n">indict</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    </span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    indict :</span>
+<span class="sd">        param indent:</span>
+<span class="sd">    indent :</span>
+<span class="sd">        (Default value = 2)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">indict</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="n">indent</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="tickmin"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.tickmin">[docs]</a><span class="k">def</span> <span class="nf">tickmin</span><span class="p">(</span><span class="n">pandata</span><span class="p">,</span> <span class="n">ntick</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="mi">5</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Minimise number of ticks labels for matplotlib or seaborn plot</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    offset :</span>
+<span class="sd">        param shift: (Default value = 5)</span>
+<span class="sd">    pandata :</span>
+<span class="sd">        pandas dataframe</span>
+<span class="sd">    ntick :</span>
+<span class="sd">        number of ticks wanted per axes (Default value = None)</span>
+<span class="sd">    shift :</span>
+<span class="sd">        (Default value = 0)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">yticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="o">+</span> <span class="n">shift</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">pandata</span><span class="o">.</span><span class="n">index</span><span class="p">))]</span>
+    <span class="n">xticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="o">+</span> <span class="n">shift</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">pandata</span><span class="o">.</span><span class="n">columns</span><span class="p">))]</span>
+    <span class="k">if</span> <span class="n">ntick</span><span class="p">:</span>
+        <span class="n">keptticks</span> <span class="o">=</span> <span class="n">yticks</span><span class="p">[::(</span><span class="nb">len</span><span class="p">(</span><span class="n">pandata</span><span class="o">.</span><span class="n">index</span><span class="p">)</span> <span class="o">//</span> <span class="nb">int</span><span class="p">(</span><span class="n">ntick</span><span class="p">))]</span>
+        <span class="n">yticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="k">if</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">keptticks</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">yticks</span><span class="p">]</span>
+        <span class="c1"># If shift != 0, need to initialize first value of ticks</span>
+
+        <span class="n">keptticks</span> <span class="o">=</span> <span class="n">xticks</span><span class="p">[::(</span><span class="nb">len</span><span class="p">(</span><span class="n">xticks</span><span class="p">)</span> <span class="o">//</span> <span class="nb">int</span><span class="p">(</span><span class="n">ntick</span><span class="p">))]</span>
+        <span class="n">xticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="k">if</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">keptticks</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">xticks</span><span class="p">]</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">keptticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">ytick</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">ytick</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">yticks</span><span class="p">)</span>
+                     <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="n">shift</span><span class="p">)</span> <span class="o">%</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">]</span>
+        <span class="c1"># keptticks = yticks[::offset - shift]</span>
+        <span class="n">yticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="k">if</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">keptticks</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">yticks</span><span class="p">]</span>
+        <span class="c1"># If shift != 0, need to initialize first value of ticks</span>
+
+        <span class="n">keptticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">xtick</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">xtick</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">xticks</span><span class="p">)</span>
+                     <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="n">shift</span><span class="p">)</span> <span class="o">%</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">]</span>
+        <span class="c1"># keptticks = xticks[::offset - shift]</span>
+        <span class="n">xticks</span> <span class="o">=</span> <span class="p">[</span><span class="n">_</span> <span class="k">if</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">keptticks</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">xticks</span><span class="p">]</span>
+    <span class="k">return</span> <span class="n">xticks</span><span class="p">,</span> <span class="n">yticks</span></div>
+
+
+<div class="viewcode-block" id="tickrot"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.tickrot">[docs]</a><span class="k">def</span> <span class="nf">tickrot</span><span class="p">(</span><span class="n">axes</span><span class="p">,</span> <span class="n">figure</span><span class="p">,</span> <span class="n">rotype</span><span class="o">=</span><span class="s1">&#39;horizontal&#39;</span><span class="p">,</span> <span class="n">xaxis</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">yaxis</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Matplot rotation of ticks labels</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    axes :</span>
+<span class="sd">        param figure:</span>
+<span class="sd">    rotype :</span>
+<span class="sd">        param xaxis: (Default value = &#39;horizontal&#39;)</span>
+<span class="sd">    yaxis :</span>
+<span class="sd">        return: (Default value = True)</span>
+<span class="sd">    figure :</span>
+<span class="sd">        </span>
+<span class="sd">    xaxis :</span>
+<span class="sd">        (Default value = True)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="k">if</span> <span class="n">yaxis</span><span class="p">:</span>
+        <span class="n">art</span><span class="o">.</span><span class="n">setp</span><span class="p">(</span><span class="n">axes</span><span class="o">.</span><span class="n">get_yticklabels</span><span class="p">(),</span> <span class="n">rotation</span><span class="o">=</span><span class="n">rotype</span><span class="p">)</span>
+    <span class="k">if</span> <span class="n">xaxis</span><span class="p">:</span>
+        <span class="n">art</span><span class="o">.</span><span class="n">setp</span><span class="p">(</span><span class="n">axes</span><span class="o">.</span><span class="n">get_xticklabels</span><span class="p">(),</span> <span class="n">rotation</span><span class="o">=</span><span class="n">rotype</span><span class="p">)</span>
+    <span class="n">figure</span><span class="o">.</span><span class="n">canvas</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span></div>
+
+
+<span class="c1"># TODO: Add another level when we use verbose options instead of displaying debug messages</span>
+<div class="viewcode-block" id="CustomLogging"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CustomLogging">[docs]</a><span class="k">class</span> <span class="nc">CustomLogging</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Customized python logging config</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="c1"># default_file = os.path.join(os.path.abspath(os.path.dirname(__file__)),</span>
+    <span class="c1">#                             &quot;conf/logging.json&quot;)</span>
+    <span class="n">default_file</span> <span class="o">=</span> <span class="s2">&quot;conf/logging.json&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param level:</span>
+<span class="sd">        :param desc:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: detect path log filenames and makedirs if not exists</span>
+        <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">level</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">desc</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="n">desc</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_config</span><span class="p">()</span>
+
+<div class="viewcode-block" id="CustomLogging.update_msg"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CustomLogging.update_msg">[docs]</a>    <span class="k">def</span> <span class="nf">update_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">desc</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">+=</span> <span class="n">desc</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot; - &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot; - &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">,</span> <span class="n">desc</span><span class="o">.</span><span class="n">capitalize</span><span class="p">()))</span></div>
+
+<div class="viewcode-block" id="CustomLogging.default_config"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CustomLogging.default_config">[docs]</a>    <span class="k">def</span> <span class="nf">default_config</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="c1"># with open(self.default_file, &#39;rt&#39;) as f:</span>
+        <span class="n">conf</span> <span class="o">=</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_file</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span>
+        <span class="n">config</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">conf</span><span class="p">)</span>
+        <span class="n">logging</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">dictConfig</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">config</span></div>
+
+<div class="viewcode-block" id="CustomLogging.set_outdir"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CustomLogging.set_outdir">[docs]</a>    <span class="k">def</span> <span class="nf">set_outdir</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">outdir</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Create log directory and change log files location</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        outdir :</span>
+<span class="sd">            path output directory</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">outdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">outdir</span><span class="p">,</span>
+                              <span class="s2">&quot;log&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="s2">&quot;log&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">outdir</span> <span class="k">else</span> <span class="n">outdir</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">outdir</span><span class="p">)):</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">outdir</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># Trick to avoid overwriting files with w mode after copy2 call</span>
+            <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">outdir</span><span class="p">))</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">outdir</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">outdir</span> <span class="ow">and</span> <span class="s2">&quot;handlers&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">hand</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">]:</span>
+                <span class="k">if</span> <span class="s2">&quot;filename&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">]:</span>
+                    <span class="n">oldpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">][</span><span class="s2">&quot;filename&quot;</span><span class="p">]</span>
+                    <span class="n">newpath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                        <span class="n">outdir</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">][</span><span class="s2">&quot;filename&quot;</span><span class="p">])))</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">][</span><span class="s2">&quot;filename&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">newpath</span>
+                    <span class="n">shutil</span><span class="o">.</span><span class="n">copy2</span><span class="p">(</span><span class="n">oldpath</span><span class="p">,</span> <span class="n">newpath</span><span class="p">)</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">dictConfig</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="CustomLogging.welcome"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CustomLogging.welcome">[docs]</a>    <span class="k">def</span> <span class="nf">welcome</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="n">desc</span> <span class="o">=</span> <span class="s1">&#39;&#39;&#39;</span>
+<span class="s1">================================================================================</span>
+
+<span class="si">{:^80}</span><span class="s1"></span>
+
+<span class="s1">================================================================================</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">)</span>
+        <span class="nb">print</span><span class="p">(</span><span class="n">desc</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">hand</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;handlers&quot;</span><span class="p">):</span>
+            <span class="k">if</span> <span class="s2">&quot;filename&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">]:</span>
+                <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="n">hand</span><span class="p">][</span><span class="s2">&quot;filename&quot;</span><span class="p">],</span>
+                          <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">desc</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="Capturing"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.Capturing">[docs]</a><span class="k">class</span> <span class="nc">Capturing</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Capture output&quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Stock default stdout and redirect current stdout to this class</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stdout</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
+        <span class="c1"># All print calls are saved into self._stringio</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span> <span class="o">=</span> <span class="n">six</span><span class="o">.</span><span class="n">moves</span><span class="o">.</span><span class="n">StringIO</span><span class="p">()</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span>
+        <span class="k">return</span> <span class="bp">self</span>
+
+    <span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        args</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span><span class="o">.</span><span class="n">splitlines</span><span class="p">()))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span><span class="o">.</span><span class="n">truncate</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+        <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stringio</span>  <span class="c1"># free up some memory</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stdout</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stderr</span></div>
+
+
+<div class="viewcode-block" id="RedirectStdStreams"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.RedirectStdStreams">[docs]</a><span class="k">class</span> <span class="nc">RedirectStdStreams</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Redirect standard ouput and errors&quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stdout</span> <span class="o">=</span> <span class="n">stdout</span> <span class="ow">or</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stderr</span> <span class="o">=</span> <span class="n">stderr</span> <span class="ow">or</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
+
+    <span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">old_stdout</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">old_stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">old_stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">old_stderr</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stdout</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stderr</span>
+        <span class="k">return</span> <span class="bp">self</span>
+
+    <span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_stderr</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">old_stdout</span>
+        <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">old_stderr</span></div>
+
+
+<div class="viewcode-block" id="CommandProtocol"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CommandProtocol">[docs]</a><span class="k">class</span> <span class="nc">CommandProtocol</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Abstract class for subcommand protocol&quot;&quot;&quot;</span>
+    <span class="n">__metaclass__</span> <span class="o">=</span> <span class="n">ABCMeta</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+
+    <span class="nd">@abstractmethod</span>
+<div class="viewcode-block" id="CommandProtocol.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.CommandProtocol.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        main method to launch protocol</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div></div>
+
+
+<div class="viewcode-block" id="NotDisordered"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.NotDisordered">[docs]</a><span class="k">class</span> <span class="nc">NotDisordered</span><span class="p">(</span><span class="n">Select</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Define an atom as disordered or not in pdb selection&quot;&quot;&quot;</span>
+<div class="viewcode-block" id="NotDisordered.accept_atom"><a class="viewcode-back" href="../../ariaec.html#ariaec.base.NotDisordered.accept_atom">[docs]</a>    <span class="k">def</span> <span class="nf">accept_atom</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">atom</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Accept or not the atom if it does not correspond to an alternative</span>
+<span class="sd">        location</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        atom :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="ow">not</span> <span class="n">atom</span><span class="o">.</span><span class="n">is_disordered</span><span class="p">()</span> <span class="ow">or</span> <span class="n">atom</span><span class="o">.</span><span class="n">get_altloc</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;A&#39;</span></div></div>
+
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
+    <span class="c1"># Test Logger</span>
+    <span class="n">CustomLogging</span><span class="p">()</span><span class="o">.</span><span class="n">set_outdir</span><span class="p">(</span><span class="s2">&quot;../examples/out&quot;</span><span class="p">)</span>
+    <span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;TEST&quot;</span><span class="p">)</span>
+    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="nb">dir</span><span class="p">(</span><span class="n">LOG</span><span class="p">))</span>
+    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Log test&quot;</span><span class="p">)</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/commands.html b/examples-dev/olds/_build/html/_modules/ariaec/commands.html
new file mode 100644
index 0000000..85ed35d
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/commands.html
@@ -0,0 +1,752 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.commands &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.commands</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.commands</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Input/Output aria_ec</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">argparse</span> <span class="k">as</span> <span class="nn">argp</span>
+
+<span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="vm">__doc__</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">format_dict</span><span class="p">,</span> <span class="n">CustomLogging</span>
+<span class="kn">from</span> <span class="nn">.settings</span> <span class="k">import</span> <span class="n">AriaEcSettings</span>
+<span class="kn">from</span> <span class="nn">.maplot</span> <span class="k">import</span> <span class="n">AriaEcContactMap</span>
+<span class="kn">from</span> <span class="nn">.converter</span> <span class="k">import</span> <span class="n">AriaEcBbConverter</span><span class="p">,</span> <span class="n">AriaEcXMLConverter</span>
+<span class="kn">from</span> <span class="nn">.setup</span> <span class="k">import</span> <span class="n">AriaEcSetup</span>
+<span class="kn">from</span> <span class="nn">.pdbqual</span> <span class="k">import</span> <span class="n">AriaEcPdbqual</span>
+<span class="kn">from</span> <span class="nn">.pdbdist</span> <span class="k">import</span> <span class="n">PDBDist</span>
+<span class="kn">from</span> <span class="nn">.pdbstat</span> <span class="k">import</span> <span class="n">PDBStat</span>
+<span class="kn">from</span> <span class="nn">.analysis</span> <span class="k">import</span> <span class="n">EnsembleAnalysis</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="check_file"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.check_file">[docs]</a><span class="k">def</span> <span class="nf">check_file</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    </span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    prospective_file :</span>
+<span class="sd">        </span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Checking if </span><span class="si">%s</span><span class="s2"> is a readable file&quot;</span><span class="p">,</span> <span class="n">prospective_file</span><span class="p">)</span>
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentTypeError</span><span class="p">(</span><span class="s2">&quot;readable_file:&#39;</span><span class="si">{0}</span><span class="s2">&#39; is not a valid &quot;</span>
+                                     <span class="s2">&quot;path&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">))</span>
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">R_OK</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentTypeError</span><span class="p">(</span><span class="s2">&quot;readable_file:&#39;</span><span class="si">{0}</span><span class="s2">&#39; is not a readable &quot;</span>
+                                     <span class="s2">&quot;file&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">))</span></div>
+
+
+<div class="viewcode-block" id="ReadableFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.ReadableFile">[docs]</a><span class="k">class</span> <span class="nc">ReadableFile</span><span class="p">(</span><span class="n">argp</span><span class="o">.</span><span class="n">Action</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Class used with argparse action to check if a file is readable&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">ReadableFile</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">,</span> <span class="n">namespace</span><span class="p">,</span> <span class="n">values</span><span class="p">,</span> <span class="n">option_string</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
+            <span class="k">for</span> <span class="n">prospective_file</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
+                <span class="n">check_file</span><span class="p">(</span><span class="n">prospective_file</span><span class="p">)</span>
+            <span class="nb">setattr</span><span class="p">(</span><span class="n">namespace</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dest</span><span class="p">,</span>
+                    <span class="p">[</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">values</span><span class="p">])</span>
+        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">values</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
+            <span class="n">check_file</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
+            <span class="nb">setattr</span><span class="p">(</span><span class="n">namespace</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dest</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="n">values</span><span class="p">)))</span></div>
+
+
+<span class="c1"># TODO: Make parent Command class with _create_argparser, self.args,</span>
+<span class="c1"># update_logger and run</span>
+<div class="viewcode-block" id="AriaEcCommands"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands">[docs]</a><span class="k">class</span> <span class="nc">AriaEcCommands</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Argparse interface for aria_ec&quot;&quot;&quot;</span>
+
+    <span class="n">command_list</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;setup&quot;</span><span class="p">,</span> <span class="s2">&quot;bbconv&quot;</span><span class="p">,</span> <span class="s2">&quot;maplot&quot;</span><span class="p">,</span> <span class="s2">&quot;pdbqual&quot;</span><span class="p">,</span> <span class="s2">&quot;analysis&quot;</span><span class="p">,</span>
+                    <span class="s2">&quot;tbl2xml&quot;</span><span class="p">,</span> <span class="s2">&quot;pdbdist&quot;</span><span class="p">,</span> <span class="s2">&quot;pdbstat&quot;</span><span class="p">)</span>
+    <span class="n">desc_list</span> <span class="o">=</span> <span class="p">(</span><span class="sa">u</span><span class="s2">&quot;Setup ARIA infrastructure with contact maps translated &quot;</span>
+                 <span class="sa">u</span><span class="s2">&quot;into ARIA restraints&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Convert a contact map in bbcontact format&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Contactmap visualization tool&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Quality tool for pdb file(s)&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Extended ARIA ensemble analysis on a specific iteration &quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;XML converter for tbl distance restraint&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Extract distance distribution from culled list of pdb files&quot;</span><span class="p">,</span>
+                 <span class="sa">u</span><span class="s2">&quot;Analyze distance distribution with GMM, ...&quot;</span><span class="p">)</span>
+    <span class="n">contact_types</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;evfold&quot;</span><span class="p">,</span> <span class="s2">&quot;plmev&quot;</span><span class="p">,</span> <span class="s2">&quot;plm&quot;</span><span class="p">,</span> <span class="s2">&quot;plmdca&quot;</span><span class="p">,</span> <span class="s2">&quot;plmc&quot;</span><span class="p">,</span> <span class="s2">&quot;bbcontacts&quot;</span><span class="p">,</span>
+                     <span class="s2">&quot;pconsc&quot;</span><span class="p">,</span> <span class="s2">&quot;pconsc1&quot;</span><span class="p">,</span> <span class="s2">&quot;pconsc2&quot;</span><span class="p">,</span> <span class="s2">&quot;psicov&quot;</span><span class="p">,</span> <span class="s2">&quot;metapsicovhb&quot;</span><span class="p">,</span>
+                     <span class="s2">&quot;metapsicov_stg1&quot;</span><span class="p">,</span> <span class="s2">&quot;metapsicov_stg2&quot;</span><span class="p">,</span> <span class="s2">&quot;gremlin&quot;</span><span class="p">,</span> <span class="s2">&quot;pdb&quot;</span><span class="p">,</span>
+                     <span class="s2">&quot;native&quot;</span><span class="p">,</span> <span class="s2">&quot;native_full&quot;</span><span class="p">,</span> <span class="s2">&quot;contactlist&quot;</span><span class="p">)</span>
+    <span class="n">default_confile</span> <span class="o">=</span> <span class="s2">&quot;conf/config.ini&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">custom_logging</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="c1"># Def Argument pdbparser</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_argparser</span><span class="p">()</span>
+        <span class="c1"># parse args</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span>
+        <span class="c1"># Update LOG with outdir</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_update_logger</span><span class="p">(</span><span class="n">custom_logging</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_update_logger</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">log</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        log :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="n">log</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">&quot;output_directory&quot;</span><span class="p">):</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">nolog</span><span class="p">:</span>
+                <span class="c1"># Don&#39;t generate log files</span>
+                <span class="c1"># TODO: get handler list from json file or customlogging object</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">removeHandler</span><span class="p">(</span><span class="s2">&quot;info_file_handler&quot;</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">removeHandler</span><span class="p">(</span><span class="s2">&quot;error_file_handler&quot;</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">removeHandler</span><span class="p">(</span><span class="s2">&quot;debug_file_handler&quot;</span><span class="p">)</span>
+                <span class="n">log</span><span class="o">.</span><span class="n">set_outdir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_directory</span><span class="p">)</span>
+            <span class="n">log</span><span class="o">.</span><span class="n">update_msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span>
+            <span class="n">log</span><span class="o">.</span><span class="n">welcome</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_create_argparser</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot; &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">,</span>
+                                     <span class="n">formatter_class</span><span class="o">=</span><span class="n">argp</span><span class="o">.</span><span class="n">ArgumentDefaultsHelpFormatter</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-o&quot;</span><span class="p">,</span> <span class="s2">&quot;--output&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;output_directory&quot;</span><span class="p">,</span>
+                            <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Output directory&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-c&quot;</span><span class="p">,</span> <span class="s2">&quot;--conf&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;conf_file&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;configuration file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--nolog&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Don&#39;t generate log files&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-d&quot;</span><span class="p">,</span> <span class="s2">&quot;--debug&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;verbose&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="s1">&#39;store_true&#39;</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Increase output verbosity&quot;</span><span class="p">)</span>
+        <span class="c1"># Create subcommands</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_create_subparsers</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span><span class="n">dest</span><span class="o">=</span><span class="s2">&quot;command&quot;</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="k">def</span> <span class="nf">_create_subparsers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parser</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate subcommands</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        parser :</span>
+<span class="sd">            argparser object</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">command</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command_list</span><span class="p">):</span>
+            <span class="c1"># Create subparser defined in command list</span>
+            <span class="n">subcommand</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">command</span> <span class="o">+</span> <span class="s2">&quot;_argparser&quot;</span><span class="p">)(</span>
+                <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc_list</span><span class="p">[</span><span class="n">index</span><span class="p">])</span>
+            <span class="n">parser</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="n">command</span><span class="p">,</span> <span class="n">parents</span><span class="o">=</span><span class="p">[</span><span class="n">subcommand</span><span class="p">])</span>
+
+    <span class="k">def</span> <span class="nf">_setup_argparser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        setup opt &amp; args</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            command descriptor (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="c1"># Options</span>
+        <span class="c1"># Args</span>
+        <span class="n">group</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s1">&#39;required arguments&#39;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;sequence file [FASTA]&quot;</span><span class="p">)</span>
+        <span class="c1"># group.add_argument(&quot;sspred&quot;, action=ReadableFile,</span>
+        <span class="c1">#                    help=&quot;secondary structure prediction file&quot;)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;infile&quot;</span><span class="p">,</span>
+                           <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;contact or pdb file(s) used to build aria &quot;</span>
+                                <span class="s2">&quot;distance restraints&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-d&quot;</span><span class="p">,</span> <span class="s2">&quot;--distfile&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;distfile&quot;</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Pdb or distance matrix iif distance_type &quot;</span>
+                                <span class="s2">&quot;set  to   distfile in conf  file,  &quot;</span>
+                                <span class="s2">&quot;use distances in the  given file as &quot;</span>
+                                <span class="s2">&quot;target  distance to build  distance &quot;</span>
+                                <span class="s2">&quot;restraints&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-s&quot;</span><span class="p">,</span> <span class="s2">&quot;--ssfile&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;secondary structure prediction file&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-p&quot;</span><span class="p">,</span> <span class="s2">&quot;--ariaproject&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;ariaproject&quot;</span><span class="p">,</span>
+                           <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;ARIA project file. This file will be used as&quot;</span>
+                                <span class="s2">&quot;an initialization file if&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-t&quot;</span><span class="p">,</span> <span class="s2">&quot;--type&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                           <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;contact_types&quot;</span><span class="p">,</span>
+                           <span class="n">choices</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">contact_types</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Infile(s) contact &quot;</span>
+                                                            <span class="s2">&quot;type(s)&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--ref&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;ref&quot;</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Native pdb. Allow TP/FP detection.&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--hb&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;hb&quot;</span><span class="p">,</span>
+                           <span class="n">help</span><span class="o">=</span><span class="s2">&quot;H-bonds contact file (eg: metapsicov.hb)&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--ssidx&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;ssidx&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                           <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Use secondary structure index&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--no-filter&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;no_filter&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                           <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Do not filter contact map.&quot;</span><span class="p">)</span>
+        <span class="n">group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--extract-all&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;extractall&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                           <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Extract data or all data and&quot;</span>
+                                               <span class="s2">&quot;parameters if an ARIA project&quot;</span>
+                                               <span class="s2">&quot;is defined with -p option&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="k">def</span> <span class="nf">_bbconv_argparser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        bbconv opt &amp; args</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            command descriptor (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="c1"># args</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;contactfile&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;contacts file (pconsc, plm)&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;psipred file&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;sequence file [FASTA]&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;msa&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s1">&#39;?&#39;</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;MSA [FASTA] for diversityvalue&quot;</span>
+                                 <span class="s2">&quot;used with bbcontacts&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-t&quot;</span><span class="p">,</span> <span class="s2">&quot;--type&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;contact_type&quot;</span><span class="p">,</span>
+                            <span class="n">choices</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">contact_types</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Infile contact &quot;</span>
+                                                             <span class="s2">&quot;type&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="k">def</span> <span class="nf">_maplot_argparser</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        maplot opt &amp; args</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            command descriptor (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;sequence file [FASTA]&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;secondary structure prediction file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;infile&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;contact or pdb file(s) used to build aria &quot;</span>
+                                 <span class="s2">&quot;distance restraints&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-t&quot;</span><span class="p">,</span> <span class="s2">&quot;--type&quot;</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                            <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;contact_types&quot;</span><span class="p">,</span>
+                            <span class="n">choices</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">contact_types</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Infile(s) &quot;</span>
+                                                             <span class="s2">&quot;contact &quot;</span>
+                                                             <span class="s2">&quot;type(s)&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--merge&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;merge&quot;</span><span class="p">,</span>
+                            <span class="n">choices</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">contact_types</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Merge given contact types with other maps&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--filter&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;filter&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Use contact list filter &quot;</span>
+                                                <span class="s2">&quot;and top n contacts selection&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--onlyreport&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;onlyreport&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Generate only report file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--no-filter&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;no_filter&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Do not filter contact map.&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--ssidx&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;ssidx&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Use secondary structure index&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--prefix&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;prefix&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
+                            <span class="n">default</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Generate prefix for file names&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_pdbqual_argparser</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;infile&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;PDB file(s) used to run quality tools with &quot;</span>
+                                 <span class="s2">&quot;aria API&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_analysis_argparser</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;project&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;ARIA project file [XML]&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;iteration&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;iteration_path&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Iteration path used to run violation analysis&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;listname&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;list_name&quot;</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Name of restraint list analyzed in the tbl file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-r&quot;</span><span class="p">,</span> <span class="s2">&quot;--ref&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;ref&quot;</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Native pdb. Allow TP/FP detection.&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;-d&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;restraint&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Distance restraint file (XML) used for &quot;</span>
+                                 <span class="s2">&quot;violation analysis. Otherwise, use restraints&quot;</span>
+                                 <span class="s2">&quot; of the current iteration&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_tbl2xml_argparser</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;molecule&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;molecule.xml&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;ARIA XML molecule file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;listname&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;list_name&quot;</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Restraint list name in the tbl file&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">,</span> <span class="n">nargs</span><span class="o">=</span><span class="s2">&quot;+&quot;</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;infile.tbl&quot;</span><span class="p">,</span>
+                            <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+                            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;TBL distance restraint file(s)&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_pdbdist_argparser</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="c1"># TODO: find a way to list all cullpdb file in package ressources</span>
+        <span class="c1"># Maybe move this args to the config file</span>
+
+        <span class="c1"># Culled pdb list are actually saved in data/cullpdb folder with yymmdd</span>
+        <span class="c1"># pattern as naming convention</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;--cullist&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;cullpdbs&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+            <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;CULLED_PDB_LIST&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Culled list of pdb files from PISCES server [&quot;</span>
+                 <span class="s2">&quot;G. Wang and R. L. Dunbrack, Jr. PISCES: a protein sequence &quot;</span>
+                 <span class="s2">&quot;culling server. Bioinformatics, 19:1589-1591, 2003.]&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;--pdbdir&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;pdbdir&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+            <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;PDB_FOLDER&quot;</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Folder containing pdb file entries&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_pdbstat_argparser</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">parser</span> <span class="o">=</span> <span class="n">argp</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span>
+                                     <span class="n">add_help</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+        <span class="c1"># TODO: find a way to list all cullpdb file in package ressources</span>
+        <span class="c1"># Maybe move this args to the config file</span>
+
+        <span class="c1"># Culled pdb list are actually saved in data/cullpdb folder with yymmdd</span>
+        <span class="c1"># pattern as naming convention</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;pdbdists&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="n">ReadableFile</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;PDB distance file in csv format&quot;</span><span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;-j&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;njobs&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">metavar</span><span class="o">=</span><span class="s2">&quot;N_JOBS&quot;</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Number of cpus used to run mixture in parallel. By default,&quot;</span>
+                 <span class="s2">&quot; use max of available cpus.&quot;</span>
+        <span class="p">)</span>
+        <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
+            <span class="s2">&quot;--min&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;minflag&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+            <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Compute stats only on a minimized list of atom (CA, CB and 1 &quot;</span>
+                 <span class="s2">&quot;SC)&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">parser</span>
+
+<div class="viewcode-block" id="AriaEcCommands.create_settings"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.create_settings">[docs]</a>    <span class="k">def</span> <span class="nf">create_settings</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Create settings relative to args.command&quot;&quot;&quot;</span>
+
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">verbose</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Toggle on debug mode&quot;</span><span class="p">)</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">()</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Create AriaEcSettings&quot;</span><span class="p">)</span>
+        <span class="n">settings</span> <span class="o">=</span> <span class="n">AriaEcSettings</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading default config file&quot;</span><span class="p">)</span>
+        <span class="n">settings</span><span class="o">.</span><span class="n">load_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_confile</span><span class="p">,</span> <span class="n">pkg</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">conf_file</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Updating settings with conf file&quot;</span><span class="p">)</span>
+            <span class="n">settings</span><span class="o">.</span><span class="n">load_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">conf_file</span><span class="p">)</span>
+        <span class="c1"># Update settings associated to command section</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Updating </span><span class="si">%s</span><span class="s2"> args settings&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">)</span>
+        <span class="nb">getattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">format_dict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">settings</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_directory</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Updating output directory </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_directory</span><span class="p">)</span>
+            <span class="n">settings</span><span class="o">.</span><span class="n">infra</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">output_directory</span>
+        <span class="k">return</span> <span class="n">settings</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;call method relative to args.command&quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Run </span><span class="si">%s</span><span class="s2"> command&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)</span>
+        <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">command</span><span class="p">)()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.setup"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.setup">[docs]</a>    <span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Setup call&quot;&quot;&quot;</span>
+        <span class="n">setup_inst</span> <span class="o">=</span> <span class="n">AriaEcSetup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">setup_inst</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.bbconv"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.bbconv">[docs]</a>    <span class="k">def</span> <span class="nf">bbconv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;bbcontacts converter call&quot;&quot;&quot;</span>
+        <span class="n">bbconverter</span> <span class="o">=</span> <span class="n">AriaEcBbConverter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">bbconverter</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.maplot"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.maplot">[docs]</a>    <span class="k">def</span> <span class="nf">maplot</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;instantiate AriaEcContactmap with AriaSettings&quot;&quot;&quot;</span>
+        <span class="n">econtactmap</span> <span class="o">=</span> <span class="n">AriaEcContactMap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">econtactmap</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.pdbqual"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.pdbqual">[docs]</a>    <span class="k">def</span> <span class="nf">pdbqual</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Quality run subcommand&quot;&quot;&quot;</span>
+        <span class="n">qualprot</span> <span class="o">=</span> <span class="n">AriaEcPdbqual</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">qualprot</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.tbl2xml"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.tbl2xml">[docs]</a>    <span class="k">def</span> <span class="nf">tbl2xml</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;tbl2xml command&quot;&quot;&quot;</span>
+        <span class="n">tblconverter</span> <span class="o">=</span> <span class="n">AriaEcXMLConverter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">tblconverter</span><span class="o">.</span><span class="n">run_tbl2xml</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.pdbdist"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.pdbdist">[docs]</a>    <span class="k">def</span> <span class="nf">pdbdist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Extract pdb distance distributions&quot;&quot;&quot;</span>
+        <span class="n">inst</span> <span class="o">=</span> <span class="n">PDBDist</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">inst</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.pdbstat"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.pdbstat">[docs]</a>    <span class="k">def</span> <span class="nf">pdbstat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Analyse pdb distance distribution&quot;&quot;&quot;</span>
+        <span class="n">inst</span> <span class="o">=</span> <span class="n">PDBStat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">inst</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcCommands.analysis"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.AriaEcCommands.analysis">[docs]</a>    <span class="k">def</span> <span class="nf">analysis</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Extended ensemble analysis of distance restraints&quot;&quot;&quot;</span>
+        <span class="n">inst</span> <span class="o">=</span> <span class="n">EnsembleAnalysis</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">create_settings</span><span class="p">())</span>
+        <span class="n">inst</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div></div>
+
+
+<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../ariaec.html#ariaec.commands.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
+    <span class="sd">&quot;&quot;&quot;Launch ariaec command interface&quot;&quot;&quot;</span>
+
+    <span class="n">mylog</span> <span class="o">=</span> <span class="n">CustomLogging</span><span class="p">(</span><span class="n">desc</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">)</span>
+
+    <span class="n">command</span> <span class="o">=</span> <span class="n">AriaEcCommands</span><span class="p">(</span><span class="n">custom_logging</span><span class="o">=</span><span class="n">mylog</span><span class="p">)</span>
+
+    <span class="n">command</span><span class="o">.</span><span class="n">run</span><span class="p">()</span></div>
+
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
+    <span class="c1"># Test AriaEcCommand object</span>
+    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
+    <span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;IO&quot;</span><span class="p">)</span>
+    <span class="n">AriaEcCommands</span><span class="p">()</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/converter.html b/examples-dev/olds/_build/html/_modules/ariaec/converter.html
new file mode 100644
index 0000000..f03804a
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/converter.html
@@ -0,0 +1,2041 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.converter &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.converter</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.converter</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Input/Output aria_ec scripts</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">math</span>
+<span class="kn">import</span> <span class="nn">random</span>
+<span class="kn">import</span> <span class="nn">collections</span>
+<span class="kn">import</span> <span class="nn">itertools</span>
+<span class="kn">import</span> <span class="nn">datetime</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">textwrap</span>
+<span class="kn">import</span> <span class="nn">pickle</span>
+<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">pkg_resources</span> <span class="k">as</span> <span class="nn">pkgr</span>
+<span class="kn">import</span> <span class="nn">aria.legacy.AminoAcid</span> <span class="k">as</span> <span class="nn">AminoAcid</span>
+<span class="kn">from</span> <span class="nn">tqdm</span> <span class="k">import</span> <span class="n">tqdm</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">get_filename</span><span class="p">,</span> <span class="n">TqdmToLogger</span>
+<span class="kn">from</span> <span class="nn">.protein</span> <span class="k">import</span> <span class="n">Protein</span>
+<span class="kn">from</span> <span class="nn">.reader</span> <span class="k">import</span> <span class="n">MapFileListReader</span><span class="p">,</span> <span class="n">TblDistFile</span>
+<span class="kn">from</span> <span class="nn">.protmap</span> <span class="k">import</span> <span class="p">(</span><span class="n">ResAtmMap</span><span class="p">,</span> <span class="n">ResMap</span><span class="p">,</span> <span class="n">SsAaAtmMap</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">mako.template</span> <span class="k">import</span> <span class="n">Template</span>
+<span class="kn">from</span> <span class="nn">aria.Molecule</span> <span class="k">import</span> <span class="n">Molecule</span>
+<span class="kn">from</span> <span class="nn">aria.tools</span> <span class="k">import</span> <span class="n">string_to_segid</span>
+<span class="kn">from</span> <span class="nn">aria.AriaXML</span> <span class="k">import</span> <span class="n">AriaXMLPickler</span>
+<span class="kn">from</span> <span class="nn">aria.PDBReader</span> <span class="k">import</span> <span class="n">PDBReader</span>
+<span class="kn">from</span> <span class="nn">aria.ConversionTable</span> <span class="k">import</span> <span class="n">ConversionTable</span>
+<span class="kn">from</span> <span class="nn">future.utils</span> <span class="k">import</span> <span class="n">iteritems</span>
+<span class="kn">from</span> <span class="nn">aria.conversion</span> <span class="k">import</span> <span class="n">Converter</span><span class="p">,</span> <span class="n">SequenceList</span><span class="p">,</span> <span class="n">MoleculeSettings</span>
+<span class="kn">from</span> <span class="nn">aria.DataContainer</span> <span class="k">import</span> <span class="n">DATA_TYPES</span><span class="p">,</span> <span class="n">DATA_SEQUENCE</span><span class="p">,</span> <span class="n">DATA_RDCS</span><span class="p">,</span> \
+    <span class="n">DATA_ANNEALING_RDC</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="AriaEcBbConverter"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcBbConverter">[docs]</a><span class="k">class</span> <span class="nc">AriaEcBbConverter</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Bbcontacts convert main class&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="c1"># TODO: check_type settings (AriaEcSettings)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span> <span class="o">=</span> <span class="n">Protein</span><span class="p">(</span><span class="n">settings</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reader</span> <span class="o">=</span> <span class="n">MapFileListReader</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+<div class="viewcode-block" id="AriaEcBbConverter.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcBbConverter.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;BBConverter command&quot;&quot;&quot;</span>
+        <span class="c1"># Check input</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        main method</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Settings:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+                                             <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Args:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
+                                         <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="c1"># TODO: redirect print output to logging ? (low priority)</span>
+        <span class="c1"># ----------------------------- Input -------------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="n">get_filename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span>
+                                                                    <span class="kc">None</span><span class="p">))</span>
+        <span class="c1"># Load Sequence file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_aa_sequence</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
+        <span class="c1"># Load secondary structure prediction file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_sec_struct</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span>
+                                                                  <span class="kc">None</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;contactfile&quot;</span><span class="p">),</span>
+                         <span class="n">maptypes</span><span class="o">=</span><span class="p">[</span>
+                             <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;contact_type&quot;</span><span class="p">)],</span>
+                         <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                         <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                             <span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                         <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+        <span class="c1"># ---------------------------- Processing ---------------------------- #</span>
+        <span class="c1"># Convert contacts into couplingmatrix file (CCMPred format)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">maps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span>
+            <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.mat&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">),</span>
+            <span class="n">index</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">float_format</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">%13.10f</span><span class="s2">&quot;</span><span class="p">)</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;couplingmatrix&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.mat&quot;</span> <span class="o">%</span> <span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">)</span>
+        <span class="c1"># Convert psipred format (fasta-like)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">write_ssfasta</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.psipred&quot;</span> <span class="o">%</span> <span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">),</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;psipredfile&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.psipred&quot;</span> <span class="o">%</span> <span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">)</span>
+        <span class="c1"># Compute diversityvalue</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;diversityvalue&#39;</span><span class="p">]</span> <span class="o">=</span> \
+            <span class="bp">self</span><span class="o">.</span><span class="n">compute_diversityvalue</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">bbconv</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;msa&quot;</span><span class="p">),</span>
+                                        <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">))</span>
+        <span class="c1"># Generate .ini file with bbconv options (input args for bbcontacts)</span>
+        <span class="c1"># TODO: Generate with only bbconv option !</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">write_config</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">_bbconv.ini&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span>
+                                                         <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">))</span></div>
+
+<div class="viewcode-block" id="AriaEcBbConverter.compute_diversityvalue"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcBbConverter.compute_diversityvalue">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">compute_diversityvalue</span><span class="p">(</span><span class="n">msa</span><span class="p">,</span> <span class="n">seqlen</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Compute bbcontacts diversity value</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        msa : `str`</span>
+<span class="sd">            multiple sequence alignment file path</span>
+<span class="sd">        seqlen : `int`</span>
+<span class="sd">            protein sequence length</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        diversity_score : `float`</span>
+<span class="sd">            </span>
+
+<span class="sd">        Notes</span>
+<span class="sd">        -----</span>
+<span class="sd">            Diversity score correspond to the square root of the multiple</span>
+<span class="sd">            sequence alignment length (:math:`m`) over the length of the protein</span>
+<span class="sd">            sequence (:math:`l`)</span>
+<span class="sd">        </span>
+<span class="sd">            .. math:: Divscore = \frac{\sqrt{m}}{l}</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">msa_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^&gt;[A-Za-z0-9]+_[A-Za-z0-9]+&quot;</span><span class="p">)</span>
+        <span class="n">msalen</span> <span class="o">=</span> <span class="mi">0</span>
+
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">msa</span><span class="p">)</span> <span class="k">as</span> <span class="n">msafile</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">msafile</span><span class="p">:</span>
+                <span class="n">match</span> <span class="o">=</span> <span class="n">msa_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                <span class="k">if</span> <span class="n">match</span> <span class="ow">and</span> <span class="s2">&quot;deselect&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
+                    <span class="n">msalen</span> <span class="o">+=</span> <span class="mi">1</span>
+
+        <span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">msalen</span><span class="p">)</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="n">seqlen</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="AriaXMLConverter"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter">[docs]</a><span class="k">class</span> <span class="nc">AriaXMLConverter</span><span class="p">(</span><span class="n">Converter</span><span class="p">,</span> <span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;XML converter for aria files&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="n">Converter</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span> <span class="o">=</span> <span class="n">MoleculeSettings</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_pickler</span> <span class="o">=</span> <span class="n">AriaXMLPickler</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_molecule</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_upflag</span> <span class="o">=</span> <span class="kc">False</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">structure</span> <span class="o">=</span> <span class="kc">None</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">molecule</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        aria.Molecule.Molecule object or None. If a structure has been loaded,</span>
+<span class="sd">        use it to update the molecule</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">structure</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_molecule</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_upflag</span><span class="p">:</span>
+            <span class="c1"># update self._molecule with self.structure</span>
+            <span class="c1"># change value of self._upflag</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">upd_mol</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_molecule</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">structure</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_upflag</span> <span class="o">=</span> <span class="kc">True</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_molecule</span>
+
+<div class="viewcode-block" id="AriaXMLConverter.upd_mol"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.upd_mol">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">upd_mol</span><span class="p">(</span><span class="n">molecule</span><span class="p">,</span> <span class="n">structure</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Update molecule object according to pdb structure</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        molecule :</span>
+<span class="sd">            </span>
+<span class="sd">        structure :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Check if pdb structure is in the same format as molecule</span>
+        <span class="c1"># Loop over pdb structure and update/remove atoms in molecule chains (cf</span>
+        <span class="c1"># aria molecule and chain methods</span>
+        <span class="c1"># TODO</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.read_seq"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.read_seq">[docs]</a>    <span class="k">def</span> <span class="nf">read_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">seqpath</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Load aria Molecule object from seq file</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        seqpath :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;format&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;seq&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">seqpath</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="s2">&quot;xml&quot;</span><span class="p">],</span>
+                                               <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">+</span> <span class="s2">&quot;.xml&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;PROTEIN&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;segid&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;   A&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;first_residue_number&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;naming_convention&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span>
+
+        <span class="n">segids</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;segid&#39;</span><span class="p">]</span>
+        <span class="n">segids</span> <span class="o">=</span> <span class="n">segids</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
+
+        <span class="n">segids</span> <span class="o">=</span> <span class="p">[</span><span class="n">string_to_segid</span><span class="p">(</span><span class="n">segid</span><span class="p">)</span> <span class="k">for</span> <span class="n">segid</span> <span class="ow">in</span> <span class="n">segids</span><span class="p">]</span>
+        <span class="c1"># Fetch molecule</span>
+        <span class="n">chain_types</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="k">for</span> <span class="n">segid</span> <span class="ow">in</span> <span class="n">segids</span><span class="p">:</span>
+            <span class="n">chain_types</span><span class="p">[</span><span class="n">segid</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span>
+
+        <span class="n">sequence</span> <span class="o">=</span> <span class="n">SequenceList</span><span class="p">(</span><span class="n">chain_types</span><span class="p">,</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;first_residue_number&#39;</span><span class="p">])</span>
+
+        <span class="c1"># with Capturing() as output:</span>
+        <span class="c1"># Initialize SequenceList object with seq file</span>
+        <span class="n">sequence</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;input&#39;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;format&#39;</span><span class="p">],</span>
+                       <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;naming_convention&#39;</span><span class="p">])</span>
+
+        <span class="c1"># LOG.info(&quot;\n&quot; + &quot;&quot;.join(output))</span>
+
+        <span class="c1"># Initialize aria Atom factory</span>
+        <span class="n">factory</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_factory</span><span class="p">()</span>
+
+        <span class="n">factory</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
+        <span class="n">factory</span><span class="o">.</span><span class="n">unfreeze</span><span class="p">()</span>
+
+        <span class="c1"># Create chains in SequenceList object with aria atom factory</span>
+        <span class="n">chains</span> <span class="o">=</span> <span class="n">sequence</span><span class="o">.</span><span class="n">create_chains</span><span class="p">(</span><span class="n">factory</span><span class="p">)</span>
+
+        <span class="c1"># Instantiate aria molecule object</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_molecule</span> <span class="o">=</span> <span class="n">Molecule</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">])</span>
+        <span class="k">for</span> <span class="n">segid</span> <span class="ow">in</span> <span class="n">segids</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">molecule</span><span class="o">.</span><span class="n">add_chain</span><span class="p">(</span><span class="n">chains</span><span class="p">[</span><span class="n">segid</span><span class="p">])</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.read_pdb"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.read_pdb">[docs]</a>    <span class="k">def</span> <span class="nf">read_pdb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pdbpath</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        pdbpath :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># read pdb file with aria pdb reader and load it in self.structure</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">structure</span> <span class="o">=</span> <span class="n">PDBReader</span><span class="p">()</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">pdbpath</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.write_xmlseq"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.write_xmlseq">[docs]</a>    <span class="k">def</span> <span class="nf">write_xmlseq</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Use aria xml pickler to generate xml molecule file&quot;&quot;&quot;</span>
+
+        <span class="k">try</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_pickler</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">molecule</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">])</span>
+
+        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">&quot;Error for writing xml seq file </span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                         <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">],</span> <span class="n">msg</span><span class="p">)</span>
+            <span class="k">raise</span>
+
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_mol_set</span><span class="p">[</span><span class="s1">&#39;output&#39;</span><span class="p">]</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.deff"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.deff">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">deff</span><span class="p">(</span><span class="n">atm_dists</span><span class="p">,</span> <span class="n">dpow</span><span class="o">=</span><span class="mi">6</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Compute aria effective distance from input distances</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        atm_dists : list</span>
+<span class="sd">            list of atm-atm distances</span>
+<span class="sd">        dpow : int</span>
+<span class="sd">            effective distance exponant (Default value = 6)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">pow</span><span class="p">(</span><span class="nb">sum</span><span class="p">([</span><span class="n">math</span><span class="o">.</span><span class="n">pow</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="o">-</span><span class="nb">int</span><span class="p">(</span><span class="n">dpow</span><span class="p">))</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span>
+                             <span class="n">atm_dists</span><span class="p">]),</span> <span class="o">-</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">6</span><span class="p">)</span></div>
+
+    <span class="c1"># TODO: should define distance restraints in a class, not a dict</span>
+    <span class="c1"># TODO: Use mako</span>
+<div class="viewcode-block" id="AriaXMLConverter.write_dist_xml"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.write_dist_xml">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">write_dist_xml</span><span class="p">(</span><span class="n">dist_restraints</span><span class="p">,</span> <span class="n">outfile</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write aria distance restraint xml file</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        dist_restraints :</span>
+<span class="sd">            </span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">xml_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span>
+        <span class="n">xml_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">&lt;!DOCTYPE distance_restraint_list SYSTEM &quot;distance_restraint1.0.dtd&quot;&gt;</span>
+<span class="s1">&lt;distance_restraint_list&gt;</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="p">)</span>
+        <span class="c1"># Pour chaque contrainte</span>
+        <span class="c1"># Pour chaque contribution</span>
+        <span class="k">for</span> <span class="n">restraint_id</span> <span class="ow">in</span> <span class="n">dist_restraints</span><span class="p">:</span>
+            <span class="n">restraint</span> <span class="o">=</span> <span class="p">{</span>
+                <span class="s1">&#39;rest_id&#39;</span><span class="p">:</span> <span class="n">restraint_id</span><span class="p">,</span>
+                <span class="s1">&#39;rest_weight&#39;</span><span class="p">:</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;weight&quot;</span><span class="p">],</span>
+                <span class="s1">&#39;rest_dist&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span>
+                    <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;distance&quot;</span><span class="p">]),</span>
+                <span class="s1">&#39;lower_bound&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span>
+                    <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;lower_bound&quot;</span><span class="p">]),</span>
+                <span class="s1">&#39;upper_bound&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span>
+                    <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;upper_bound&quot;</span><span class="p">]),</span>
+                <span class="s1">&#39;reliable&#39;</span><span class="p">:</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;reliable&quot;</span><span class="p">],</span>
+                <span class="s1">&#39;list_name&#39;</span><span class="p">:</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span><span class="s2">&quot;list_name&quot;</span><span class="p">]</span>
+            <span class="p">}</span>
+            <span class="n">xml_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">  &lt;restraint id=&quot;</span><span class="si">{rest_id}</span><span class="s1">&quot; weight=&quot;</span><span class="si">{rest_weight:.1f}</span><span class="s1">&quot; distance=&quot;</span><span class="si">{rest_dist:.1f}</span><span class="s1">&quot; </span><span class="se">\</span>
+<span class="s1">lower_bound=&quot;</span><span class="si">{lower_bound:.1f}</span><span class="s1">&quot; upper_bound=&quot;</span><span class="si">{upper_bound:.1f}</span><span class="s1">&quot; active=&quot;1&quot; </span><span class="se">\</span>
+<span class="s1">reliable=&quot;</span><span class="si">{reliable}</span><span class="s1">&quot; list_name=&quot;</span><span class="si">{list_name}</span><span class="s1">&quot;&gt;</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">restraint</span><span class="p">))</span>
+            <span class="k">for</span> <span class="n">contrib_id</span> <span class="ow">in</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">]:</span>
+                <span class="n">res_id</span> <span class="o">=</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">][</span>
+                    <span class="s2">&quot;spin_pair&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+                <span class="c1"># TODO: Get segids from molecule file instead</span>
+                <span class="n">segids</span> <span class="o">=</span> <span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">][</span>
+                    <span class="s2">&quot;meta&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;segids&quot;</span><span class="p">)</span>
+                <span class="n">segid1</span> <span class="o">=</span> <span class="n">segids</span><span class="p">[</span><span class="n">res_id</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="k">if</span> <span class="n">segids</span> <span class="k">else</span> <span class="s2">&quot;   A&quot;</span>
+                <span class="n">segid2</span> <span class="o">=</span> <span class="n">segids</span><span class="p">[</span><span class="n">res_id</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span> <span class="k">if</span> <span class="n">segids</span> <span class="k">else</span> <span class="s2">&quot;   A&quot;</span>
+                <span class="n">xml_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">    &lt;contribution id=&quot;</span><span class="si">{id}</span><span class="s1">&quot; weight=&quot;</span><span class="si">{weight:.8f}</span><span class="s1">&quot;&gt;</span>
+<span class="s1">      &lt;spin_pair&gt;</span>
+<span class="s1">        &lt;atom segid=&quot;</span><span class="si">{res1_segid}</span><span class="s1">&quot; residue=&quot;</span><span class="si">{res1_pos}</span><span class="s1">&quot; name=&quot;</span><span class="si">{atm1_name}</span><span class="s1">&quot;/&gt;</span>
+<span class="s1">        &lt;atom segid=&quot;</span><span class="si">{res2_segid}</span><span class="s1">&quot; residue=&quot;</span><span class="si">{res2_pos}</span><span class="s1">&quot; name=&quot;</span><span class="si">{atm2_name}</span><span class="s1">&quot;/&gt;</span>
+<span class="s1">      &lt;/spin_pair&gt;</span>
+<span class="s1">    &lt;/contribution&gt;</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">contrib_id</span><span class="p">,</span> <span class="n">res1_segid</span><span class="o">=</span><span class="n">segid1</span><span class="p">,</span> <span class="n">res2_segid</span><span class="o">=</span><span class="n">segid2</span><span class="p">,</span>
+           <span class="n">weight</span><span class="o">=</span><span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">][</span><span class="s2">&quot;meta&quot;</span><span class="p">][</span>
+               <span class="s2">&quot;weight&quot;</span><span class="p">],</span>
+           <span class="n">res1_pos</span><span class="o">=</span><span class="n">res_id</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">res2_pos</span><span class="o">=</span><span class="n">res_id</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
+           <span class="n">atm1_name</span><span class="o">=</span><span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">][</span>
+               <span class="s2">&quot;spin_pair&quot;</span><span class="p">][</span><span class="n">res_id</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span>
+           <span class="n">atm2_name</span><span class="o">=</span><span class="n">dist_restraints</span><span class="p">[</span><span class="n">restraint_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">][</span>
+               <span class="s2">&quot;spin_pair&quot;</span><span class="p">][</span><span class="n">res_id</span><span class="p">[</span><span class="mi">1</span><span class="p">]]))</span>
+            <span class="n">xml_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">  &lt;/restraint&gt;</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="p">)</span>
+        <span class="n">xml_file</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">&lt;/distance_restraint_list&gt;</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="p">)</span></div>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_write_helix_hb_tbl</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sec_struct :</span>
+<span class="sd">            </span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+<span class="sd">        dminus :</span>
+<span class="sd">            </span>
+<span class="sd">        dplus :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;! Short range Hbond list (Alpha helix)&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">secstr</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">):</span>
+            <span class="k">if</span> <span class="p">(</span><span class="n">idx</span> <span class="o">+</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">):</span>
+                <span class="k">if</span> <span class="s1">&#39;H&#39;</span> <span class="ow">in</span> <span class="n">secstr</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="ow">and</span> <span class="s1">&#39;H&#39;</span> <span class="ow">in</span> <span class="n">sec_struct</span><span class="p">[</span><span class="n">idx</span> <span class="o">+</span> <span class="mi">4</span><span class="p">][</span><span class="mi">2</span><span class="p">]:</span>
+                    <span class="c1"># Si residus dans helice</span>
+                    <span class="n">res1</span> <span class="o">=</span> <span class="n">idx</span> <span class="o">+</span> <span class="mi">1</span>
+                    <span class="n">res2</span> <span class="o">=</span> <span class="n">idx</span> <span class="o">+</span> <span class="mi">5</span>
+                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">assign (resid </span><span class="si">{res1}</span><span class="s1"> and name o) (resid </span><span class="si">{res2}</span><span class="s1"> and name n)  2.8 </span><span class="si">{dminus}</span><span class="s1"> </span><span class="si">{dplus}</span><span class="s1"></span>
+<span class="s1">assign (resid </span><span class="si">{res1}</span><span class="s1"> and name o) (resid </span><span class="si">{res2}</span><span class="s1"> and name hn)  1.8 </span><span class="si">{dminus}</span><span class="s1"> </span><span class="si">{dplus}</span><span class="s1"></span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">res1</span><span class="o">=</span><span class="n">res1</span><span class="p">,</span> <span class="n">res2</span><span class="o">=</span><span class="n">res2</span><span class="p">,</span> <span class="n">dminus</span><span class="o">=</span><span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="o">=</span><span class="n">dplus</span><span class="p">))</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_write_hbmap_tbl</span><span class="p">(</span><span class="n">hbmap</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                         <span class="n">hb_type</span><span class="o">=</span><span class="s2">&quot;main&quot;</span><span class="p">,</span> <span class="n">topo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Build hbdond distance restraints from a res-res contact map. Tbl</span>
+<span class="sd">        restraints generated use pseudoatoms since we assume we don&#39;t know</span>
+<span class="sd">        which donnor/acceptor are involved.</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        hbmap :</span>
+<span class="sd">            Hbond contact map with first humanidx =  [&#39;donor&#39;,</span>
+<span class="sd">            &#39;acceptor&#39;] =&gt; Non symetric matrix !!!</span>
+<span class="sd">        outfile :</span>
+<span class="sd">            param dminus:</span>
+<span class="sd">        dplus :</span>
+<span class="sd">            param n_hb:</span>
+<span class="sd">        hb_type :</span>
+<span class="sd">            Long range hbond type (Default value = &quot;main&quot;)</span>
+<span class="sd">        dminus :</span>
+<span class="sd">            </span>
+<span class="sd">        n_hb :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        topo :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: test with several deviation since these restraints should</span>
+        <span class="c1"># contain noise !!</span>
+        <span class="c1"># Parcourt la matrice de contact</span>
+        <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">! Long range Hbond list (beta sheet)</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="p">)</span>
+        <span class="n">contacts</span> <span class="o">=</span> <span class="n">hbmap</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">sortedset</span><span class="p">(</span><span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+        <span class="c1"># distmap = hbmap.get(&quot;distmap&quot;)</span>
+        <span class="k">if</span> <span class="n">n_hb</span><span class="p">:</span>
+            <span class="n">contacts</span> <span class="o">=</span> <span class="n">contacts</span><span class="p">[:</span><span class="n">n_hb</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">contacts</span><span class="p">)</span>
+        <span class="n">donors</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">acces</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">:</span>
+            <span class="c1"># The first residu represent the hydrogen bond donor and the</span>
+            <span class="c1"># second residu represent the hydrogen bond acceptor</span>
+            <span class="n">res1</span><span class="p">,</span> <span class="n">res2</span> <span class="o">=</span> <span class="n">contact</span>
+            <span class="k">if</span> <span class="n">res1</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">donors</span> <span class="o">+</span> <span class="n">acces</span> <span class="ow">and</span> <span class="n">res2</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">donors</span> <span class="o">+</span> <span class="n">acces</span><span class="p">:</span>
+                <span class="c1"># Add only if new donor and new acces don&#39;t belong to</span>
+                <span class="c1"># previous hbond restraints</span>
+                <span class="n">donors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res1</span><span class="p">)</span>
+                <span class="n">acces</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res2</span><span class="p">)</span>
+                <span class="c1"># residx1, residx2 = int(res1) - 1, int(res2) - 1</span>
+                <span class="c1"># TODO: find a way to use dist</span>
+                <span class="c1"># dist = distmap.iat[(residx1, residx2)]</span>
+                <span class="k">if</span> <span class="n">hb_type</span> <span class="o">==</span> <span class="s2">&quot;all&quot;</span><span class="p">:</span>
+                    <span class="c1"># This method is deprecated seems it should add noise ...</span>
+                    <span class="c1"># if topo:</span>
+                    <span class="c1">#     print(topo)</span>
+                    <span class="c1">#     print(res1, res2)</span>
+                    <span class="c1">#     print(topo[residx1][1][&#39;dono&#39;])</span>
+                    <span class="c1">#     print(topo[residx2][1][&#39;acce&#39;])</span>
+                    <span class="c1">#     print([x[0] for x in topo])</span>
+                    <span class="c1">#     print(hbmap[&#39;maplot&#39;].sequence[residx1])</span>
+                    <span class="c1">#     print(hbmap[&#39;maplot&#39;].sequence[residx2])</span>
+                    <span class="c1">#     print(distmap.index[residx2])</span>
+                    <span class="c1">#     print(dist)</span>
+                    <span class="c1">#     print(hbmap[&quot;scoremap&quot;])</span>
+                    <span class="c1"># Get all donor from cns topology file and make group atom/pseudoatm</span>
+                    <span class="c1"># Get all acceptor from cns topology file</span>
+                    <span class="c1"># !!!! Ignore case flag !!!!!</span>
+                    <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="k">if</span> <span class="n">hb_type</span> <span class="o">!=</span> <span class="s2">&quot;main&quot;</span><span class="p">:</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Wrong longrange hbond type given. Default &quot;</span>
+                                  <span class="s2">&quot;option used (main)&quot;</span><span class="p">)</span>
+                    <span class="c1"># First residue = donor for a backbone hydrogen bond (N-H...O=C)</span>
+                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">    assign (resid </span><span class="si">{res1}</span><span class="s1"> and name o) (resid </span><span class="si">{res2}</span><span class="s1"> and name n)  2.8 </span><span class="si">{dminus}</span><span class="s1"> </span><span class="si">{dplus}</span><span class="s1"></span>
+<span class="s1">    assign (resid </span><span class="si">{res1}</span><span class="s1"> and name o) (resid </span><span class="si">{res2}</span><span class="s1"> and name hn)  1.8 </span><span class="si">{dminus}</span><span class="s1"> </span><span class="si">{dplus}</span><span class="s1"></span>
+<span class="s1">    &#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">res1</span><span class="o">=</span><span class="n">res1</span><span class="p">,</span> <span class="n">res2</span><span class="o">=</span><span class="n">res2</span><span class="p">,</span> <span class="n">dminus</span><span class="o">=</span><span class="n">dminus</span><span class="p">,</span>
+               <span class="n">dplus</span><span class="o">=</span><span class="n">dplus</span><span class="p">))</span>  <span class="c1"># , dist=dist))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing </span><span class="si">%d</span><span class="s2"> hbonds from hbmap in </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">donors</span><span class="p">),</span>
+                 <span class="n">outfile</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+
+<div class="viewcode-block" id="AriaXMLConverter.write_hb_tbl"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.write_hb_tbl">[docs]</a>    <span class="k">def</span> <span class="nf">write_hb_tbl</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">hbmap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dminus</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
+                     <span class="n">dplus</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lr_type</span><span class="o">=</span><span class="s1">&#39;main&#39;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein :</span>
+<span class="sd">            param outfile:</span>
+<span class="sd">        hbmap :</span>
+<span class="sd">            param dminus: (Default value = None)</span>
+<span class="sd">        dplus :</span>
+<span class="sd">            param n_hb: (Default value = 0.5)</span>
+<span class="sd">        lr_type :</span>
+<span class="sd">            return: (Default value = &#39;main&#39;)</span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+<span class="sd">        dminus :</span>
+<span class="sd">            (Default value = 0.0)</span>
+<span class="sd">        n_hb :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="c1"># Write short range hbond tbl restraints</span>
+            <span class="k">if</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_write_helix_hb_tbl</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span>
+                                         <span class="n">dminus</span><span class="p">,</span>
+                                         <span class="n">dplus</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">hbmap</span><span class="p">:</span>
+                <span class="c1"># TODO: add another flag in order to generate hbmap xml</span>
+                <span class="c1"># ambig. Tbl pseudoatoms is probably not the best way to use</span>
+                <span class="c1"># hbmap</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_write_hbmap_tbl</span><span class="p">(</span><span class="n">hbmap</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="p">,</span>
+                                      <span class="n">n_hb</span><span class="o">=</span><span class="n">n_hb</span><span class="p">,</span> <span class="n">hb_type</span><span class="o">=</span><span class="n">lr_type</span><span class="p">,</span>
+                                      <span class="n">topo</span><span class="o">=</span><span class="n">protein</span><span class="o">.</span><span class="n">topology</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.write_ssdist_tbl"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.write_ssdist_tbl">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">write_ssdist_tbl</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">,</span> <span class="n">ss_dist</span><span class="p">,</span> <span class="n">outfile</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sec_struct :</span>
+<span class="sd">            </span>
+<span class="sd">        ss_dist :</span>
+<span class="sd">            </span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Build global secondary structure distance restraints (H-H+4, E-E+1,</span>
+        <span class="c1">#  ...)</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param sec_struct:</span>
+<span class="sd">        :param ss_dist:</span>
+<span class="sd">        :param outfile:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">resid1</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
+                <span class="k">for</span> <span class="n">resid2</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">resid1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sec_struct</span><span class="p">)):</span>
+                    <span class="n">ss1</span> <span class="o">=</span> <span class="n">sec_struct</span><span class="p">[</span><span class="n">resid1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span>
+                    <span class="n">ss2</span> <span class="o">=</span> <span class="n">sec_struct</span><span class="p">[</span><span class="n">resid2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">ss1</span> <span class="o">!=</span> <span class="n">ss2</span><span class="p">)</span> <span class="ow">or</span> <span class="s1">&#39;C&#39;</span> <span class="ow">in</span> <span class="n">ss1</span> <span class="ow">or</span> <span class="s1">&#39;C&#39;</span> <span class="ow">in</span> <span class="n">ss2</span><span class="p">:</span>
+                        <span class="k">continue</span>
+                    <span class="k">else</span><span class="p">:</span>
+                        <span class="n">gap</span> <span class="o">=</span> <span class="n">resid2</span> <span class="o">-</span> <span class="n">resid1</span>  <span class="c1"># ecart en nombre de residus</span>
+                        <span class="n">ss_dict_key</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">,</span><span class="si">%s</span><span class="s1">+</span><span class="si">%d</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ss1</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">ss2</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">gap</span><span class="p">)</span>
+                        <span class="n">ss_dist_subdict</span> <span class="o">=</span> <span class="n">ss_dist</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">ss_dict_key</span><span class="p">)</span>
+                        <span class="k">if</span> <span class="n">ss_dist_subdict</span><span class="p">:</span>
+                            <span class="k">for</span> <span class="n">atoms</span><span class="p">,</span> <span class="p">(</span><span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span><span class="p">)</span> <span class="ow">in</span> <span class="n">ss_dist_subdict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+                                <span class="k">if</span> <span class="n">dist</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">sdev</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                                    <span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">atoms</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;-&#39;</span><span class="p">))</span>
+                                    <span class="n">res1</span> <span class="o">=</span> <span class="n">resid1</span> <span class="o">+</span> <span class="mi">1</span>
+                                    <span class="n">res2</span> <span class="o">=</span> <span class="n">resid2</span> <span class="o">+</span> <span class="mi">1</span>
+                                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">assign (resid </span><span class="si">{res1}</span><span class="s1"> and name </span><span class="si">{atm1}</span><span class="s1">) (resid </span><span class="si">{res2}</span><span class="s1"> and name </span><span class="si">{atm2}</span><span class="s1">)  </span><span class="si">{dist}</span><span class="s1"> </span><span class="si">{sdev}</span><span class="s1"> </span><span class="si">{sdev}</span><span class="s1"> weight 5</span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">res1</span><span class="o">=</span><span class="n">res1</span><span class="p">,</span> <span class="n">atm1</span><span class="o">=</span><span class="n">atm1</span><span class="p">,</span> <span class="n">res2</span><span class="o">=</span><span class="n">res2</span><span class="p">,</span> <span class="n">atm2</span><span class="o">=</span><span class="n">atm2</span><span class="p">,</span> <span class="n">dist</span><span class="o">=</span><span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span><span class="o">=</span><span class="n">sdev</span><span class="p">))</span></div>
+
+<div class="viewcode-block" id="AriaXMLConverter.write_dihedral_tbl"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaXMLConverter.write_dihedral_tbl">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">write_dihedral_tbl</span><span class="p">(</span><span class="n">secstructs</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">knrj</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">exp</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Build dihedral angle restraints (phi, psi) in tbl format</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        secstructs :</span>
+<span class="sd">            </span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+<span class="sd">        knrj :</span>
+<span class="sd">            (Default value = 0.5)</span>
+<span class="sd">        exp :</span>
+<span class="sd">            (Default value = 2)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outfile</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">secstructs</span><span class="p">)):</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">secstructs</span><span class="p">):</span>
+                    <span class="k">if</span> <span class="n">secstructs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="n">secstructs</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]:</span>
+                        <span class="c1"># Si ss identique</span>
+                        <span class="n">secstruct</span> <span class="o">=</span> <span class="n">secstructs</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                        <span class="n">res1</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
+                        <span class="n">res2</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span>
+
+                        <span class="k">if</span> <span class="n">secstruct</span> <span class="o">==</span> <span class="s1">&#39;H&#39;</span><span class="p">:</span>
+                            <span class="n">phi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">57.0</span>
+                            <span class="n">psi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">47.0</span>
+                            <span class="n">anglerange</span> <span class="o">=</span> <span class="mf">7.0</span>
+                        <span class="k">elif</span> <span class="n">secstruct</span> <span class="o">==</span> <span class="s1">&#39;E&#39;</span><span class="p">:</span>
+                            <span class="n">phi</span> <span class="o">=</span> <span class="o">-</span><span class="mf">127.0</span>
+                            <span class="n">psi</span> <span class="o">=</span> <span class="mf">122.0</span>
+                            <span class="n">anglerange</span> <span class="o">=</span> <span class="mf">20.0</span>
+                        <span class="k">else</span><span class="p">:</span>
+                            <span class="n">phi</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span> <span class="n">anglerange</span> <span class="o">=</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+
+                        <span class="k">if</span> <span class="n">phi</span> <span class="ow">and</span> <span class="n">psi</span><span class="p">:</span>
+                            <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="s1">assign (resid </span><span class="si">{res1}</span><span class="s1"> and name c) (resid </span><span class="si">{res2}</span><span class="s1"> and name n) (resid </span><span class="si">{res2}</span><span class="s1"> and name ca) </span><span class="se">\</span>
+<span class="s1">(resid </span><span class="si">{res2}</span><span class="s1"> and name c)  </span><span class="si">{k}</span><span class="s1"> </span><span class="si">{phi}</span><span class="s1"> </span><span class="si">{anglerange}</span><span class="s1"> </span><span class="si">{e}</span><span class="s1"></span>
+<span class="s1">assign (resid </span><span class="si">{res1}</span><span class="s1"> and name n) (resid </span><span class="si">{res1}</span><span class="s1"> and name ca) (resid </span><span class="si">{res1}</span><span class="s1"> and name c) </span><span class="se">\</span>
+<span class="s1">(resid </span><span class="si">{res2}</span><span class="s1"> and name n)  </span><span class="si">{k}</span><span class="s1"> </span><span class="si">{psi}</span><span class="s1"> </span><span class="si">{anglerange}</span><span class="s1"> </span><span class="si">{e}</span><span class="s1"></span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">res1</span><span class="o">=</span><span class="n">res1</span><span class="p">,</span> <span class="n">res2</span><span class="o">=</span><span class="n">res2</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="n">knrj</span><span class="p">,</span> <span class="n">phi</span><span class="o">=</span><span class="n">phi</span><span class="p">,</span> <span class="n">psi</span><span class="o">=</span><span class="n">psi</span><span class="p">,</span>
+           <span class="n">anglerange</span><span class="o">=</span><span class="n">anglerange</span><span class="p">,</span> <span class="n">e</span><span class="o">=</span><span class="n">exp</span><span class="p">))</span></div></div>
+
+
+<div class="viewcode-block" id="AriaEcXMLConverter"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter">[docs]</a><span class="k">class</span> <span class="nc">AriaEcXMLConverter</span><span class="p">(</span><span class="n">AriaXMLConverter</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;XML converter ariaec to aria&quot;&quot;&quot;</span>
+
+    <span class="c1"># TODO: use aria api instead to generate xml files</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">restraint_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AriaEcXMLConverter</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_write_hbmap_tbl</span><span class="p">(</span><span class="n">hbmap</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                         <span class="n">hb_type</span><span class="o">=</span><span class="s2">&quot;main&quot;</span><span class="p">,</span> <span class="n">topo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        hbmap :</span>
+<span class="sd">            </span>
+<span class="sd">        outfile :</span>
+<span class="sd">            </span>
+<span class="sd">        dminus :</span>
+<span class="sd">            </span>
+<span class="sd">        dplus :</span>
+<span class="sd">            </span>
+<span class="sd">        n_hb :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        hb_type :</span>
+<span class="sd">            (Default value = &quot;main&quot;)</span>
+<span class="sd">        topo :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">AriaXMLConverter</span><span class="o">.</span><span class="n">_write_hbmap_tbl</span><span class="p">(</span><span class="n">hbmap</span><span class="p">,</span> <span class="n">outfile</span><span class="p">,</span> <span class="n">dminus</span><span class="p">,</span> <span class="n">dplus</span><span class="p">)</span>
+
+    <span class="c1"># def atm_product(self, idx1, res1, idx2, res2, list_type=&quot;min&quot;, product=True):</span>
+    <span class="c1">#</span>
+    <span class="c1">#     &quot;&quot;&quot;</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#     Parameters</span>
+    <span class="c1">#     ----------</span>
+    <span class="c1">#     idx1 :</span>
+    <span class="c1">#     res1:</span>
+    <span class="c1">#     idx2 :</span>
+    <span class="c1">#     res2:</span>
+    <span class="c1">#     list_type :</span>
+    <span class="c1">#         type of atoms in the product (Default value = &quot;min&quot;)</span>
+    <span class="c1">#     product :</span>
+    <span class="c1">#     res1 :</span>
+    <span class="c1">#</span>
+    <span class="c1">#     res2 :</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#     Returns</span>
+    <span class="c1">#     -------</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#     &quot;&quot;&quot;</span>
+    <span class="c1">#</span>
+    <span class="c1">#     def resname(res):</span>
+    <span class="c1">#         &quot;&quot;&quot;</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#         Parameters</span>
+    <span class="c1">#         ----------</span>
+    <span class="c1">#         res :</span>
+    <span class="c1">#             return:</span>
+    <span class="c1">#</span>
+    <span class="c1">#         Returns</span>
+    <span class="c1">#         -------</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#         &quot;&quot;&quot;</span>
+    <span class="c1">#         return AminoAcid.AminoAcid(res)[0]</span>
+    <span class="c1">#</span>
+    <span class="c1">#     def min_filter(aa1, aa2, atms):</span>
+    <span class="c1">#         &quot;&quot;&quot;</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#         Parameters</span>
+    <span class="c1">#         ----------</span>
+    <span class="c1">#         aa1 : residue name 1</span>
+    <span class="c1">#</span>
+    <span class="c1">#         aa2 : residue name 2</span>
+    <span class="c1">#</span>
+    <span class="c1">#         atms : atom pair list of residue 1</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#         Returns</span>
+    <span class="c1">#         -------</span>
+    <span class="c1">#</span>
+    <span class="c1">#</span>
+    <span class="c1">#         &quot;&quot;&quot;</span>
+    <span class="c1">#         return [atm for atm in atms if atm in (</span>
+    <span class="c1">#             &#39;CA&#39;, &#39;CB&#39;,</span>
+    <span class="c1">#             self.settings.scsc_min[resname(aa1)][resname(aa2)][0])]</span>
+    <span class="c1">#</span>
+    <span class="c1">#     atms1 = self.molecule.get_chains()[0].getResidues()[idx1].atoms.keys()</span>
+    <span class="c1">#     atms2 = self.molecule.get_chains()[0].getResidues()[idx2].atoms.keys()</span>
+    <span class="c1">#</span>
+    <span class="c1">#     if list_type == &quot;min&quot;:</span>
+    <span class="c1">#         atms1 = min_filter(res1, res2, atms1)</span>
+    <span class="c1">#         atms2 = min_filter(res2, res1, atms2)</span>
+    <span class="c1">#     elif list_type == &quot;heavy&quot;:</span>
+    <span class="c1">#         atms1 = filter(ResAtmMap.heavy_reg.match, atms1)</span>
+    <span class="c1">#         atms2 = filter(ResAtmMap.heavy_reg.match, atms2)</span>
+    <span class="c1">#     elif list_type != &#39;all&#39;:</span>
+    <span class="c1">#         LOG.warning(&quot;Wrong pair_list option. Pair_list set to min&quot;)</span>
+    <span class="c1">#         atms1 = min_filter(res1, res2, atms1)</span>
+    <span class="c1">#         atms2 = min_filter(res2, res1, atms2)</span>
+    <span class="c1">#</span>
+    <span class="c1">#     if product:</span>
+    <span class="c1">#         return list(itertools.product(atms1, atms2))</span>
+    <span class="c1">#     else:</span>
+    <span class="c1">#         # Return atm1-atm2 list if both atoms are of the same type (except</span>
+    <span class="c1">#         # for min atom list with the side chain atom</span>
+    <span class="c1">#         return [</span>
+    <span class="c1">#             (atm1, atm2) for (atm1, atm2) in list(itertools.product(atms1, atms2))</span>
+    <span class="c1">#             if atm1 == atm2 or (</span>
+    <span class="c1">#                 atm1 not in (&#39;CA&#39;, &#39;CB&#39;)</span>
+    <span class="c1">#                 and atm2 not in (&#39;CA&#39;, &#39;CB&#39;))] if list_type == &#39;min&#39; else [</span>
+    <span class="c1">#             (atm1, atm2) for (atm1, atm2) in list(itertools.product(atms1, atms2))</span>
+    <span class="c1">#             if atm1 == atm2]</span>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.atm_list"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.atm_list">[docs]</a>    <span class="k">def</span> <span class="nf">atm_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span> <span class="n">list_type</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        idx1</span>
+<span class="sd">        res1</span>
+<span class="sd">        idx2</span>
+<span class="sd">        res2</span>
+<span class="sd">        list_type</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="k">def</span> <span class="nf">resname</span><span class="p">(</span><span class="n">res</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            res :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">res</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+        <span class="k">def</span> <span class="nf">min_filter</span><span class="p">(</span><span class="n">aa1</span><span class="p">,</span> <span class="n">aa2</span><span class="p">,</span> <span class="n">atms</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            aa1 : residue name 1</span>
+
+<span class="sd">            aa2 : residue name 2</span>
+
+<span class="sd">            atms : atom pair list of residue 1</span>
+
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="p">[</span><span class="n">atm</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="n">atms</span> <span class="k">if</span> <span class="n">atm</span> <span class="ow">in</span> <span class="p">(</span>
+                <span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">,</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">[</span><span class="n">resname</span><span class="p">(</span><span class="n">aa1</span><span class="p">)][</span><span class="n">resname</span><span class="p">(</span><span class="n">aa2</span><span class="p">)][</span><span class="mi">0</span><span class="p">])]</span>
+
+        <span class="n">atms1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">molecule</span><span class="o">.</span><span class="n">get_chains</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getResidues</span><span class="p">()[</span><span class="n">idx1</span><span class="p">]</span><span class="o">.</span><span class="n">atoms</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+        <span class="n">atms2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">molecule</span><span class="o">.</span><span class="n">get_chains</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getResidues</span><span class="p">()[</span><span class="n">idx2</span><span class="p">]</span><span class="o">.</span><span class="n">atoms</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+
+        <span class="k">if</span> <span class="n">list_type</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span><span class="p">:</span>
+            <span class="n">atms1</span> <span class="o">=</span> <span class="n">min_filter</span><span class="p">(</span><span class="n">res1</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span> <span class="n">atms1</span><span class="p">)</span>
+            <span class="n">atms2</span> <span class="o">=</span> <span class="n">min_filter</span><span class="p">(</span><span class="n">res2</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">list_type</span> <span class="o">==</span> <span class="s2">&quot;heavy&quot;</span><span class="p">:</span>
+            <span class="n">atms1</span> <span class="o">=</span> <span class="nb">filter</span><span class="p">(</span><span class="n">ResAtmMap</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">atms1</span><span class="p">)</span>
+            <span class="n">atms2</span> <span class="o">=</span> <span class="nb">filter</span><span class="p">(</span><span class="n">ResAtmMap</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">atms2</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">list_type</span> <span class="o">!=</span> <span class="s1">&#39;all&#39;</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Wrong pair_list option. Pair_list set to min&quot;</span><span class="p">)</span>
+            <span class="n">atms1</span> <span class="o">=</span> <span class="n">min_filter</span><span class="p">(</span><span class="n">res1</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span> <span class="n">atms1</span><span class="p">)</span>
+            <span class="n">atms2</span> <span class="o">=</span> <span class="n">min_filter</span><span class="p">(</span><span class="n">res2</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">atms1</span><span class="p">),</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">atms2</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.atm_product"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.atm_product">[docs]</a>    <span class="k">def</span> <span class="nf">atm_product</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">idx1</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span> <span class="n">list_type</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">,</span>
+                    <span class="n">adr_flag</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">product_type</span><span class="o">=</span><span class="s2">&quot;allvsall&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        product_type</span>
+<span class="sd">        adr_flag</span>
+<span class="sd">        idx1 :</span>
+<span class="sd">        res1:</span>
+<span class="sd">        idx2 :</span>
+<span class="sd">        res2:</span>
+<span class="sd">        list_type :</span>
+<span class="sd">            type of atoms in the product (Default value = &quot;min&quot;)</span>
+<span class="sd">        res1 :</span>
+
+<span class="sd">        res2 :</span>
+
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="k">def</span> <span class="nf">resname</span><span class="p">(</span><span class="n">res</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            res :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">res</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+        <span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">atm_list</span><span class="p">(</span><span class="n">idx1</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span>
+                                     <span class="n">list_type</span><span class="o">=</span><span class="n">list_type</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">adr_flag</span> <span class="ow">and</span> <span class="n">product_type</span> <span class="o">==</span> <span class="s2">&quot;same&quot;</span><span class="p">:</span>
+            <span class="c1"># We return here only minimized list with equal atoms</span>
+            <span class="c1"># Return atm1-atm2 list if both atoms are of the same type (except</span>
+            <span class="c1"># for min atom list with the side chain atom</span>
+            <span class="k">return</span> <span class="p">[[</span>
+                <span class="p">((</span><span class="n">idx1</span><span class="p">,</span> <span class="n">atm1</span><span class="p">),</span> <span class="p">(</span><span class="n">idx2</span><span class="p">,</span> <span class="n">atm2</span><span class="p">))</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))</span>
+                <span class="k">if</span> <span class="n">atm1</span> <span class="o">==</span> <span class="n">atm2</span> <span class="ow">or</span> <span class="p">(</span>
+                    <span class="n">atm1</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span>
+                    <span class="ow">and</span> <span class="n">atm2</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span>
+                <span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">[</span>
+                       <span class="n">resname</span><span class="p">(</span><span class="n">res1</span><span class="p">)][</span><span class="n">resname</span><span class="p">(</span><span class="n">res2</span><span class="p">)]],</span> <span class="p">]</span> <span class="k">if</span> <span class="n">list_type</span> <span class="o">==</span> <span class="s1">&#39;min&#39;</span> \
+                <span class="k">else</span> <span class="p">[[(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                       <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))</span>
+                       <span class="k">if</span> <span class="n">atm1</span> <span class="o">==</span> <span class="n">atm2</span><span class="p">],</span> <span class="p">]</span>
+        <span class="k">elif</span> <span class="n">adr_flag</span> <span class="ow">and</span> <span class="n">product_type</span> <span class="o">==</span> <span class="s2">&quot;onevsall&quot;</span><span class="p">:</span>
+            <span class="c1"># Nested list with combination between one atom against all</span>
+            <span class="c1"># other atoms in the other list</span>
+            <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+            <span class="k">for</span> <span class="n">atm1</span> <span class="ow">in</span> <span class="n">atms1</span><span class="p">:</span>
+                <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">([</span>
+                    <span class="p">((</span><span class="n">idx1</span><span class="p">,</span> <span class="n">atm1</span><span class="p">),</span> <span class="p">(</span><span class="n">idx2</span><span class="p">,</span> <span class="n">atm2</span><span class="p">))</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                    <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">([</span><span class="n">atm1</span><span class="p">],</span> <span class="n">atms2</span><span class="p">))])</span>
+            <span class="k">return</span> <span class="n">result</span>
+        <span class="k">elif</span> <span class="n">adr_flag</span> <span class="ow">and</span> <span class="n">product_type</span> <span class="o">==</span> <span class="s2">&quot;allvsall&quot;</span><span class="p">:</span>
+            <span class="c1"># ADR with allvsall</span>
+            <span class="k">return</span> <span class="p">[[</span>
+                <span class="p">((</span><span class="n">idx1</span><span class="p">,</span> <span class="n">atm1</span><span class="p">),</span> <span class="p">(</span><span class="n">idx2</span><span class="p">,</span> <span class="n">atm2</span><span class="p">))</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))],</span> <span class="p">]</span>
+        <span class="k">elif</span> <span class="ow">not</span> <span class="n">adr_flag</span> <span class="ow">and</span> <span class="n">product_type</span> <span class="o">==</span> <span class="s2">&quot;same&quot;</span><span class="p">:</span>
+            <span class="c1"># We return here only minimized list with equal atoms</span>
+            <span class="c1"># Return atm1-atm2 list if both atoms are of the same type (except</span>
+            <span class="c1"># for min atom list with the side chain atom</span>
+            <span class="k">return</span> <span class="p">[</span>
+                <span class="p">((</span><span class="n">idx1</span><span class="p">,</span> <span class="n">atm1</span><span class="p">),</span> <span class="p">(</span><span class="n">idx2</span><span class="p">,</span> <span class="n">atm2</span><span class="p">))</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))</span>
+                <span class="k">if</span> <span class="n">atm1</span> <span class="o">==</span> <span class="n">atm2</span> <span class="ow">or</span> <span class="p">(</span>
+                    <span class="n">atm1</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span>
+                    <span class="ow">and</span> <span class="n">atm2</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span>
+                        <span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">))</span> <span class="ow">or</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">[</span>
+                       <span class="n">resname</span><span class="p">(</span><span class="n">res1</span><span class="p">)][</span>
+                       <span class="n">resname</span><span class="p">(</span><span class="n">res2</span><span class="p">)]]</span> <span class="k">if</span> <span class="n">list_type</span> <span class="o">==</span> <span class="s1">&#39;min&#39;</span> <span class="k">else</span> <span class="p">[</span>
+                <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))</span>
+                <span class="k">if</span> <span class="n">atm1</span> <span class="o">==</span> <span class="n">atm2</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># Unambig restraints, we have only one list with all possible</span>
+            <span class="c1"># combination between atoms. No matter what kind of product type, it</span>
+            <span class="c1"># will be the same</span>
+            <span class="k">return</span> <span class="p">[</span>
+                <span class="p">((</span><span class="n">idx1</span><span class="p">,</span> <span class="n">atm1</span><span class="p">),</span> <span class="p">(</span><span class="n">idx2</span><span class="p">,</span> <span class="n">atm2</span><span class="p">))</span> <span class="k">for</span> <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="ow">in</span>
+                <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">product</span><span class="p">(</span><span class="n">atms1</span><span class="p">,</span> <span class="n">atms2</span><span class="p">))]</span></div>
+
+    <span class="k">def</span> <span class="nf">_pdbdistmaps</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="c1"># TODO: use precision level, actually we only use SsAaAtmMaps</span>
+        <span class="n">precision_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+            <span class="s2">&quot;pdbdistance_level&quot;</span><span class="p">,</span> <span class="s2">&quot;ss&quot;</span><span class="p">)</span>
+        <span class="n">atom_types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;atoms_type&quot;</span><span class="p">,</span> <span class="s2">&quot;min&quot;</span><span class="p">)</span>
+
+        <span class="c1"># TODO: Do the same for heavy matrices, it is actually hard coded to min</span>
+        <span class="c1"># matrices sinces we only have this kind of information in data/pdbdists</span>
+        <span class="n">pdbstasts_groups</span> <span class="o">=</span> <span class="p">(</span>
+            <span class="p">(</span><span class="s1">&#39;INTERLOWERBOUNDS&#39;</span><span class="p">,</span> <span class="s1">&#39;interlowerbounds_pdbstat&#39;</span><span class="p">),</span>
+            <span class="p">(</span><span class="s1">&#39;INTERTARGET&#39;</span><span class="p">,</span> <span class="s1">&#39;intertarget_pdbstat&#39;</span><span class="p">),</span>
+            <span class="p">(</span><span class="s1">&#39;INTERUPPERBOUNDS&#39;</span><span class="p">,</span> <span class="s1">&#39;interupperbounds_pdbstat&#39;</span><span class="p">),</span>
+            <span class="p">(</span><span class="s1">&#39;INTRALOWERBOUNDS&#39;</span><span class="p">,</span> <span class="s1">&#39;intralowerbounds_pdbstat&#39;</span><span class="p">),</span>
+            <span class="p">(</span><span class="s1">&#39;INTRATARGET&#39;</span><span class="p">,</span> <span class="s1">&#39;intratarget_pdbstat&#39;</span><span class="p">),</span>
+            <span class="p">(</span><span class="s1">&#39;INTRAUPPERBOUNDS&#39;</span><span class="p">,</span> <span class="s1">&#39;intraupperbounds_pdbstat&#39;</span><span class="p">)</span>
+        <span class="p">)</span>
+        <span class="n">pdbdistmaps</span> <span class="o">=</span> <span class="p">{}</span>
+
+        <span class="k">for</span> <span class="n">pdbstasts_group</span> <span class="ow">in</span> <span class="n">pdbstasts_groups</span><span class="p">:</span>
+            <span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pdbstasts_group</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+            <span class="n">pkgpath</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">,</span> <span class="n">pdbstasts_group</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+            <span class="c1"># TODO: ONLY MIN PAIR ATOMS FOR TARGET PDB DIST</span>
+            <span class="n">targetmap</span> <span class="o">=</span> <span class="n">SsAaAtmMap</span><span class="p">(</span><span class="n">atom_types</span><span class="o">=</span><span class="n">atom_types</span><span class="p">)</span>
+
+            <span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">path</span><span class="p">:</span>
+                <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">pkgpath</span><span class="p">)</span> <span class="k">as</span> <span class="n">pkgfile</span><span class="p">:</span>
+                    <span class="n">pdbdistmap</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">pkgfile</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="k">as</span> <span class="n">pdbdistmapfile</span><span class="p">:</span>
+                        <span class="n">pdbdistmap</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">pdbdistmapfile</span><span class="p">)</span>
+                <span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span>
+                    <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">pkgpath</span><span class="p">)</span> <span class="k">as</span> <span class="n">pkgfile</span><span class="p">:</span>
+                        <span class="n">pdbdistmap</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">pkgfile</span><span class="p">)</span>
+
+            <span class="n">pdbdistmap</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">pdbdistmap</span><span class="p">)</span>
+            <span class="c1"># We do not want 0. values here ...</span>
+            <span class="n">pdbdistmap</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">NaN</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">pdbdistmap</span><span class="o">.</span><span class="n">columns</span><span class="o">.</span><span class="n">set_names</span><span class="p">(</span>
+                <span class="p">[</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">],</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">pdbdistmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">set_names</span><span class="p">(</span>
+                <span class="p">[</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">],</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">pdbdistmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">pdbdistmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">targetmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">targetmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">(</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="n">targetmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">pdbdistmap</span><span class="p">[:]</span>
+            <span class="c1"># # TODO: Find a way to rearrange index or</span>
+            <span class="n">pdbdistmaps</span><span class="p">[</span><span class="n">pdbstasts_group</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">targetmap</span>
+
+        <span class="k">return</span> <span class="n">pdbdistmaps</span>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.neighcontact"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.neighcontact">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">neighcontact</span><span class="p">(</span><span class="n">contact</span><span class="p">,</span> <span class="n">maxidx</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contact: tuple object</span>
+<span class="sd">        maxidx: int</span>
+<span class="sd">        offset: int</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">neighcontacts</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="c1"># Add N - 1 contact</span>
+        <span class="k">if</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">offset</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">contact</span><span class="p">:</span>
+            <span class="n">neighcontacts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
+        <span class="n">neighcontacts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+        <span class="c1"># Add N + 1 contact</span>
+        <span class="k">if</span> <span class="n">maxidx</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">contact</span><span class="p">:</span>
+            <span class="n">neighcontacts</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">neighcontacts</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.neighcontacts"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.neighcontacts">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">neighcontacts</span><span class="p">(</span><span class="n">contacts</span><span class="p">,</span> <span class="n">maxidx</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contacts: list of tuple</span>
+<span class="sd">        maxidx: int</span>
+<span class="sd">            Maximum index value in pairs</span>
+<span class="sd">        offset: int</span>
+<span class="sd">            If indexes in pairs start by 0 or 0 + offset</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">neighcontacts</span> <span class="o">=</span> <span class="p">[]</span>
+
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">:</span>
+            <span class="n">neighcontacts</span> <span class="o">+=</span> <span class="n">AriaEcXMLConverter</span><span class="o">.</span><span class="n">neighcontact</span><span class="p">(</span>
+                <span class="n">contact</span><span class="p">,</span> <span class="n">maxidx</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">neighcontacts</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.targetdistmaps"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.targetdistmaps">[docs]</a>    <span class="k">def</span> <span class="nf">targetdistmaps</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">distfile</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        distfile :</span>
+<span class="sd">            param groupby: (Default value = None)</span>
+<span class="sd">        sequence :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: valeur par defaut de distfile au  fichier contenant les infos</span>
+        <span class="c1">#  fixes</span>
+        <span class="c1"># ! target est une ResAtmMap pour les 20 aa, sinon il s&#39;agit d&#39;une</span>
+        <span class="c1"># carte de distance (native ou predite)</span>
+        <span class="c1"># Fixed</span>
+        <span class="c1"># -----</span>
+        <span class="c1">#   =&gt; target contient des infos pour les 20 aa qui modifieront le champ</span>
+        <span class="c1">#      distance de la contrainte</span>
+        <span class="c1">#   =&gt; AaAtmMap (20 aa) OU AtmMap</span>
+        <span class="c1"># pdbstat</span>
+        <span class="c1"># -------</span>
+        <span class="c1">#   =&gt; target contient des infos pour les 20 aa. Ces valeurs</span>
+        <span class="c1">#      correspondant au mode des distribution des structures de haute</span>
+        <span class="c1">#      resolution.</span>
+        <span class="c1">#   =&gt; Construire Maps en fonction des modes des distribution</span>
+        <span class="c1">#   =&gt; SsAaAtmMap (Ajout info structure secondaire) OU AaAtmMap (20</span>
+        <span class="c1"># aa) OU AaMap (20 aa) OU AtmMap pour les 20 aa</span>
+        <span class="c1"># distfile</span>
+        <span class="c1"># ---------</span>
+        <span class="c1">#   =&gt; target contient les infos de distances predites en fonction</span>
+        <span class="c1"># des positions</span>
+        <span class="c1">#   =&gt; ResMap (contacts pdb ou predits)</span>
+
+        <span class="c1"># 2 solutions when we use pdbstat:</span>
+        <span class="c1">#</span>
+        <span class="n">targetmaps</span> <span class="o">=</span> <span class="p">{</span>
+            <span class="s1">&#39;INTERLOWERBOUNDS&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+            <span class="s1">&#39;INTERTARGET&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+            <span class="s1">&#39;INTERUPPERBOUNDS&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+            <span class="s1">&#39;INTRALOWERBOUNDS&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+            <span class="s1">&#39;INTRATARGET&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+            <span class="s1">&#39;INTRAUPPERBOUNDS&#39;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">}</span>
+        <span class="n">distype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distance_type&quot;</span><span class="p">,</span> <span class="s2">&quot;fixed&quot;</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">distype</span> <span class="o">==</span> <span class="s2">&quot;distfile&quot;</span> <span class="ow">and</span> <span class="n">distfile</span><span class="p">:</span>
+            <span class="c1"># Retourne ResAtmMap associe au fichier de distance pdb</span>
+            <span class="n">targetmaps</span><span class="p">[</span><span class="s1">&#39;INTERTARGET&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">distfile</span><span class="o">.</span><span class="n">mapdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;alldistmap&#39;</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">distype</span> <span class="o">==</span> <span class="s2">&quot;fixed&quot;</span><span class="p">:</span>
+            <span class="c1"># Fixed distances with bound in aria_ec.ini</span>
+            <span class="c1"># retourne ResAtmMap (20 aa)</span>
+            <span class="c1"># targetmap = ResAtmMap(sequence)</span>
+            <span class="c1"># targetmap[:] = self.settings.setup.config[&quot;restraint_distance&quot;]</span>
+            <span class="c1"># targetmaps[&#39;INTERTARGET&#39;] = targetmap</span>
+            <span class="n">targetmaps</span><span class="p">[</span><span class="s1">&#39;INTERTARGET&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                <span class="s2">&quot;restraint_distance&quot;</span><span class="p">]</span>
+        <span class="k">elif</span> <span class="n">distype</span> <span class="o">==</span> <span class="s2">&quot;pdbstat&quot;</span><span class="p">:</span>
+            <span class="c1"># TODO: pdbstats a partir d&#39;une matrice pickle (faire une</span>
+            <span class="c1"># fonction qui genere la matrice en dehors et la sauvegarde</span>
+            <span class="c1"># dans le dossier data)</span>
+            <span class="c1"># Met a jour les valeurs de targetmaps en fonction de celles dispo</span>
+            <span class="c1">#  dans pdbstat</span>
+
+            <span class="c1"># settings = self.settings.setup.config</span>
+            <span class="c1"># pdbdict = {atmbound.replace(&#39;_upper_bound&#39;, &#39;&#39;): settings.get(</span>
+            <span class="c1">#     atmbound, None) for atmbound in (bound for bound in settings</span>
+            <span class="c1">#                                      if &#39;_upper_bound&#39; in bound.lower())}</span>
+            <span class="c1"># targetmaps.subfill(pdbdict, level=1)</span>
+            <span class="c1"># targetmaps = SsAaAtmMap()</span>
+            <span class="n">targetmaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pdbdistmaps</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># retourne fixed AtmMap</span>
+            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Unknown distance_type </span><span class="si">%s</span><span class="s2"> or wrong distance file&quot;</span> <span class="o">%</span>
+                             <span class="n">distype</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">targetmaps</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.get_dist"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.get_dist">[docs]</a>    <span class="k">def</span> <span class="nf">get_dist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distmap</span><span class="p">,</span> <span class="n">contribs</span><span class="p">,</span> <span class="n">defaultdist</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span>
+                 <span class="n">groupby</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get target distance from distance map</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        distmap</span>
+<span class="sd">        contribs</span>
+<span class="sd">        defaultdist</span>
+<span class="sd">        protein</span>
+<span class="sd">        groupby</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="k">def</span> <span class="nf">resname</span><span class="p">(</span><span class="n">res</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            res :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">res</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
+
+        <span class="n">distype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distance_type&quot;</span><span class="p">,</span> <span class="s2">&quot;fixed&quot;</span><span class="p">)</span>
+        <span class="n">groupby</span> <span class="o">=</span> <span class="n">groupby</span> <span class="k">if</span> <span class="n">groupby</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+            <span class="s2">&quot;groupby_method&quot;</span><span class="p">]</span>
+        <span class="c1"># TODO: Avoid reduce call if possible (slow)</span>
+        <span class="k">if</span> <span class="n">distype</span> <span class="o">!=</span> <span class="s2">&quot;fixed&quot;</span><span class="p">:</span>
+            <span class="n">distmap</span> <span class="o">=</span> <span class="n">distmap</span> <span class="k">if</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span> <span class="k">else</span> <span class="n">distmap</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span>
+                <span class="n">groupby</span><span class="o">=</span><span class="n">groupby</span><span class="p">)</span>
+        <span class="c1"># Definir le type de la carte Puis</span>
+        <span class="c1"># Calculer l&#39;index relatif a la paire ou la liste de paires d&#39;atomes</span>
+        <span class="n">dist_list</span> <span class="o">=</span> <span class="p">[]</span>
+
+        <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">distmap</span><span class="p">)</span> <span class="o">==</span> <span class="n">ResAtmMap</span> <span class="ow">and</span> \
+                        <span class="n">distmap</span><span class="o">.</span><span class="n">sequence</span> <span class="o">==</span> <span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="n">contribs</span><span class="p">:</span>
+                <span class="n">mapidx_x</span> <span class="o">=</span> <span class="n">distmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">levels</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]]</span>
+                <span class="n">mapidx_y</span> <span class="o">=</span> <span class="n">distmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">levels</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]]</span>
+                <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">distmap</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span>
+                                     <span class="n">mapidx_x</span><span class="p">,</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]][</span>
+                                     <span class="n">mapidx_y</span><span class="p">,</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]])</span>
+        <span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">distmap</span><span class="p">)</span> <span class="o">==</span> <span class="n">SsAaAtmMap</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="p">:</span>
+            <span class="c1"># TODO: Actually only inter distances used</span>
+            <span class="c1"># TODO: Works only with minimal target map (with CA, CB, SC indexes)</span>
+            <span class="k">for</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="n">contribs</span><span class="p">:</span>
+                <span class="n">residx1</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">res1</span> <span class="o">=</span> <span class="n">resname</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx1</span><span class="p">])</span>
+                <span class="n">atm1</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">atm1</span> <span class="o">=</span> <span class="n">atm1</span> <span class="k">if</span> <span class="n">atm1</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;SC&#39;</span>
+                <span class="n">residx2</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">res2</span> <span class="o">=</span> <span class="n">resname</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx2</span><span class="p">])</span>
+                <span class="n">atm2</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">atm2</span> <span class="o">=</span> <span class="n">atm2</span> <span class="k">if</span> <span class="n">atm2</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;SC&#39;</span>
+                <span class="n">idx1</span> <span class="o">=</span> <span class="n">res1</span><span class="p">,</span> <span class="n">atm1</span>
+                <span class="n">idx2</span> <span class="o">=</span> <span class="n">res2</span><span class="p">,</span> <span class="n">atm2</span>
+                <span class="n">dist</span> <span class="o">=</span> <span class="n">distmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">()</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx1</span><span class="p">][</span><span class="n">idx2</span><span class="p">]</span>
+                <span class="n">dist</span> <span class="o">=</span> <span class="n">dist</span> <span class="k">if</span> <span class="n">pd</span><span class="o">.</span><span class="n">notnull</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dist</span> <span class="o">!=</span> <span class="mf">0.</span> <span class="k">else</span> \
+                    <span class="n">distmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">()</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx2</span><span class="p">][</span><span class="n">idx1</span><span class="p">]</span>
+                <span class="k">if</span> <span class="n">pd</span><span class="o">.</span><span class="n">notnull</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dist</span> <span class="o">!=</span> <span class="mf">0.</span><span class="p">:</span>
+                    <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">defaultdist</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">distmap</span><span class="p">)</span> <span class="o">==</span> <span class="n">SsAaAtmMap</span><span class="p">:</span>
+            <span class="c1"># TODO: Actually only inter distances used</span>
+            <span class="c1"># TODO: Works only with minimal target map (with CA, CB, SC indexes)</span>
+            <span class="k">for</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="n">contribs</span><span class="p">:</span>
+                <span class="n">residx1</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">res1</span> <span class="o">=</span> <span class="n">resname</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx1</span><span class="p">])</span>
+                <span class="n">atm1</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">atm1</span> <span class="o">=</span> <span class="n">atm1</span> <span class="k">if</span> <span class="n">atm1</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;SC&#39;</span>
+                <span class="n">ss1</span> <span class="o">=</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">ss1</span> <span class="o">=</span> <span class="n">ss1</span> <span class="k">if</span> <span class="n">ss1</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;E&#39;</span><span class="p">,</span> <span class="s1">&#39;H&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;X&#39;</span>
+                <span class="n">residx2</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">res2</span> <span class="o">=</span> <span class="n">resname</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx2</span><span class="p">])</span>
+                <span class="n">atm2</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">atm2</span> <span class="o">=</span> <span class="n">atm2</span> <span class="k">if</span> <span class="n">atm2</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;SC&#39;</span>
+                <span class="n">ss2</span> <span class="o">=</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="n">residx2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                <span class="n">ss2</span> <span class="o">=</span> <span class="n">ss2</span> <span class="k">if</span> <span class="n">ss2</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;E&#39;</span><span class="p">,</span> <span class="s1">&#39;H&#39;</span><span class="p">)</span> <span class="k">else</span> <span class="s1">&#39;X&#39;</span>
+                <span class="n">idx1</span> <span class="o">=</span> <span class="n">ss1</span><span class="p">,</span> <span class="n">res1</span><span class="p">,</span> <span class="n">atm1</span>
+                <span class="n">idx2</span> <span class="o">=</span> <span class="n">ss2</span><span class="p">,</span> <span class="n">res2</span><span class="p">,</span> <span class="n">atm2</span>
+                <span class="n">dist</span> <span class="o">=</span> <span class="n">distmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">()</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx1</span><span class="p">][</span><span class="n">idx2</span><span class="p">]</span>
+                <span class="n">dist</span> <span class="o">=</span> <span class="n">dist</span> <span class="k">if</span> <span class="n">pd</span><span class="o">.</span><span class="n">notnull</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dist</span> <span class="o">!=</span> <span class="mf">0.</span> <span class="k">else</span> \
+                    <span class="n">distmap</span><span class="o">.</span><span class="n">sort_index</span><span class="p">()</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx2</span><span class="p">][</span><span class="n">idx1</span><span class="p">]</span>
+                <span class="k">if</span> <span class="n">pd</span><span class="o">.</span><span class="n">notnull</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span> <span class="ow">and</span> <span class="n">dist</span> <span class="o">!=</span> <span class="mf">0.</span><span class="p">:</span>
+                    <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dist</span><span class="p">)</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">defaultdist</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">distmap</span><span class="p">)</span> <span class="o">==</span> <span class="n">ResMap</span> <span class="ow">and</span> \
+                        <span class="n">distmap</span><span class="o">.</span><span class="n">sequence</span> <span class="o">==</span> <span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="n">contribs</span><span class="p">:</span>
+                <span class="n">dist_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%.2f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">distmap</span><span class="o">.</span><span class="n">iat</span><span class="p">[</span>
+                    <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]])</span>
+        <span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">distmap</span><span class="p">)</span> <span class="o">==</span> <span class="nb">float</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">distmap</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">defaultdist</span>
+
+        <span class="c1"># Retourner la distance si elle est unique ou une valeur utilisant la</span>
+        <span class="c1"># methode groupby</span>
+        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dist_list</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">dist_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;deff&quot;</span><span class="p">:</span>
+            <span class="c1"># Compute effective distance from distance list between</span>
+            <span class="c1"># all pairs in the adr</span>
+            <span class="k">return</span> <span class="s2">&quot;</span><span class="si">%.2f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">deff</span><span class="p">(</span><span class="n">dist_list</span><span class="p">,</span>
+                                      <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;deffpow&quot;</span><span class="p">])</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;mean&quot;</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">dist_list</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span><span class="p">:</span>
+            <span class="k">return</span> <span class="nb">min</span><span class="p">(</span><span class="n">dist_list</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">defaultdist</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.write_map_restraint"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.write_map_restraint">[docs]</a>    <span class="k">def</span> <span class="nf">write_map_restraint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">contactmap</span><span class="p">,</span> <span class="n">nb_c</span><span class="p">,</span> <span class="n">targetdists</span><span class="p">,</span>
+                            <span class="n">scoremap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">listname</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Translate maplot in ARIA XML restraint</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein</span>
+<span class="sd">        listname :</span>
+<span class="sd">            param contactmap: ResAtmMap for a protein (Default value = &quot;&quot;)</span>
+<span class="sd">        nb_c :</span>
+<span class="sd">            Number of restraints selected</span>
+<span class="sd">        targetdists : dict</span>
+<span class="sd">            ResAtmMap for each atom for each amino acid</span>
+<span class="sd">        scoremap :</span>
+<span class="sd">            sorted list of contacts (Default value = None)</span>
+<span class="sd">        contactmap :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="k">if</span> <span class="n">scoremap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="c1"># TODO: implement viterbiscore as scoremap for bbcontacts ?</span>
+            <span class="n">contacts</span> <span class="o">=</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">sortedset</span><span class="p">()[:</span><span class="n">nb_c</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># TODO: Probleme selection des contacts utilises en l&#39;absence de</span>
+            <span class="c1"># poids:</span>
+            <span class="c1">#       - aleatoire (implementation actuelle) =&gt; Tester la</span>
+            <span class="c1"># robustesse</span>
+            <span class="c1">#       - trouver une maniere d&#39;attribuer des poids dans le cas</span>
+            <span class="c1"># d&#39;une matrice de distance d&#39;un pdb ?</span>
+            <span class="c1">#       - Def le max independent set dans le graphe (matrice de</span>
+            <span class="c1"># contacts) =&gt; utiliser tout les contact de ce set ou def des</span>
+            <span class="c1"># poids  pour selectionner l * f contacts de ce set</span>
+            <span class="k">if</span> <span class="n">nb_c</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">contactmap</span><span class="o">.</span><span class="n">contactset</span><span class="p">()):</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
+                    <span class="s2">&quot;Initialize sampling for contact selection with seed </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;seed&#39;</span><span class="p">])</span>
+                <span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;seed&#39;</span><span class="p">])</span>
+                <span class="n">contacts</span> <span class="o">=</span> <span class="n">random</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">contactmap</span><span class="o">.</span><span class="n">contactset</span><span class="p">(),</span> <span class="n">nb_c</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using all contacts&quot;</span><span class="p">)</span>
+                <span class="n">contacts</span> <span class="o">=</span> <span class="n">contactmap</span><span class="o">.</span><span class="n">contactset</span><span class="p">()[:]</span>
+
+        <span class="n">hum_list</span> <span class="o">=</span> <span class="p">[(</span><span class="n">con1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">con2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">con1</span><span class="p">,</span> <span class="n">con2</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Selecting </span><span class="si">%d</span><span class="s2"> contacts&quot;</span><span class="p">,</span> <span class="n">nb_c</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">textwrap</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span>
+            <span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">&quot;(</span><span class="si">%2d</span><span class="s2">, </span><span class="si">%2d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">pair</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">hum_list</span><span class="p">]),</span> <span class="n">width</span><span class="o">=</span><span class="mi">80</span><span class="p">)))</span>
+
+        <span class="n">weight_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="mf">10.0</span> <span class="o">/</span> <span class="p">(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span>
+            <span class="n">contacts</span><span class="p">))</span> <span class="k">if</span> \
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;evfold_weight&#39;</span><span class="p">]</span> <span class="ow">and</span> \
+            <span class="n">scoremap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">list</span><span class="p">(</span><span class="mf">1.0</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">)</span>
+
+        <span class="n">neigh_flag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;neighborhood_contact&#39;</span><span class="p">]</span>
+        <span class="n">adr_flag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;ambiguous_distance_restraint&quot;</span><span class="p">]</span>
+        <span class="n">contribs_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;contributions_type&quot;</span><span class="p">]</span>
+        <span class="n">atms_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;atoms_type&quot;</span><span class="p">]</span>
+        <span class="n">default_target_dist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;restraint_distance&quot;</span><span class="p">]</span>
+        <span class="c1"># TODO: Lower bound and upper bound matrix not used actually...</span>
+        <span class="n">targetdistmap</span> <span class="o">=</span> <span class="n">targetdists</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;INTERTARGET&#39;</span><span class="p">)</span>
+        <span class="n">nat_reliable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;native_reliable&quot;</span><span class="p">]</span>
+
+        <span class="k">def</span> <span class="nf">resname_3l</span><span class="p">(</span><span class="n">residx</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">            </span>
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            residx :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+<span class="sd">            </span>
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">contactmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="n">residx</span><span class="p">][</span><span class="o">-</span><span class="mi">3</span><span class="p">:])[</span><span class="mi">1</span><span class="p">]</span>
+
+        <span class="n">max_seqidx</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">contactmap</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
+        <span class="n">restraint_dict</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">()</span>
+        <span class="n">rest_id</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">contrib_id</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">tqdm_out</span> <span class="o">=</span> <span class="n">TqdmToLogger</span><span class="p">(</span><span class="n">LOG</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">contactidx</span><span class="p">,</span> <span class="n">subcontacts</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span>
+                <span class="n">tqdm</span><span class="p">(</span><span class="n">contacts</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">tqdm_out</span><span class="p">,</span> <span class="n">mininterval</span><span class="o">=</span><span class="mf">1.</span><span class="p">)):</span>
+
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Writing restraint related to contact </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span>
+                      <span class="nb">str</span><span class="p">((</span><span class="n">subcontacts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">subcontacts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)))</span>
+            <span class="c1"># Get weight related to the contact</span>
+            <span class="n">contactweight</span> <span class="o">=</span> <span class="n">weight_list</span><span class="p">[</span><span class="n">contactidx</span><span class="p">]</span>
+
+            <span class="c1"># Define Residue lists for the contact. Those lists contains</span>
+            <span class="c1"># normally only one element by default except if we introduce</span>
+            <span class="c1"># neighbors with neigh_flag triggered</span>
+            <span class="n">subcontacts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">neighcontact</span><span class="p">(</span><span class="n">subcontacts</span><span class="p">,</span>
+                                            <span class="n">max_seqidx</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="n">neigh_flag</span> \
+                <span class="k">else</span> <span class="p">[</span><span class="n">subcontacts</span><span class="p">]</span>
+
+            <span class="c1"># Define list of atom pairs</span>
+            <span class="n">contribs_lists</span> <span class="o">=</span> <span class="p">[]</span>
+            <span class="c1"># Compute all lists of atompair related to the contact</span>
+            <span class="k">for</span> <span class="n">subcontact</span> <span class="ow">in</span> <span class="n">subcontacts</span><span class="p">:</span>
+                <span class="n">contribs_lists</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">atm_product</span><span class="p">(</span>
+                    <span class="n">subcontact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">resname_3l</span><span class="p">(</span><span class="n">subcontact</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">subcontact</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
+                    <span class="n">resname_3l</span><span class="p">(</span><span class="n">subcontact</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="n">list_type</span><span class="o">=</span><span class="n">atms_type</span><span class="p">,</span>
+                    <span class="n">adr_flag</span><span class="o">=</span><span class="n">adr_flag</span><span class="p">,</span> <span class="n">product_type</span><span class="o">=</span><span class="n">contribs_type</span><span class="p">)</span>
+
+            <span class="c1"># We have a unique atmpair list, trick to have a unique loop for</span>
+            <span class="c1"># all kind of restraints in the following</span>
+            <span class="n">contribs_lists</span> <span class="o">=</span> <span class="p">[</span>
+                <span class="n">contribs_lists</span><span class="p">,</span> <span class="p">]</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">adr_flag</span> <span class="k">else</span> <span class="n">contribs_lists</span>
+
+            <span class="c1"># If ADR, build a restraint with contributions containing</span>
+            <span class="c1"># all atom pair in atmpairs =&gt; Get 1 target distance related to</span>
+            <span class="c1"># atmpairs list</span>
+            <span class="c1"># Else unambig, build a restraint with one contribution get a</span>
+            <span class="c1"># target distance for each atom pair</span>
+            <span class="k">for</span> <span class="n">contribs_list</span> <span class="ow">in</span> <span class="n">contribs_lists</span><span class="p">:</span>
+                <span class="n">rest_id</span> <span class="o">+=</span> <span class="mi">1</span>
+                <span class="c1"># For each atom list (only one list normally if unambig restraints)</span>
+                <span class="c1"># If adr flag, each list is a contribution list for one restraint</span>
+
+                <span class="k">for</span> <span class="n">contrib_idx</span><span class="p">,</span> <span class="n">contrib</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">contribs_list</span><span class="p">):</span>
+
+                    <span class="n">res1_idx</span><span class="p">,</span> <span class="n">atm1</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+                    <span class="n">res2_idx</span><span class="p">,</span> <span class="n">atm2</span> <span class="o">=</span> <span class="n">contrib</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+
+                    <span class="c1"># Increment restraint id if not adr else keep the same</span>
+                    <span class="c1"># restraint id for the actual contribution list</span>
+                    <span class="n">rest_id</span> <span class="o">=</span> <span class="n">rest_id</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">contrib_idx</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">adr_flag</span> <span class="k">else</span> <span class="n">rest_id</span>
+                    <span class="c1"># Increment contribution id if adr else reset to 1</span>
+                    <span class="n">contrib_id</span> <span class="o">=</span> <span class="n">contrib_id</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">contrib_idx</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">adr_flag</span> <span class="k">else</span> <span class="mi">1</span>
+
+                    <span class="n">lower_bound</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;lower_bound&quot;</span><span class="p">])</span>
+                    <span class="n">targetdist</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">get_dist</span><span class="p">(</span><span class="n">targetdistmap</span><span class="p">,</span> <span class="n">contribs_list</span><span class="p">,</span>
+                                      <span class="n">default_target_dist</span><span class="p">,</span> <span class="n">protein</span><span class="p">))</span> <span class="k">if</span> \
+                        <span class="n">adr_flag</span> <span class="k">else</span> <span class="nb">float</span><span class="p">(</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">get_dist</span><span class="p">(</span><span class="n">targetdistmap</span><span class="p">,</span> <span class="p">[</span><span class="n">contrib</span><span class="p">],</span>
+                                      <span class="n">default_target_dist</span><span class="p">,</span> <span class="n">protein</span><span class="p">))</span>
+                    <span class="n">upper_bound</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;ca_upper_bound&quot;</span><span class="p">])</span> <span class="k">if</span> \
+                        <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">,</span> <span class="s2">&quot;CA&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">adr_flag</span> <span class="k">else</span> \
+                        <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;cb_upper_bound&quot;</span><span class="p">])</span> <span class="k">if</span> \
+                            <span class="p">(</span><span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="s2">&quot;CB&quot;</span><span class="p">,</span> <span class="s2">&quot;CB&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">adr_flag</span> <span class="k">else</span> \
+                            <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;def_upper_bound&quot;</span><span class="p">])</span>
+
+                    <span class="c1"># TODO: Better way to define upper_bound if target &gt; upper ???</span>
+                    <span class="n">upper_bound</span> <span class="o">=</span> <span class="n">upper_bound</span> <span class="k">if</span> <span class="n">targetdist</span> <span class="o">&lt;=</span> <span class="n">upper_bound</span> <span class="k">else</span> \
+                        <span class="n">targetdist</span> <span class="o">+</span> <span class="n">lower_bound</span>
+
+                    <span class="k">if</span> <span class="n">restraint_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">rest_id</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+                        <span class="n">restraint_dict</span><span class="p">[</span><span class="n">rest_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                            <span class="s2">&quot;meta&quot;</span><span class="p">:</span> <span class="p">{</span>
+                                <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="n">contactweight</span><span class="p">,</span>
+                                <span class="s2">&quot;distance&quot;</span><span class="p">:</span> <span class="n">targetdist</span><span class="p">,</span>
+                                <span class="s2">&quot;lower_bound&quot;</span><span class="p">:</span> <span class="n">lower_bound</span><span class="p">,</span>
+                                <span class="s2">&quot;upper_bound&quot;</span><span class="p">:</span> <span class="n">upper_bound</span><span class="p">,</span>
+                                <span class="s2">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
+                                <span class="s2">&quot;reliable&quot;</span><span class="p">:</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">nat_reliable</span> <span class="ow">and</span> <span class="n">listname</span> <span class="ow">in</span> <span class="p">(</span>
+                                    <span class="s2">&quot;native&quot;</span><span class="p">,</span> <span class="s2">&quot;native_full&quot;</span><span class="p">,</span> <span class="s2">&quot;pdb&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span>
+                                <span class="s2">&quot;list_name&quot;</span><span class="p">:</span> <span class="n">listname</span>
+                            <span class="p">},</span>
+                            <span class="s2">&quot;contrib&quot;</span><span class="p">:</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">()</span>
+                        <span class="p">}</span>
+
+                    <span class="n">restraint_dict</span><span class="p">[</span><span class="n">rest_id</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                        <span class="s2">&quot;meta&quot;</span><span class="p">:</span> <span class="p">{</span>
+                            <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="mf">1.0</span>
+                        <span class="p">},</span>
+                        <span class="s2">&quot;spin_pair&quot;</span><span class="p">:</span> <span class="p">{</span>
+                            <span class="n">res1_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span> <span class="n">atm1</span><span class="p">,</span>
+                            <span class="n">res2_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span> <span class="n">atm2</span>
+                        <span class="p">}</span>
+                    <span class="p">}</span>
+
+        <span class="c1"># Compute xml restraint file path</span>
+        <span class="n">xml_file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="s2">&quot;xml&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;/&quot;</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span> <span class="n">listname</span><span class="p">))</span> <span class="o">+</span> <span class="s2">&quot;.xml&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Write </span><span class="si">%d</span><span class="s2"> xml distance restraints in </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">nb_c</span><span class="p">,</span> <span class="n">xml_file</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write_dist_xml</span><span class="p">(</span><span class="n">restraint_dict</span><span class="p">,</span> <span class="n">xml_file</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">xml_file</span><span class="p">,</span> <span class="n">contacts</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.write_maplist_restraints"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.write_maplist_restraints">[docs]</a>    <span class="k">def</span> <span class="nf">write_maplist_restraints</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">maplist</span><span class="p">,</span> <span class="n">targetmaps</span><span class="p">,</span> <span class="n">protein</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate ARIA XML restraints from maplist</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        maplist : list of ResAtmMap or ResMap object</span>
+<span class="sd">            </span>
+<span class="sd">        targetmaps : dict</span>
+
+<span class="sd">        protein</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">out</span> <span class="o">=</span> <span class="p">([],</span> <span class="p">[])</span>
+
+        <span class="k">for</span> <span class="n">maptype</span> <span class="ow">in</span> <span class="n">maplist</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing </span><span class="si">%s</span><span class="s2"> ARIA XML distance restraints&quot;</span><span class="p">,</span> <span class="n">maptype</span><span class="p">)</span>
+            <span class="n">outfile</span><span class="p">,</span> <span class="n">pairlist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">write_map_restraint</span><span class="p">(</span>
+                <span class="n">protein</span><span class="p">,</span> <span class="n">maplist</span><span class="p">[</span><span class="n">maptype</span><span class="p">][</span><span class="s1">&#39;maplot&#39;</span><span class="p">],</span> <span class="n">maplist</span><span class="p">[</span><span class="n">maptype</span><span class="p">][</span><span class="s2">&quot;nb_c&quot;</span><span class="p">],</span>
+                <span class="n">targetmaps</span><span class="p">,</span> <span class="n">listname</span><span class="o">=</span><span class="n">maptype</span><span class="p">,</span>
+                <span class="n">scoremap</span><span class="o">=</span><span class="n">maplist</span><span class="p">[</span><span class="n">maptype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scoremap&quot;</span><span class="p">))</span>
+            <span class="n">out</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">outfile</span><span class="p">)</span>
+            <span class="n">maplist</span><span class="p">[</span><span class="n">maptype</span><span class="p">][</span><span class="s2">&quot;filteredlist&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">pairlist</span>
+            <span class="n">out</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pairlist</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">out</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.write_tbl_restraints"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.write_tbl_restraints">[docs]</a>    <span class="k">def</span> <span class="nf">write_tbl_restraints</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">hbmap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write tbl restraints</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein</span>
+<span class="sd">        hbmap</span>
+<span class="sd">            Extra hbond map (eg: metapsicov hbonds) (Default value = None)</span>
+<span class="sd">        n_hb</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        dict</span>
+<span class="sd">            {&#39;hbond&#39;: hb_file, &#39;dihed&#39;: dihed_file, &#39;ssdist&#39;: ssdist_file}</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">dihed_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="s2">&quot;tbl&quot;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">+</span>
+                                  <span class="s2">&quot;_dihed.tbl&quot;</span><span class="p">)</span>
+        <span class="n">hb_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="s2">&quot;tbl&quot;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">+</span>
+                               <span class="s2">&quot;_hbond.tbl&quot;</span><span class="p">)</span>
+        <span class="n">ssdist_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="s2">&quot;tbl&quot;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">+</span>
+                                   <span class="s2">&quot;_ssdist.tbl&quot;</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;   Dihedral restraints for secondary structures (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                     <span class="n">dihed_file</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">write_dihedral_tbl</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">,</span> <span class="n">dihed_file</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;   Secondary structure restraints (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                     <span class="n">ssdist_file</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">write_ssdist_tbl</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">,</span>
+                                  <span class="n">protein</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ssdist</span><span class="p">,</span>
+                                  <span class="n">ssdist_file</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;   Helix bond restraints (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">hb_file</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">write_hb_tbl</span><span class="p">(</span><span class="n">protein</span><span class="p">,</span> <span class="n">hb_file</span><span class="p">,</span>
+                              <span class="n">hbmap</span><span class="o">=</span><span class="n">hbmap</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="n">n_hb</span><span class="p">,</span>
+                              <span class="n">lr_type</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                                  <span class="s1">&#39;longrange_hbtype&#39;</span><span class="p">],</span>
+                              <span class="n">dminus</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;hb_dminus&#39;</span><span class="p">],</span>
+                              <span class="n">dplus</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;hb_dplus&#39;</span><span class="p">])</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">dihed_file</span> <span class="o">=</span> <span class="kc">None</span>
+            <span class="n">ssdist_file</span> <span class="o">=</span> <span class="kc">None</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">hbmap</span><span class="p">:</span>
+                <span class="n">hb_file</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;hbond&#39;</span><span class="p">:</span> <span class="n">hb_file</span><span class="p">,</span> <span class="s1">&#39;dihed&#39;</span><span class="p">:</span> <span class="n">dihed_file</span><span class="p">,</span> <span class="s1">&#39;ssdist&#39;</span><span class="p">:</span> <span class="n">ssdist_file</span><span class="p">}</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.write_ariaproject"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.write_ariaproject">[docs]</a>    <span class="k">def</span> <span class="nf">write_ariaproject</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aria_template</span><span class="p">,</span> <span class="n">seqfile</span><span class="p">,</span> <span class="n">dist_files</span><span class="p">,</span> <span class="n">tbl_files</span><span class="p">,</span>
+                          <span class="n">desclist</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate ariaproject.xml file</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        aria_template: str</span>
+<span class="sd">            ariaproject.xml template path</span>
+<span class="sd">        seqfile: str</span>
+<span class="sd">            path of molecule sequence in SEQ format</span>
+<span class="sd">        dist_files: list of str</span>
+<span class="sd">            List of distance restraint files in ARIA XML format</span>
+<span class="sd">        tbl_files: dict</span>
+<span class="sd">            Distance restraint files in CNS TBL format</span>
+<span class="sd">        desclist: list of str</span>
+<span class="sd">            List of data descriptor for the actual run (Default value = None).</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        None</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: Use aria API to build project in the future</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading aria template file </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">aria_template</span><span class="p">)</span>
+
+        <span class="n">molecule</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">molecule</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span>
+        <span class="n">datas</span> <span class="o">=</span> <span class="n">desclist</span> <span class="k">if</span> <span class="n">desclist</span> <span class="k">else</span> <span class="s1">&#39;&#39;</span>
+
+        <span class="n">templatepath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">aria_template</span><span class="p">)</span>
+        <span class="n">ariaproj_template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="n">templatepath</span><span class="p">,</span>
+                                     <span class="n">module_directory</span><span class="o">=</span><span class="s2">&quot;/tmp/mako_modules&quot;</span><span class="p">)</span>
+
+        <span class="k">try</span><span class="p">:</span>
+            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">templatepath</span><span class="p">):</span>
+                <span class="k">pass</span>
+        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;Can&#39;t open template file &quot;</span><span class="si">%s</span><span class="s2">&quot;. </span><span class="si">%s</span><span class="s2">&quot;&quot;&quot;</span> <span class="o">%</span>
+                         <span class="p">(</span><span class="n">templatepath</span><span class="p">,</span> <span class="n">msg</span><span class="p">))</span>
+            <span class="k">raise</span>
+
+        <span class="n">aria_project_dict</span> <span class="o">=</span> <span class="p">{}</span>
+
+        <span class="c1"># Check if ratio cool1 / cool2 is 5:4 ... (relevant ?)</span>
+        <span class="c1"># steps_1 = float(self.settings.setup.config[&#39;md_parameters_steps_cool1&#39;])</span>
+        <span class="c1"># steps_2 = float(self.settings.setup.config[&#39;md_parameters_steps_cool2&#39;])</span>
+        <span class="c1"># if steps_1 / steps_2 != float(5) / int(4):</span>
+        <span class="c1">#     sys.exit(</span>
+        <span class="c1">#         &#39;Length of first and second cooling stages must be fixed in &#39;</span>
+        <span class="c1">#         &#39;the ratio %.2f:%.2f&#39; % (steps_1, steps_2))</span>
+
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">)</span>
+
+        <span class="n">work_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">)</span>
+        <span class="n">temp_dir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">aria_project_dict</span><span class="p">[</span><span class="s1">&#39;temp_root&#39;</span><span class="p">]),</span>
+                                <span class="n">molecule</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">datas</span><span class="p">))</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">work_dir</span><span class="p">):</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Working dir </span><span class="si">%s</span><span class="s2"> doesn&#39;t exist.&quot;</span><span class="p">,</span> <span class="n">work_dir</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Create new directory </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">work_dir</span><span class="p">)</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">work_dir</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">):</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Temp directory </span><span class="si">%s</span><span class="s2"> doesn&#39;t exist.&quot;</span><span class="p">,</span> <span class="n">temp_dir</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Create new directory </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">temp_dir</span><span class="p">)</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">temp_dir</span><span class="p">)</span>
+
+        <span class="n">aria_project_dict</span><span class="p">[</span><span class="s1">&#39;working_directory&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">work_dir</span>
+        <span class="n">aria_project_dict</span><span class="p">[</span><span class="s1">&#39;temp_root&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">temp_dir</span>
+
+        <span class="k">if</span> <span class="s2">&quot;-o&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">aria_project_dict</span><span class="p">[</span><span class="s1">&#39;host_command&#39;</span><span class="p">]:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No output file defined in host_command. You should add&quot;</span>
+                        <span class="s2">&quot; the output option (-o) to your command.&quot;</span><span class="p">)</span>
+
+        <span class="n">project</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;project_name&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span>
+                   <span class="s1">&#39;date&#39;</span><span class="p">:</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(),</span>
+                   <span class="s1">&#39;file_root&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">}</span>
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">project</span><span class="p">)</span>
+
+        <span class="n">data_molecule</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;molecule_file&#39;</span><span class="p">:</span> <span class="n">seqfile</span><span class="p">}</span>
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">data_molecule</span><span class="p">)</span>
+
+        <span class="n">un_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
+        <span class="n">am_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
+
+        <span class="c1"># SS dist tbl restraint</span>
+        <span class="k">if</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s2">&quot;ssdist&quot;</span><span class="p">]:</span>
+            <span class="n">un_dict</span><span class="p">[</span><span class="s1">&#39;ss&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                <span class="s1">&#39;file&#39;</span><span class="p">:</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s2">&quot;ssdist&quot;</span><span class="p">],</span>
+                <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;ss_dist_format&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;ccpn_id&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
+                <span class="s1">&#39;enabled&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;ss_dist_enabled&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;add_to_network&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                    <span class="s1">&#39;ss_dist_add_to_network&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;calibrate&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;ss_dist_calibrate&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;run_network_anchoring&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                    <span class="s1">&#39;ss_dist_run_network_anchoring&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;filter_contributions&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                    <span class="s1">&#39;ss_dist_filter_contributions&#39;</span><span class="p">]}</span>
+
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s2">&quot;ambiguous_distance_restraint&quot;</span><span class="p">]:</span>
+            <span class="c1"># Ajout dist_files a am_dict</span>
+            <span class="k">for</span> <span class="n">distfile</span> <span class="ow">in</span> <span class="n">dist_files</span><span class="p">:</span>
+                <span class="n">am_dict</span><span class="p">[</span><span class="n">distfile</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                    <span class="s1">&#39;file&#39;</span><span class="p">:</span> <span class="n">distfile</span><span class="p">,</span>
+                    <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_format&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;ccpn_id&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
+                    <span class="s1">&#39;enabled&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_enabled&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;add_to_network&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_add_to_network&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;calibrate&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_calibrate&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;run_network_anchoring&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_run_network_anchoring&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;filter_contributions&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_filter_contributions&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;avg_exponent&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_avg_exponent&#39;</span><span class="p">]</span>
+                <span class="p">}</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># Ajout dist_files a un_dict</span>
+            <span class="k">for</span> <span class="n">distfile</span> <span class="ow">in</span> <span class="n">dist_files</span><span class="p">:</span>
+                <span class="n">un_dict</span><span class="p">[</span><span class="n">distfile</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                    <span class="s1">&#39;file&#39;</span><span class="p">:</span> <span class="n">distfile</span><span class="p">,</span>
+                    <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_format&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;ccpn_id&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span>
+                    <span class="s1">&#39;enabled&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_enabled&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;add_to_network&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_add_to_network&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;calibrate&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;dist_calibrate&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;run_network_anchoring&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_run_network_anchoring&#39;</span><span class="p">],</span>
+                    <span class="s1">&#39;filter_contributions&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                        <span class="s1">&#39;dist_filter_contributions&#39;</span><span class="p">]}</span>
+
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;unambiguous_distance_restraints&#39;</span><span class="p">:</span> <span class="n">un_dict</span><span class="p">})</span>
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">&#39;ambiguous_distance_restraints&#39;</span><span class="p">:</span> <span class="n">am_dict</span><span class="p">})</span>
+
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
+            <span class="s1">&#39;hbond_dist_file&#39;</span><span class="p">:</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s2">&quot;hbond&quot;</span><span class="p">]</span>
+            <span class="k">if</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s1">&#39;hbond&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="kc">None</span><span class="p">})</span>
+
+        <span class="n">aria_project_dict</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
+            <span class="s1">&#39;dihed_angle_file&#39;</span><span class="p">:</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s2">&quot;dihed&quot;</span><span class="p">]</span>
+            <span class="k">if</span> <span class="n">tbl_files</span><span class="p">[</span><span class="s1">&#39;dihed&#39;</span><span class="p">]</span> <span class="k">else</span> <span class="kc">None</span><span class="p">})</span>
+
+        <span class="n">aria_project_dict</span><span class="p">[</span><span class="s1">&#39;n_cpus&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;cpus&#39;</span><span class="p">,</span>
+                                                                     <span class="s1">&#39;20&#39;</span><span class="p">)</span>
+
+        <span class="n">proj_file</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/ariaproject.xml&quot;</span> <span class="o">%</span> <span class="n">work_dir</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">proj_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">proj_xml</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing ARIA project file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">proj_file</span><span class="p">)</span>
+            <span class="n">proj_xml</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">ariaproj_template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="o">**</span><span class="n">aria_project_dict</span><span class="p">))</span>
+
+        <span class="c1"># TODO: Load aria project file if exists and extract data and rdc</span>
+        <span class="c1"># parameters (use flag in args)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;ariaproject&#39;</span><span class="p">]:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading ARIA project file&quot;</span><span class="p">)</span>
+            <span class="n">ecproject</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">proj_file</span><span class="p">)</span>
+            <span class="n">project</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;ariaproject&#39;</span><span class="p">])</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">&#39;extractall&#39;</span><span class="p">]:</span>
+                <span class="c1"># Add only data to the generated project</span>
+                <span class="k">for</span> <span class="n">datatype</span> <span class="ow">in</span> <span class="n">DATA_TYPES</span><span class="p">:</span>
+                    <span class="n">datas</span> <span class="o">=</span> <span class="p">[</span><span class="n">dat</span> <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">project</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">datatype</span><span class="p">)]</span>
+                    <span class="k">if</span> <span class="n">datas</span><span class="p">:</span>
+                        <span class="n">ecdatas</span> <span class="o">=</span> <span class="p">[</span><span class="n">dat</span> <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">ecproject</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">datatype</span><span class="p">)]</span>
+                        <span class="k">if</span> <span class="p">[</span><span class="n">dat</span><span class="o">.</span><span class="n">as_dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">datas</span><span class="p">]</span> <span class="o">!=</span> \
+                                <span class="p">[</span><span class="n">dat</span><span class="o">.</span><span class="n">as_dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">ecdatas</span><span class="p">]:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update </span><span class="si">%s</span><span class="s2"> data in project&quot;</span><span class="p">,</span> <span class="n">datatype</span><span class="p">)</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">datas</span><span class="p">)</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Old </span><span class="si">%s</span><span class="s2"> section:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">datatype</span><span class="p">,</span>
+                                      <span class="n">ecproject</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">datatype</span><span class="p">))</span>
+                            <span class="c1"># TODO: check if sequence file is similar with the</span>
+                            <span class="c1">#  one generated</span>
+                            <span class="k">if</span> <span class="n">datatype</span> <span class="o">==</span> <span class="n">DATA_SEQUENCE</span><span class="p">:</span>
+                                <span class="p">[</span><span class="n">ecproject</span><span class="o">.</span><span class="n">delData</span><span class="p">(</span><span class="n">dat</span><span class="p">)</span>
+                                 <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">ecproject</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">datatype</span><span class="p">)]</span>
+                            <span class="p">[</span><span class="n">ecproject</span><span class="o">.</span><span class="n">addData</span><span class="p">(</span><span class="n">dat</span><span class="p">)</span> <span class="k">for</span> <span class="n">dat</span> <span class="ow">in</span> <span class="n">datas</span><span class="p">]</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Updated </span><span class="si">%s</span><span class="s2"> section:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">datatype</span><span class="p">,</span>
+                                      <span class="n">ecproject</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="n">datatype</span><span class="p">))</span>
+                            <span class="k">if</span> <span class="n">datatype</span> <span class="o">==</span> <span class="n">DATA_RDCS</span><span class="p">:</span>
+                                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update </span><span class="si">%s</span><span class="s2"> annealing parameters&quot;</span><span class="p">,</span>
+                                         <span class="n">datatype</span><span class="p">)</span>
+                                <span class="n">rdc_params</span> <span class="o">=</span> <span class="n">project</span><span class="o">.</span><span class="n">getStructureEngine</span><span class="p">()</span><span class="o">.</span><span class="n">getAnnealingParameters</span><span class="p">()</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                                    <span class="n">DATA_ANNEALING_RDC</span><span class="p">)</span>
+                                <span class="n">engine</span> <span class="o">=</span> <span class="n">ecproject</span><span class="o">.</span><span class="n">getStructureEngine</span><span class="p">()</span>
+                                <span class="n">annealing</span> <span class="o">=</span> <span class="n">engine</span><span class="o">.</span><span class="n">getAnnealingParameters</span><span class="p">()</span>
+                                <span class="n">annealing</span><span class="p">[</span><span class="n">DATA_ANNEALING_RDC</span><span class="p">]</span> <span class="o">=</span> <span class="n">rdc_params</span>
+                                <span class="n">engine</span><span class="o">.</span><span class="n">setAnnealingParameters</span><span class="p">(</span><span class="n">annealing</span><span class="p">)</span>
+                                <span class="n">ecproject</span><span class="o">.</span><span class="n">setStructureEngine</span><span class="p">(</span><span class="n">engine</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing new ARIA xml file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">proj_file</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_pickler</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">ecproject</span><span class="p">,</span> <span class="n">proj_file</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.tbl2xml"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.tbl2xml">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">tbl2xml</span><span class="p">(</span><span class="n">outdir_path</span><span class="p">,</span> <span class="n">molecule_path</span><span class="p">,</span> <span class="n">tbl_paths</span><span class="p">,</span> <span class="n">list_name</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Read cns distance restraints in TBL format and convert them into ARIA</span>
+<span class="sd">        XML format</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        outdir_path : str</span>
+<span class="sd">            Path where ARIA XML files are saved            </span>
+<span class="sd">        molecule_path : str</span>
+<span class="sd">            Path of molecule file in ARIA XML format            </span>
+<span class="sd">        tbl_paths : list of str</span>
+<span class="sd">            List of distance restraints paths</span>
+<span class="sd">        list_name : str</span>
+<span class="sd">            Name of spec in tbl file which will be converted into XML format</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        xml_paths: str</span>
+<span class="sd">            List of distance restraints in ARIA XML format</span>
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">pickler</span> <span class="o">=</span> <span class="n">AriaXMLPickler</span><span class="p">()</span>
+        <span class="n">molecule</span> <span class="o">=</span> <span class="n">pickler</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">molecule_path</span><span class="p">)</span>
+        <span class="n">convtable</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="p">()</span>
+        <span class="n">xml_paths</span> <span class="o">=</span> <span class="p">[]</span>
+
+        <span class="c1"># Read tbl file(s) and build dist_restraints dict</span>
+        <span class="k">for</span> <span class="n">tbl_path</span> <span class="ow">in</span> <span class="n">tbl_paths</span><span class="p">:</span>
+
+            <span class="n">tbl</span> <span class="o">=</span> <span class="n">TblDistFile</span><span class="p">(</span><span class="n">tbl_path</span><span class="p">)</span>
+            <span class="n">tbl</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
+            <span class="n">xml_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                <span class="n">outdir_path</span><span class="p">,</span>
+                <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span>
+                    <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">tbl_path</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_restraints.xml&quot;</span><span class="p">)</span>
+
+            <span class="n">xmldists</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">()</span>
+            <span class="n">restno</span> <span class="o">=</span> <span class="kc">None</span>
+            <span class="n">listflag</span> <span class="o">=</span> <span class="kc">False</span>
+
+            <span class="k">for</span> <span class="n">idline</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">iteritems</span><span class="p">(</span><span class="n">tbl</span><span class="o">.</span><span class="n">lines</span><span class="p">):</span>
+
+                <span class="n">assign_flag</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">if</span> <span class="s2">&quot;assign&quot;</span> <span class="ow">in</span> <span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                    <span class="s2">&quot;restflag&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="kc">False</span>
+                <span class="n">res1_id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;resid1&quot;</span><span class="p">))</span>
+                <span class="n">res2_id</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;resid2&quot;</span><span class="p">))</span>
+                <span class="n">res1</span> <span class="o">=</span> <span class="n">molecule</span><span class="o">.</span><span class="n">getChain</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;segid1&quot;</span><span class="p">))[</span><span class="n">res1_id</span><span class="p">]</span>
+                <span class="n">res2</span> <span class="o">=</span> <span class="n">molecule</span><span class="o">.</span><span class="n">getChain</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;segid2&quot;</span><span class="p">))[</span><span class="n">res2_id</span><span class="p">]</span>
+
+                <span class="c1"># Convert atom name</span>
+                <span class="c1"># TBL file follow cns nomenclature for atom names</span>
+                <span class="c1"># ARIA XML distance restraints follow iupac names</span>
+                <span class="n">atm1_name</span> <span class="o">=</span> <span class="n">convtable</span><span class="o">.</span><span class="n">convert_atom</span><span class="p">(</span>
+                    <span class="n">res1</span><span class="o">.</span><span class="n">getType</span><span class="p">(),</span> <span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;atm1&quot;</span><span class="p">),</span> <span class="s1">&#39;cns&#39;</span><span class="p">,</span> <span class="s1">&#39;iupac&#39;</span><span class="p">,</span>
+                    <span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">)</span>
+                <span class="n">atm2_name</span> <span class="o">=</span> <span class="n">convtable</span><span class="o">.</span><span class="n">convert_atom</span><span class="p">(</span>
+                    <span class="n">res2</span><span class="o">.</span><span class="n">getType</span><span class="p">(),</span> <span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;atm2&quot;</span><span class="p">),</span> <span class="s1">&#39;cns&#39;</span><span class="p">,</span> <span class="s1">&#39;iupac&#39;</span><span class="p">,</span>
+                    <span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">)</span>
+
+                <span class="c1"># If assign flag, initialize a new restraint</span>
+                <span class="k">if</span> <span class="n">assign_flag</span><span class="p">:</span>
+                    <span class="n">listflag</span> <span class="o">=</span> <span class="kc">False</span>
+                    <span class="n">restno</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;restno&quot;</span><span class="p">)</span>
+                    <span class="n">restlistname</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;listname&quot;</span><span class="p">)</span>
+                    <span class="k">if</span> <span class="n">list_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">restlistname</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
+                        <span class="n">listflag</span> <span class="o">=</span> <span class="kc">True</span>
+                        <span class="n">dtarg</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dtarget&quot;</span><span class="p">))</span>
+                        <span class="n">lwbound</span> <span class="o">=</span> <span class="n">dtarg</span> <span class="o">-</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dminus&quot;</span><span class="p">))</span>
+                        <span class="n">upbound</span> <span class="o">=</span> <span class="n">dtarg</span> <span class="o">+</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dplus&quot;</span><span class="p">))</span>
+                        <span class="n">xmldists</span><span class="p">[</span><span class="n">restno</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                            <span class="s2">&quot;meta&quot;</span><span class="p">:</span> <span class="p">{</span>
+                                <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;weight&quot;</span><span class="p">)),</span>
+                                <span class="s2">&quot;distance&quot;</span><span class="p">:</span> <span class="n">dtarg</span><span class="p">,</span>
+                                <span class="s2">&quot;lower_bound&quot;</span><span class="p">:</span> <span class="n">lwbound</span><span class="p">,</span>
+                                <span class="s2">&quot;upper_bound&quot;</span><span class="p">:</span> <span class="n">upbound</span><span class="p">,</span>
+                                <span class="s2">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
+                                <span class="s2">&quot;reliable&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
+                                <span class="s2">&quot;list_name&quot;</span><span class="p">:</span> <span class="n">restlistname</span>
+                            <span class="p">},</span>
+                            <span class="s2">&quot;contrib&quot;</span><span class="p">:</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">()</span>
+                        <span class="p">}</span>
+                        <span class="n">contrib_id</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">xmldists</span><span class="p">[</span><span class="n">restno</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span>
+                        <span class="n">xmldists</span><span class="p">[</span><span class="n">restno</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                            <span class="s2">&quot;meta&quot;</span><span class="p">:</span> <span class="p">{</span>
+                                <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="mf">1.0</span>
+                            <span class="p">},</span>
+                            <span class="s2">&quot;spin_pair&quot;</span><span class="p">:</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">([</span>
+                                <span class="p">(</span><span class="n">res1_id</span><span class="p">,</span> <span class="n">atm1_name</span><span class="p">),</span>
+                                <span class="p">(</span><span class="n">res2_id</span><span class="p">,</span> <span class="n">atm2_name</span><span class="p">)</span>
+                            <span class="p">])</span>
+                        <span class="p">}</span>
+                <span class="c1"># Else add contrib to restraint</span>
+                <span class="k">elif</span> <span class="n">listflag</span><span class="p">:</span>
+                    <span class="n">contrib_id</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">xmldists</span><span class="p">[</span><span class="n">restno</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span>
+                    <span class="n">xmldists</span><span class="p">[</span><span class="n">restno</span><span class="p">][</span><span class="s2">&quot;contrib&quot;</span><span class="p">][</span><span class="n">contrib_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
+                        <span class="s2">&quot;meta&quot;</span><span class="p">:</span> <span class="p">{</span>
+                            <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="mf">1.0</span>
+                        <span class="p">},</span>
+                        <span class="s2">&quot;spin_pair&quot;</span><span class="p">:</span> <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="p">([</span>
+                            <span class="p">(</span><span class="n">res1_id</span><span class="p">,</span> <span class="n">atm1_name</span><span class="p">),</span>
+                            <span class="p">(</span><span class="n">res2_id</span><span class="p">,</span> <span class="n">atm2_name</span><span class="p">)</span>
+                        <span class="p">])</span>
+                    <span class="p">}</span>
+
+            <span class="c1"># Generate distance restraint file using self.write_dist_xml</span>
+            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">xmldists</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Wrote </span><span class="si">%d</span><span class="s2"> xml distance restraints in </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                         <span class="nb">len</span><span class="p">(</span><span class="n">xmldists</span><span class="p">),</span>
+                         <span class="n">xml_path</span><span class="p">)</span>
+                <span class="n">AriaXMLConverter</span><span class="o">.</span><span class="n">write_dist_xml</span><span class="p">(</span><span class="n">xmldists</span><span class="p">,</span> <span class="n">xml_path</span><span class="p">)</span>
+                <span class="n">xml_paths</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">xml_path</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">xml_paths</span></div>
+
+<div class="viewcode-block" id="AriaEcXMLConverter.run_tbl2xml"><a class="viewcode-back" href="../../ariaec.html#ariaec.converter.AriaEcXMLConverter.run_tbl2xml">[docs]</a>    <span class="k">def</span> <span class="nf">run_tbl2xml</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Main command to convert tbl file(s) in ARIA XML Format&quot;&quot;&quot;</span>
+        <span class="c1"># Check if we have the correct args in self.settings</span>
+        <span class="n">outdir_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">tbl2xml</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">]</span>
+        <span class="n">molecule_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">tbl2xml</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;molecule&quot;</span><span class="p">]</span>
+        <span class="n">tbl_paths</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">tbl2xml</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">]</span>
+        <span class="n">list_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">tbl2xml</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;listname&quot;</span><span class="p">]</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">tbl2xml</span><span class="p">(</span><span class="n">outdir_path</span><span class="p">,</span> <span class="n">molecule_path</span><span class="p">,</span> <span class="n">tbl_paths</span><span class="p">,</span> <span class="n">list_name</span><span class="p">)</span></div></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/maplot.html b/examples-dev/olds/_build/html/_modules/ariaec/maplot.html
new file mode 100644
index 0000000..e4f1784
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/maplot.html
@@ -0,0 +1,425 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.maplot &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.maplot</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.maplot</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Input/Output aria_ec scripts</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">get_filename</span>
+<span class="kn">from</span> <span class="nn">.reader</span> <span class="k">import</span> <span class="n">MapFileListReader</span>
+<span class="kn">from</span> <span class="nn">.protmap</span> <span class="k">import</span> <span class="n">MapFilter</span>
+<span class="kn">from</span> <span class="nn">.protein</span> <span class="k">import</span> <span class="n">Protein</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="AriaEcContactMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.maplot.AriaEcContactMap">[docs]</a><span class="k">class</span> <span class="nc">AriaEcContactMap</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Contact maplot class&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="c1"># TODO: check_type settings (AriaEcSettings)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span> <span class="o">=</span> <span class="n">Protein</span><span class="p">(</span><span class="n">settings</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">file_reader</span> <span class="o">=</span> <span class="n">MapFileListReader</span><span class="p">(</span>
+            <span class="n">cont_def</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">contactdef</span><span class="o">.</span><span class="n">config</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">filter</span> <span class="o">=</span> <span class="n">MapFilter</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+                                <span class="n">nofilter</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;no_filter&quot;</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protname</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">refmap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">refname</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reftype</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+<div class="viewcode-block" id="AriaEcContactMap.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.maplot.AriaEcContactMap.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Contact map analysis command&quot;&quot;&quot;</span>
+        <span class="c1"># Check input</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Settings:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+                                             <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Args:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
+                                         <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;onlyreport&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">make_infra</span><span class="p">()</span>
+        <span class="c1"># ----------------------------- Input -------------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protname</span> <span class="o">=</span> <span class="n">get_filename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
+        <span class="c1"># Load Sequence file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_aa_sequence</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
+        <span class="c1"># Load secondary structure prediction file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_sec_struct</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span>
+                                                                  <span class="kc">None</span><span class="p">),</span>
+                                    <span class="n">ssdist_filename</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">ssdist</span><span class="p">,</span>
+                                    <span class="n">ssidx</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                                        <span class="s2">&quot;ssidx&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+        <span class="c1"># ---------------------------- Processing ---------------------------- #</span>
+
+        <span class="c1"># Reading step</span>
+        <span class="c1"># ------------</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">file_reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">),</span>
+                              <span class="n">maptypes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;contact_types&quot;</span><span class="p">),</span>
+                              <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                              <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                                  <span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                              <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+
+        <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">fo</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_reader</span><span class="o">.</span><span class="n">maps</span><span class="p">):</span>
+            <span class="c1"># fo need a maplot in order to wite XML dist restraints</span>
+            <span class="c1"># TODO: filter pour toutes les map de mapdict !! (fonction remove</span>
+            <span class="c1">#  s&#39;applique sur l&#39;humanidx contenant les residus)</span>
+            <span class="k">if</span> <span class="n">idx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> map set as reference&quot;</span><span class="p">,</span> <span class="n">fo</span><span class="o">.</span><span class="n">filetype</span><span class="o">.</span><span class="n">capitalize</span><span class="p">())</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">refmap</span> <span class="o">=</span> <span class="n">fo</span><span class="o">.</span><span class="n">mapdict</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">reftype</span> <span class="o">=</span> <span class="n">fo</span><span class="o">.</span><span class="n">filetype</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">refname</span> <span class="o">=</span> <span class="n">fo</span><span class="o">.</span><span class="n">filename</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">list</span> \
+                    <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
+
+            <span class="c1"># Filtering step</span>
+            <span class="c1"># --------------</span>
+            <span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;filter&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">idx</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> \
+                    <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;filter&quot;</span><span class="p">)</span>
+                     <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_reader</span><span class="o">.</span><span class="n">maps</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">):</span>
+                <span class="c1"># Filtering all maplot except the reference map</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Filtering </span><span class="si">%s</span><span class="s2"> map&quot;</span><span class="p">,</span> <span class="n">fo</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">fo</span><span class="o">.</span><span class="n">mapdict</span><span class="p">,</span> <span class="n">fo</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="n">fo</span><span class="o">.</span><span class="n">contactlist</span><span class="p">,</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span> <span class="n">clashlist</span><span class="o">=</span><span class="n">fo</span><span class="o">.</span><span class="n">clashlist</span><span class="p">,</span>
+                            <span class="n">outprefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">)</span> <span class="o">==</span> <span class="nb">list</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">,</span>
+                            <span class="n">outdir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">)</span>
+            <span class="c1"># else:</span>
+            <span class="c1">#     Use only position filter</span>
+            <span class="c1">#     self.filter(fo.mapdict, fo.filetype, fo.contactlist,</span>
+            <span class="c1">#                 self.protein, clashlist=fo.clashlist,</span>
+            <span class="c1">#                 protname=self.protname,</span>
+            <span class="c1">#                 outdir=self.settings.outdir, mapfilters=&quot;pos&quot;)</span>
+
+            <span class="c1"># Save the loaded map into allresmap dict</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[(</span><span class="n">fo</span><span class="o">.</span><span class="n">filename</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">list</span> <span class="k">else</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">[</span><span class="n">idx</span><span class="p">],</span> <span class="n">fo</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span>
+                            <span class="n">fo</span><span class="o">.</span><span class="n">filepath</span><span class="p">)]</span> <span class="o">=</span> <span class="n">fo</span><span class="o">.</span><span class="n">mapdict</span>
+
+        <span class="k">try</span><span class="p">:</span>
+            <span class="n">refmap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">refmap</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span>
+        <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;First contact map should be a valid file&quot;</span><span class="p">)</span>
+            <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+        <span class="c1"># nb_c = int(len(self.protein.aa_sequence.sequence) *</span>
+        <span class="c1">#            self.settings.setup.config.get(&quot;n_factor&quot;))</span>
+        <span class="n">plotparams</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+                      <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;size_fig&#39;</span><span class="p">,</span> <span class="s1">&#39;plot_ext&#39;</span><span class="p">,</span> <span class="s1">&#39;plot_dpi&#39;</span><span class="p">)}</span>
+        <span class="n">outdir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span>
+
+        <span class="c1"># Reference contact map plot</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;save_fig&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> \
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;onlyreport&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+            <span class="n">refmap</span><span class="o">.</span><span class="n">saveplot</span><span class="p">(</span><span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span>
+                            <span class="n">outprefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">)</span> <span class="o">==</span> <span class="nb">list</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">,</span>
+                            <span class="o">**</span><span class="n">plotparams</span><span class="p">)</span>
+
+        <span class="c1"># Merge maps if asked by the user</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;merge&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
+            <span class="c1"># Combine map with other maps</span>
+            <span class="n">mergelist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;merge&quot;</span><span class="p">)</span>
+            <span class="c1"># LOG.info(&quot;Merging contact maps (%s)&quot; % &#39;, &#39;.join(mergelist))</span>
+            <span class="k">for</span> <span class="n">mergetype</span> <span class="ow">in</span> <span class="n">mergelist</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">mergetype</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">]:</span>
+                    <span class="n">mergemaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">mergetype</span><span class="p">)</span>
+                    <span class="n">mergecontactmap</span> <span class="o">=</span> <span class="n">mergemaps</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;maplot&quot;</span><span class="p">)</span>
+                    <span class="k">for</span> <span class="n">mapname</span><span class="p">,</span> <span class="n">mapt</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
+                        <span class="k">if</span> <span class="n">mapt</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reftype</span><span class="p">:</span>
+                            <span class="c1"># TODO: DON&#39;T WORK !!!!</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Merging </span><span class="si">%s</span><span class="s2"> with </span><span class="si">%s</span><span class="s2"> map&quot;</span><span class="p">,</span>
+                                     <span class="n">mergetype</span><span class="p">,</span> <span class="n">mapt</span><span class="p">)</span>
+                            <span class="n">up_map</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">mapt</span><span class="p">][</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span>
+                            <span class="n">up_map</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">up_map</span><span class="p">[:]</span> <span class="o">+</span> <span class="n">mergecontactmap</span><span class="p">[:]</span>
+                            <span class="n">mergekey</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">mapt</span><span class="p">,</span> <span class="n">mergetype</span><span class="p">)</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">mergekey</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">mergekey</span><span class="p">][</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">up_map</span>
+            <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+
+        <span class="c1"># ------------------------------ Output ------------------------------ #</span>
+
+        <span class="k">for</span> <span class="n">mapname</span><span class="p">,</span> <span class="n">mapt</span><span class="p">,</span> <span class="n">mapath</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
+            <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;prefix&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;prefix&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
+
+            <span class="k">if</span> <span class="n">mapname</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">refname</span><span class="p">:</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;onlyreport&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+                    <span class="n">refmap</span><span class="o">.</span><span class="n">write_contacts</span><span class="p">(</span><span class="n">mapname</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span>
+                                          <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span>
+                                          <span class="n">scoremap</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">refmap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scoremap&quot;</span><span class="p">,</span>
+                                                                   <span class="kc">None</span><span class="p">))</span>
+                <span class="k">continue</span>
+
+            <span class="n">prefix</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">vs</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protname</span><span class="p">,</span> <span class="n">mapt</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">reftype</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;prefix&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
+            <span class="n">scoremap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[(</span><span class="n">mapname</span><span class="p">,</span> <span class="n">mapt</span><span class="p">,</span> <span class="n">mapath</span><span class="p">)]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                <span class="s1">&#39;scoremap&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+            <span class="c1"># if self.allresmap[mapt].get(&quot;maplot&quot;) is not None and \</span>
+            <span class="c1">#         self.allresmap[mapt].get(&quot;scoremap&quot;) is not None:</span>
+            <span class="c1">#     Get top contact map/list</span>
+            <span class="c1">#     cmpmap = self.allresmap[mapt][&quot;maplot&quot;].topmap(</span>
+            <span class="c1">#         self.allresmap[mapt][&quot;scoremap&quot;], nb_c)</span>
+            <span class="c1">#     cmplist = self.allresmap[mapt][&#39;scoremap&#39;].sortedset(</span>
+            <span class="c1">#         human_idx=True)[:nb_c]</span>
+            <span class="c1"># elif self.allresmap[mapt].get(&quot;maplot&quot;) is not None:</span>
+            <span class="c1">#     If no score given, use all contact list</span>
+            <span class="n">cmpmap</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[(</span><span class="n">mapname</span><span class="p">,</span> <span class="n">mapt</span><span class="p">,</span> <span class="n">mapath</span><span class="p">)][</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span>
+            <span class="n">cmplist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[(</span><span class="n">mapname</span><span class="p">,</span> <span class="n">mapt</span><span class="p">,</span> <span class="n">mapath</span><span class="p">)][</span>
+                <span class="s1">&#39;maplot&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">contact_list</span><span class="p">(</span><span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+            <span class="c1"># else:</span>
+            <span class="c1">#     LOG.warning(&quot;%s map doesn&#39;t have any score related. Can&#39;t &quot;</span>
+            <span class="c1">#                    &quot;define top list related to this map&quot;, mapt)</span>
+            <span class="c1">#     continue</span>
+
+            <span class="c1"># TODO: only one function for output files</span>
+            <span class="c1"># Write contact list in txt file</span>
+            <span class="n">refmap</span><span class="o">.</span><span class="n">report</span><span class="p">(</span><span class="n">cmpmap</span><span class="p">,</span> <span class="n">scoremap</span><span class="o">=</span><span class="n">scoremap</span><span class="p">,</span>
+                          <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span>
+                          <span class="n">plotag</span><span class="o">=</span><span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                              <span class="s2">&quot;onlyreport&quot;</span><span class="p">),</span>
+                          <span class="n">plotdir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;graphics&quot;</span><span class="p">,</span> <span class="n">outdir</span><span class="p">)</span>
+                          <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                              <span class="s2">&quot;onlyreport&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">outdir</span><span class="p">)</span>
+            <span class="c1"># Contact map comparison plot</span>
+            <span class="c1"># TODO: elementwise error with compare method</span>
+            <span class="c1"># Write cmp stats</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;onlyreport&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+                <span class="n">cmpmap</span><span class="o">.</span><span class="n">write_contacts</span><span class="p">(</span><span class="n">mapname</span><span class="p">,</span>
+                                      <span class="n">scoremap</span><span class="o">=</span><span class="n">scoremap</span><span class="p">,</span>
+                                      <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">)</span>
+                <span class="n">cmpmap</span><span class="o">.</span><span class="n">compare_contactmap</span><span class="p">(</span><span class="n">refmap</span><span class="p">,</span> <span class="n">cmplist</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span>
+                                          <span class="n">distmap</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">refmap</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">],</span>
+                                          <span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                                          <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">)</span>
+                <span class="n">refmap</span><span class="o">.</span><span class="n">compareplot</span><span class="p">(</span><span class="n">cmpmap</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span>
+                                   <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span>
+                                   <span class="n">save_fig</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                                       <span class="s2">&quot;save_fig&quot;</span><span class="p">),</span>
+                                   <span class="n">alpha</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                                       <span class="s2">&quot;alpha&quot;</span><span class="p">),</span>
+                                   <span class="o">**</span><span class="n">plotparams</span><span class="p">)</span></div></div>
+                <span class="c1"># Contingency table</span>
+                <span class="c1"># print(cmpmap.to_series())</span>
+                <span class="c1"># LOG.info(pd.crosstab(cmpmap.values, refmap.values,</span>
+                <span class="c1">#                         rownames=[mapt], colnames=[self.reftype]))</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/ndconv.html b/examples-dev/olds/_build/html/_modules/ariaec/ndconv.html
new file mode 100644
index 0000000..139d782
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/ndconv.html
@@ -0,0 +1,385 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.ndconv &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.ndconv</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.ndconv</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Network deconvolution tool</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="net_deconv"><a class="viewcode-back" href="../../ariaec.html#ariaec.ndconv.net_deconv">[docs]</a><span class="k">def</span> <span class="nf">net_deconv</span><span class="p">(</span><span class="n">npmat</span><span class="p">,</span> <span class="n">beta</span><span class="o">=</span><span class="mf">0.99</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">control</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    This is a python implementation/translation of network deconvolution by</span>
+<span class="sd">    MIT-KELLIS LAB</span>
+<span class="sd">    </span>
+<span class="sd">    </span>
+<span class="sd">     LICENSE: MIT-KELLIS LAB</span>
+<span class="sd">    </span>
+<span class="sd">    </span>
+<span class="sd">     AUTHORS:</span>
+<span class="sd">        Algorithm was programmed by Soheil Feizi.</span>
+<span class="sd">        Paper authors are S. Feizi, D. Marbach,  M. Medard and M. Kellis</span>
+<span class="sd">    Python implementation: Gideon Rosenthal</span>
+<span class="sd">    </span>
+<span class="sd">    REFERENCES:</span>
+<span class="sd">       For more details, see the following paper:</span>
+<span class="sd">        Network Deconvolution as a General Method to Distinguish</span>
+<span class="sd">        Direct Dependencies over Networks</span>
+<span class="sd">        By: Soheil Feizi, Daniel Marbach,  Muriel Medard and Manolis Kellis</span>
+<span class="sd">        Nature Biotechnology</span>
+<span class="sd">    </span>
+<span class="sd">    --------------------------------------------------------------------------</span>
+<span class="sd">     ND.m: network deconvolution</span>
+<span class="sd">    --------------------------------------------------------------------------</span>
+<span class="sd">    </span>
+<span class="sd">    DESCRIPTION:</span>
+<span class="sd">    </span>
+<span class="sd">        USAGE:</span>
+<span class="sd">            mat_nd = ND(npmat)</span>
+<span class="sd">            mat_nd = ND(npmat,beta)</span>
+<span class="sd">            mat_nd = ND(npmat,beta,alpha,control)</span>
+<span class="sd">    </span>
+<span class="sd">    </span>
+<span class="sd">    INPUT ARGUMENTS:</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+<span class="sd">    npmat :</span>
+<span class="sd">        Input matrix, if it is a square matrix, the program assumes</span>
+<span class="sd">        it is a relevance matrix where npmat(i,j) represents the</span>
+<span class="sd">        similarity content between nodes i and j. Elements of</span>
+<span class="sd">        matrix should be non-negative.</span>
+<span class="sd">        optional parameters:</span>
+<span class="sd">    beta :</span>
+<span class="sd">        Scaling parameter, the program maps the largest absolute</span>
+<span class="sd">        eigenvalue of the direct dependency matrix to beta. It</span>
+<span class="sd">        should be between 0 and 1. (Default value = 0.99)</span>
+<span class="sd">    alpha :</span>
+<span class="sd">        fraction of edges of the observed dependency matrix to be</span>
+<span class="sd">        kept in deconvolution process. (Default value = 1)</span>
+<span class="sd">    control :</span>
+<span class="sd">        if 0, displaying direct weights for observed</span>
+<span class="sd">        interactions, if 1, displaying direct weights for both</span>
+<span class="sd">        observed and</span>
+<span class="sd">        non-observed interactions.</span>
+<span class="sd">        OUTPUT ARGUMENTS:</span>
+<span class="sd">        mat_nd        Output deconvolved matrix (direct dependency matrix). Its</span>
+<span class="sd">        components</span>
+<span class="sd">        represent direct edge weights of observed interactions.</span>
+<span class="sd">        Choosing top direct interactions (a cut-off) depends on</span>
+<span class="sd">        the application and</span>
+<span class="sd">        is not implemented in this code.</span>
+<span class="sd">        To apply ND on regulatory networks, follow steps explained in</span>
+<span class="sd">        Supplementary notes</span>
+<span class="sd">        1.4.1 and 2.1 and 2.3 of the paper.</span>
+<span class="sd">        In this implementation, input matrices are made symmetric.</span>
+<span class="sd">        **************************************************************************</span>
+<span class="sd">        loading scaling and thresholding parameters (Default value = 0)</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="kn">import</span> <span class="nn">scipy.stats.mstats</span> <span class="k">as</span> <span class="nn">stat</span>
+    <span class="kn">from</span> <span class="nn">numpy</span> <span class="k">import</span> <span class="n">linalg</span> <span class="k">as</span> <span class="n">la</span>
+
+    <span class="k">if</span> <span class="n">beta</span> <span class="o">&gt;=</span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">beta</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;error: beta should be in (0,1)&#39;</span><span class="p">)</span>
+
+    <span class="k">if</span> <span class="n">alpha</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">alpha</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">:</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;error: alpha should be in (0,1)&#39;</span><span class="p">)</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+<span class="sd">    ***********************************</span>
+<span class="sd">     Processing the input matrix</span>
+<span class="sd">     diagonal values are filtered</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+
+    <span class="c1"># n = npmat.shape[0]</span>
+    <span class="n">np</span><span class="o">.</span><span class="n">fill_diagonal</span><span class="p">(</span><span class="n">npmat</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+<span class="sd">    Thresholding the input matrix</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">stat</span><span class="o">.</span><span class="n">mquantiles</span><span class="p">(</span><span class="n">npmat</span><span class="p">[:],</span> <span class="n">prob</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="n">alpha</span><span class="p">])</span>
+    <span class="n">th</span> <span class="o">=</span> <span class="n">npmat</span> <span class="o">&gt;=</span> <span class="n">y</span>
+    <span class="n">mat_th</span> <span class="o">=</span> <span class="n">npmat</span> <span class="o">*</span> <span class="n">th</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+<span class="sd">    making the matrix symetric if already not</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+    <span class="n">mat_th</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_th</span> <span class="o">+</span> <span class="n">mat_th</span><span class="o">.</span><span class="n">T</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+<span class="sd">    ***********************************</span>
+<span class="sd">    eigen decomposition</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">&#39;Decomposition and deconvolution...&#39;</span><span class="p">)</span>
+
+    <span class="c1"># noinspection PyTypeChecker</span>
+    <span class="n">dv</span><span class="p">,</span> <span class="n">u</span> <span class="o">=</span> <span class="n">la</span><span class="o">.</span><span class="n">eigh</span><span class="p">(</span><span class="n">mat_th</span><span class="p">)</span>
+    <span class="n">d</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">dv</span><span class="p">)</span>
+    <span class="n">lam_n</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">d</span><span class="p">)),</span> <span class="mi">0</span><span class="p">))</span>
+    <span class="n">lam_p</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">d</span><span class="p">)),</span> <span class="mi">0</span><span class="p">))</span>
+
+    <span class="n">m1</span> <span class="o">=</span> <span class="n">lam_p</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">beta</span><span class="p">)</span> <span class="o">/</span> <span class="n">beta</span>
+    <span class="n">m2</span> <span class="o">=</span> <span class="n">lam_n</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">beta</span><span class="p">)</span> <span class="o">/</span> <span class="n">beta</span>
+    <span class="n">m</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">m1</span><span class="p">,</span> <span class="n">m2</span><span class="p">)</span>
+
+    <span class="c1"># network deconvolution</span>
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
+        <span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">i</span><span class="p">])</span> <span class="o">/</span> <span class="p">(</span><span class="n">m</span> <span class="o">+</span> <span class="n">d</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">i</span><span class="p">])</span>
+
+    <span class="n">mat_new1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">la</span><span class="o">.</span><span class="n">inv</span><span class="p">(</span><span class="n">u</span><span class="p">)))</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+
+<span class="sd">    ***********************************</span>
+<span class="sd">     displaying direct weights</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+    <span class="k">if</span> <span class="n">control</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+        <span class="n">ind_edges</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_th</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.0</span>
+        <span class="n">ind_nonedges</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_th</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.0</span>
+        <span class="n">m1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">npmat</span> <span class="o">*</span> <span class="n">ind_nonedges</span><span class="p">))</span>
+        <span class="n">m2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mat_new1</span><span class="p">))</span>
+        <span class="n">mat_new2</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_new1</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">m1</span> <span class="o">-</span> <span class="n">m2</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="o">*</span> <span class="n">ind_edges</span> <span class="o">+</span> <span class="p">(</span>
+            <span class="n">npmat</span> <span class="o">*</span> <span class="n">ind_nonedges</span><span class="p">)</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">m2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mat_new1</span><span class="p">))</span>
+        <span class="n">mat_new2</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_new1</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="o">-</span><span class="n">m2</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+
+    <span class="sd">&#39;&#39;&#39;</span>
+<span class="sd">    ***********************************</span>
+<span class="sd">     linearly mapping the deconvolved matrix to be between 0 and 1</span>
+<span class="sd">    &#39;&#39;&#39;</span>
+    <span class="n">m1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">(</span><span class="n">mat_new2</span><span class="p">))</span>
+    <span class="n">m2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">mat_new2</span><span class="p">))</span>
+    <span class="n">mat_nd</span> <span class="o">=</span> <span class="p">(</span><span class="n">mat_new2</span> <span class="o">-</span> <span class="n">m1</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">m2</span> <span class="o">-</span> <span class="n">m1</span><span class="p">)</span>
+
+    <span class="k">return</span> <span class="n">mat_nd</span></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/pdbdist.html b/examples-dev/olds/_build/html/_modules/ariaec/pdbdist.html
new file mode 100644
index 0000000..e669fdc
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/pdbdist.html
@@ -0,0 +1,646 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.pdbdist &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.pdbdist</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.pdbdist</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                        PDB distance distribution generation</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
+<span class="kn">import</span> <span class="nn">pbxplore</span> <span class="k">as</span> <span class="nn">pbx</span>
+<span class="kn">from</span> <span class="nn">glob</span> <span class="k">import</span> <span class="n">glob</span>
+
+<span class="kn">from</span> <span class="nn">Bio.PDB</span> <span class="k">import</span> <span class="n">PDBList</span><span class="p">,</span> <span class="n">PDBParser</span><span class="p">,</span> <span class="n">Selection</span><span class="p">,</span> <span class="n">is_aa</span><span class="p">,</span> <span class="n">NeighborSearch</span><span class="p">,</span> \
+    <span class="n">MMCIFParser</span>
+<span class="kn">from</span> <span class="nn">Bio.PDB.DSSP</span> <span class="k">import</span> <span class="n">dssp_dict_from_pdb_file</span>
+<span class="kn">from</span> <span class="nn">future.utils</span> <span class="k">import</span> <span class="n">iteritems</span>
+<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span><span class="p">,</span> <span class="n">OrderedDict</span>
+
+<span class="c1"># from .base import ppdict</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">Capturing</span>
+<span class="kn">from</span> <span class="nn">.reader</span> <span class="k">import</span> <span class="n">CulledPdbFile</span>
+<span class="kn">from</span> <span class="nn">.protmap</span> <span class="k">import</span> <span class="n">ResAtmMap</span>
+
+<span class="kn">from</span> <span class="nn">aria.legacy.AminoAcid</span> <span class="k">import</span> <span class="n">AminoAcid</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="PDBDist"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbdist.PDBDist">[docs]</a><span class="k">class</span> <span class="nc">PDBDist</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Extract pdb distance distribution from culled list of pdb files provided by</span>
+<span class="sd">    PICSES server [G. Wang and R. L. Dunbrack, Jr. PISCES: a protein sequence</span>
+<span class="sd">    culling server. Bioinformatics, 19:1589-1591, 2003.] with Bio.PDB tools</span>
+<span class="sd">    [Hamelryck, T., Manderick, B. (2003) PDB pdbparser and structure class</span>
+<span class="sd">    implemented in Python. Bioinformatics 19: 2308–2310]</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">_obsoletedir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+            <span class="s1">&#39;obsolete_directory&#39;</span><span class="p">,</span> <span class="s1">&#39;/tmp/obsolete&#39;</span><span class="p">)</span>
+        <span class="c1"># Setting trash directory for old downloaded pdbs</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_obsoletedir</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">F_OK</span><span class="p">):</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> directory does not exist. Making a new directory&quot;</span><span class="p">,</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">_obsoletedir</span><span class="p">)</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_obsoletedir</span><span class="p">)</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">pdblist</span> <span class="o">=</span> <span class="n">PDBList</span><span class="p">(</span><span class="n">obsolete_pdb</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_obsoletedir</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">pdbparser</span> <span class="o">=</span> <span class="n">PDBParser</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mmcifparser</span> <span class="o">=</span> <span class="n">MMCIFParser</span><span class="p">()</span>
+
+<div class="viewcode-block" id="PDBDist.get_proteinblocks"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbdist.PDBDist.get_proteinblocks">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">get_proteinblocks</span><span class="p">(</span><span class="n">pdb</span><span class="p">,</span> <span class="n">chain</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get Protein Block assignment index for chain with pbxplore</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        pdb : pdb file path</span>
+<span class="sd">            </span>
+<span class="sd">        chain : str</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="n">Capturing</span><span class="p">()</span> <span class="k">as</span> <span class="n">output</span><span class="p">:</span>
+            <span class="n">chain</span> <span class="o">=</span> <span class="p">[</span><span class="n">ch</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">pbx</span><span class="o">.</span><span class="n">chains_from_files</span><span class="p">([</span><span class="n">pdb</span><span class="p">])</span>
+                     <span class="k">if</span> <span class="n">ch</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">chain</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+            <span class="k">if</span> <span class="n">output</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
+
+        <span class="c1"># Assign protein blocks</span>
+        <span class="n">tmpblocks</span> <span class="o">=</span> <span class="n">pbx</span><span class="o">.</span><span class="n">assign</span><span class="p">(</span><span class="n">chain</span><span class="o">.</span><span class="n">get_phi_psi_angles</span><span class="p">())</span>
+        <span class="c1"># Get related list of resid</span>
+        <span class="n">sequence</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="n">atm</span><span class="o">.</span><span class="n">resid</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="n">chain</span><span class="o">.</span><span class="n">atoms</span><span class="p">])</span>
+        <span class="c1"># In case of missing residues, define result as default dict</span>
+        <span class="n">pblocks</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
+
+        <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">res_id</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sequence</span><span class="p">):</span>
+            <span class="n">pblocks</span><span class="p">[</span><span class="n">res_id</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">tmpblocks</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span>
+
+        <span class="k">return</span> <span class="n">pblocks</span></div>
+
+    <span class="c1"># TODO: similar function in another part of the package, have to merge them</span>
+<div class="viewcode-block" id="PDBDist.get_secstructs"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbdist.PDBDist.get_secstructs">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">get_secstructs</span><span class="p">(</span><span class="n">backbone</span><span class="p">,</span> <span class="n">dssp_dict</span><span class="p">,</span> <span class="n">chain</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Return related secondary structure dictionary for each backbone residue</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        backbone : :obj: `list` of :obj: `Bio.PDB.Residue.Residue`</span>
+<span class="sd">            List of bacbkone residues</span>
+<span class="sd">        dssp_dict :</span>
+<span class="sd">            </span>
+<span class="sd">        chain :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Computing secondary structure index&quot;</span><span class="p">)</span>
+        <span class="n">ss_idx</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">)</span>
+        <span class="n">ss_count</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;H&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;E&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;X&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
+
+        <span class="c1"># Sort backbone by resid</span>
+        <span class="n">backbone</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">backbone</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">resx</span><span class="p">:</span> <span class="n">resx</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+        <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">res_x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">backbone</span><span class="p">):</span>
+
+            <span class="n">resid_x</span> <span class="o">=</span> <span class="n">res_x</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+            <span class="c1"># Get secondary structure in dssp dict or set ss as X element</span>
+            <span class="n">ss_x</span> <span class="o">=</span> <span class="n">dssp_dict</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="n">chain</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="n">resid_x</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">)),</span> <span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;X&quot;</span><span class="p">))[</span><span class="mi">1</span><span class="p">]</span>
+            <span class="n">ss_x</span> <span class="o">=</span> <span class="s2">&quot;X&quot;</span> <span class="k">if</span> <span class="n">ss_x</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="n">ss_x</span>
+            <span class="c1"># Udate secondary structure index for residue x</span>
+            <span class="n">ss_idx</span><span class="p">[</span><span class="n">resid_x</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ss_x</span><span class="p">,</span> <span class="n">ss_count</span><span class="p">[</span><span class="n">ss_x</span><span class="p">])</span>
+
+            <span class="c1"># Check if next residue still belongs to the same secondary</span>
+            <span class="c1"># structure</span>
+            <span class="k">if</span> <span class="n">idx</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">backbone</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="n">resid_j</span> <span class="o">=</span> <span class="n">backbone</span><span class="p">[</span><span class="n">idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">ss_j</span> <span class="o">=</span> <span class="n">dssp_dict</span><span class="o">.</span><span class="n">get</span><span class="p">((</span><span class="n">chain</span><span class="p">,</span> <span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="n">resid_j</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="p">)),</span> <span class="p">(</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;X&quot;</span><span class="p">))[</span><span class="mi">1</span><span class="p">]</span>
+                <span class="n">ss_j</span> <span class="o">=</span> <span class="s2">&quot;X&quot;</span> <span class="k">if</span> <span class="n">ss_j</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="n">ss_j</span>
+
+                <span class="k">if</span> <span class="n">ss_x</span> <span class="o">!=</span> <span class="n">ss_j</span><span class="p">:</span>
+                    <span class="c1"># If end of secondary structure element, increase related ss</span>
+                    <span class="c1"># count</span>
+                    <span class="n">ss_count</span><span class="p">[</span><span class="n">ss_x</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">ss_idx</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">ss_idx</span></div>
+
+<div class="viewcode-block" id="PDBDist.pdbdists"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbdist.PDBDist.pdbdists">[docs]</a>    <span class="k">def</span> <span class="nf">pdbdists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pdb</span><span class="p">,</span> <span class="n">pdbid</span><span class="p">,</span> <span class="n">chain</span><span class="p">,</span> <span class="n">pair_list</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get distance matrix from pdb file and write distances into output file</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        pdb : str</span>
+<span class="sd">            Path of pdb file</span>
+<span class="sd">        pdbid : str</span>
+<span class="sd">            PDB id</span>
+<span class="sd">        chain : str</span>
+<span class="sd">            Chain id</span>
+<span class="sd">        pair_list : {&#39;all&#39;, &#39;min&#39;, &#39;heavy&#39;}</span>
+<span class="sd">            Defining if we generate a distance distribution for a minimal set</span>
+<span class="sd">            of atom pairs, heavy pairs or all atom pairs (Default value = &quot;all&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        dists: :obj: `list` of :obj: `OrderedDict`</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: Do we have to take disordered atoms into account ?</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Compute atom distances for chain </span><span class="si">%s</span><span class="s2"> of </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">chain</span><span class="p">,</span> <span class="n">pdbid</span><span class="p">)</span>
+        <span class="c1"># out = &quot;&quot;</span>
+        <span class="n">dists</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">cutoff</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;contact_cutoff&quot;</span><span class="p">)</span>
+        <span class="c1"># Check if dssp executable exists otherwise we can&#39;t find secondary</span>
+        <span class="c1"># structures</span>
+        <span class="n">dssp_exec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dssp_exec&quot;</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">dssp_exec</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">F_OK</span><span class="p">):</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;DSSP executable not found. Check if dssp_exec parameter&quot;</span>
+                      <span class="s2">&quot; in config file is correct !&quot;</span><span class="p">)</span>
+            <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+
+        <span class="c1"># Get chain structure object with Bio.PDB pdbparser or mmcifparser</span>
+        <span class="c1">#  (related to model 0)</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">pdb</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;.pdb&#39;</span><span class="p">,</span> <span class="s1">&#39;.ent&#39;</span><span class="p">):</span>
+            <span class="n">structure</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pdbparser</span><span class="o">.</span><span class="n">get_structure</span><span class="p">(</span><span class="n">pdbid</span><span class="p">,</span> <span class="n">pdb</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="n">chain</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">structure</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mmcifparser</span><span class="o">.</span><span class="n">get_structure</span><span class="p">(</span><span class="n">pdbid</span><span class="p">,</span> <span class="n">pdb</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="n">chain</span><span class="p">]</span>
+
+        <span class="c1"># Get list of residues by ignoring heteroatoms, water molecules</span>
+        <span class="c1"># by looking at the hetero-flag in residue id (H_ for hetero atoms or</span>
+        <span class="c1"># W_ for water molecules) with only one resx object by amino acid (ca</span>
+        <span class="c1"># filter). Also ignore insertion mutants</span>
+        <span class="n">residues</span> <span class="o">=</span> <span class="p">[</span><span class="n">res</span> <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">structure</span><span class="o">.</span><span class="n">get_residues</span><span class="p">()</span>
+                    <span class="k">if</span> <span class="n">res</span><span class="o">.</span><span class="n">get_id</span><span class="p">()[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;H&#39;</span><span class="p">,</span> <span class="s1">&#39;W&#39;</span><span class="p">]</span>
+                    <span class="ow">and</span> <span class="n">res</span><span class="o">.</span><span class="n">get_id</span><span class="p">()[</span><span class="mi">2</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39; &#39;</span>
+                    <span class="ow">and</span> <span class="n">is_aa</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="ow">and</span> <span class="n">res</span><span class="o">.</span><span class="n">has_id</span><span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">)]</span>
+
+        <span class="c1"># Unfold atom list related to selected residues</span>
+        <span class="n">atoms</span> <span class="o">=</span> <span class="n">Selection</span><span class="o">.</span><span class="n">unfold_entities</span><span class="p">(</span><span class="n">residues</span><span class="p">,</span> <span class="s2">&quot;A&quot;</span><span class="p">)</span>
+
+        <span class="c1"># Get dssp dictionary and related dssp keys from pdb file</span>
+        <span class="n">logging</span><span class="o">.</span><span class="n">captureWarnings</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
+
+        <span class="k">try</span><span class="p">:</span>
+            <span class="n">dssp_dict</span><span class="p">,</span> <span class="n">dssp_keys</span> <span class="o">=</span> <span class="n">dssp_dict_from_pdb_file</span><span class="p">(</span>
+                <span class="n">pdb</span><span class="p">,</span> <span class="n">DSSP</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;dssp_exec&quot;</span><span class="p">))</span>
+        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
+            <span class="k">return</span> <span class="kc">None</span>
+
+        <span class="c1"># Compute secondary structure index</span>
+        <span class="n">ss_idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_secstructs</span><span class="p">(</span><span class="n">residues</span><span class="p">,</span> <span class="n">dssp_dict</span><span class="p">,</span> <span class="n">chain</span><span class="p">)</span>
+        <span class="n">pb_idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_proteinblocks</span><span class="p">(</span><span class="n">pdb</span><span class="p">,</span> <span class="n">chain</span><span class="p">)</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Protein Blocks assignment (</span><span class="si">%s</span><span class="s2">):</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">pb_idx</span><span class="p">),</span> <span class="n">pb_idx</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Secondary structure index (</span><span class="si">%s</span><span class="s2">):</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">ss_idx</span><span class="p">),</span> <span class="n">ss_idx</span><span class="p">)</span>
+
+        <span class="c1"># TODO: could be a better idea to use protmap.AtmMap class</span>
+        <span class="c1"># Initialize square checking matrix (if a resx has already been seen)</span>
+        <span class="n">atoms_idx</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">([</span><span class="n">atmx</span><span class="o">.</span><span class="n">get_serial_number</span><span class="p">()</span> <span class="k">for</span> <span class="n">atmx</span> <span class="ow">in</span> <span class="n">atoms</span><span class="p">])</span>
+        <span class="n">seen</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">atoms_idx</span><span class="p">,</span>
+                            <span class="n">columns</span><span class="o">=</span><span class="n">atoms_idx</span><span class="p">)</span>
+
+        <span class="c1"># Initialize Neighbor searching object</span>
+        <span class="n">neighsearch</span> <span class="o">=</span> <span class="n">NeighborSearch</span><span class="p">(</span><span class="n">atoms</span><span class="p">)</span>
+
+        <span class="k">for</span> <span class="n">resx</span> <span class="ow">in</span> <span class="n">residues</span><span class="p">:</span>
+
+            <span class="n">resx_name</span> <span class="o">=</span> <span class="n">AminoAcid</span><span class="p">(</span><span class="n">resx</span><span class="o">.</span><span class="n">get_resname</span><span class="p">())[</span><span class="mi">0</span><span class="p">]</span>
+            <span class="n">resx_id</span> <span class="o">=</span> <span class="n">resx</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+            <span class="n">ssx</span> <span class="o">=</span> <span class="n">ss_idx</span><span class="p">[</span><span class="n">resx_id</span><span class="p">]</span>
+            <span class="n">pblocx</span> <span class="o">=</span> <span class="n">pb_idx</span><span class="p">[</span><span class="n">resx_id</span><span class="p">]</span>
+
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Start at residue </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">) with </span><span class="si">%s</span><span class="s2"> atoms&quot;</span><span class="p">,</span> <span class="n">resx_id</span><span class="p">,</span>
+                      <span class="n">resx_name</span><span class="p">,</span> <span class="n">resx</span><span class="o">.</span><span class="n">get_list</span><span class="p">())</span>
+
+            <span class="k">for</span> <span class="n">atmx</span> <span class="ow">in</span> <span class="n">resx</span><span class="o">.</span><span class="n">get_list</span><span class="p">():</span>
+
+                <span class="n">atmx_id</span> <span class="o">=</span> <span class="n">atmx</span><span class="o">.</span><span class="n">get_serial_number</span><span class="p">()</span>
+                <span class="n">atmx_name</span> <span class="o">=</span> <span class="n">atmx</span><span class="o">.</span><span class="n">get_name</span><span class="p">()</span>
+
+                <span class="c1"># Find neighboring res around atom in resi within defined cutoff</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Looking for residues in contact with atom </span><span class="si">%s</span><span class="s2"> of res &quot;</span>
+                          <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">atmx_name</span><span class="p">,</span> <span class="n">resx_name</span><span class="p">,</span> <span class="n">resx_id</span><span class="p">)</span>
+                <span class="n">neighbors</span> <span class="o">=</span> <span class="n">neighsearch</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
+                    <span class="n">atmx</span><span class="o">.</span><span class="n">get_coord</span><span class="p">(),</span> <span class="n">cutoff</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="s2">&quot;R&quot;</span><span class="p">)</span>
+                <span class="c1"># Select long range contacts</span>
+                <span class="n">longr_contacts</span> <span class="o">=</span> <span class="p">[</span><span class="n">res</span> <span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">neighbors</span> <span class="k">if</span>
+                                  <span class="nb">abs</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">resx_id</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">5</span><span class="p">]</span>
+
+                <span class="c1"># For each residue in contact with the selected atom</span>
+                <span class="k">for</span> <span class="n">resy</span> <span class="ow">in</span> <span class="n">longr_contacts</span><span class="p">:</span>
+
+                    <span class="n">resy_name</span> <span class="o">=</span> <span class="n">AminoAcid</span><span class="p">(</span><span class="n">resy</span><span class="o">.</span><span class="n">get_resname</span><span class="p">())[</span><span class="mi">0</span><span class="p">]</span>
+                    <span class="n">resy_id</span> <span class="o">=</span> <span class="n">resy</span><span class="o">.</span><span class="n">id</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+                    <span class="n">ssy</span> <span class="o">=</span> <span class="n">ss_idx</span><span class="p">[</span><span class="n">resy_id</span><span class="p">]</span>
+                    <span class="n">pblocy</span> <span class="o">=</span> <span class="n">pb_idx</span><span class="p">[</span><span class="n">resy_id</span><span class="p">]</span>
+
+                    <span class="c1"># Ignore disulfide bridges and unkonwn residues</span>
+                    <span class="k">if</span> <span class="p">(</span><span class="n">resx_name</span> <span class="o">==</span> <span class="s2">&quot;CYS&quot;</span> <span class="ow">and</span> <span class="n">resy_name</span> <span class="o">==</span> <span class="s2">&quot;CYS&quot;</span><span class="p">)</span> \
+                            <span class="ow">or</span> <span class="ow">not</span> <span class="n">resx_name</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">resy_name</span><span class="p">:</span>
+                        <span class="k">continue</span>
+
+                    <span class="n">scx_name</span><span class="p">,</span> <span class="n">scy_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">[</span><span class="n">resx_name</span><span class="p">][</span>
+                        <span class="n">resy_name</span><span class="p">]</span>
+
+                    <span class="k">if</span> <span class="p">(</span><span class="n">pair_list</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span> <span class="ow">and</span>
+                            <span class="n">atmx_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">,</span> <span class="s2">&quot;CB&quot;</span><span class="p">,</span> <span class="n">scx_name</span><span class="p">))</span> <span class="ow">or</span> \
+                            <span class="p">(</span><span class="n">pair_list</span> <span class="o">==</span> <span class="s2">&quot;heavy&quot;</span>
+                             <span class="ow">and</span> <span class="ow">not</span> <span class="n">ResAtmMap</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">atmx_name</span><span class="p">)):</span>
+                        <span class="k">continue</span>
+
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Contact detected for atom </span><span class="si">%s</span><span class="s2"> of res </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">) with&quot;</span>
+                              <span class="s2">&quot; res </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                              <span class="n">atmx_name</span><span class="p">,</span> <span class="n">resx_id</span><span class="p">,</span> <span class="n">resx_name</span><span class="p">,</span> <span class="n">resy_id</span><span class="p">,</span> <span class="n">resy_name</span><span class="p">)</span>
+
+                    <span class="c1"># Define secondary structure type</span>
+                    <span class="n">ss_type</span> <span class="o">=</span> <span class="n">ssx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">ssy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+                    <span class="k">if</span> <span class="n">ssx</span> <span class="o">!=</span> <span class="n">ssy</span><span class="p">:</span>
+                        <span class="k">if</span> <span class="n">ss_type</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;HH&quot;</span><span class="p">,</span> <span class="s2">&quot;EE&quot;</span><span class="p">,</span> <span class="s2">&quot;HE&quot;</span><span class="p">,</span> <span class="s2">&quot;EH&quot;</span><span class="p">):</span>
+                            <span class="c1"># Contact between helice or beta strand</span>
+                            <span class="n">ss_type</span> <span class="o">=</span> <span class="s2">&quot;HE&quot;</span> <span class="k">if</span> <span class="n">ss_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;HH&quot;</span><span class="p">,</span> <span class="s2">&quot;EE&quot;</span><span class="p">)</span> \
+                                <span class="k">else</span> <span class="n">ss_type</span>
+                        <span class="k">else</span><span class="p">:</span>
+                            <span class="c1"># Contact with loops or other secondary</span>
+                            <span class="c1"># structure</span>
+                            <span class="n">ss_type</span> <span class="o">=</span> <span class="s2">&quot;XH&quot;</span> <span class="k">if</span> <span class="s2">&quot;H&quot;</span> <span class="ow">in</span> <span class="n">ss_type</span> <span class="k">else</span> <span class="s2">&quot;XE&quot;</span> \
+                                <span class="k">if</span> <span class="s2">&quot;E&quot;</span> <span class="ow">in</span> <span class="n">ss_type</span> <span class="k">else</span> <span class="s2">&quot;XX&quot;</span>
+                    <span class="k">else</span><span class="p">:</span>
+                        <span class="c1"># Same secondary structure</span>
+                        <span class="n">ss_type</span> <span class="o">=</span> <span class="n">ssx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+                    <span class="c1"># PB type</span>
+                    <span class="n">pb_type</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">pblocx</span> <span class="o">+</span> <span class="n">pblocy</span><span class="p">))</span>
+
+                    <span class="k">for</span> <span class="n">atmy</span> <span class="ow">in</span> <span class="n">resy</span><span class="o">.</span><span class="n">get_list</span><span class="p">():</span>
+
+                        <span class="n">atmy_id</span> <span class="o">=</span> <span class="n">atmy</span><span class="o">.</span><span class="n">get_serial_number</span><span class="p">()</span>
+                        <span class="n">atmy_name</span> <span class="o">=</span> <span class="n">atmy</span><span class="o">.</span><span class="n">get_name</span><span class="p">()</span>
+                        <span class="c1"># Filter atom pairs if pair_list is not equal to &quot;all&quot;</span>
+
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Contact filter: </span><span class="si">%s</span><span class="s2">-</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">) </span><span class="si">%s</span><span class="s2">-</span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                                  <span class="n">resx_name</span><span class="p">,</span> <span class="n">resy_name</span><span class="p">,</span> <span class="n">resx_id</span><span class="p">,</span> <span class="n">resy_id</span><span class="p">,</span>
+                                  <span class="n">atmx_name</span><span class="p">,</span> <span class="n">atmy_name</span><span class="p">,</span> <span class="n">atmx_id</span><span class="p">,</span> <span class="n">atmy_id</span><span class="p">)</span>
+
+                        <span class="k">if</span> <span class="p">(</span><span class="n">pair_list</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span> <span class="ow">and</span>
+                                <span class="n">atmy_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;CA&quot;</span><span class="p">,</span> <span class="s2">&quot;CB&quot;</span><span class="p">,</span> <span class="n">scy_name</span><span class="p">))</span> <span class="ow">or</span> \
+                                <span class="p">(</span><span class="n">pair_list</span> <span class="o">==</span> <span class="s2">&quot;heavy&quot;</span>
+                                 <span class="ow">and</span> <span class="ow">not</span> <span class="n">ResAtmMap</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">atmy_name</span><span class="p">)):</span>
+                            <span class="n">seen</span><span class="p">[</span><span class="n">atmx_id</span><span class="p">][</span><span class="n">atmy_id</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+                            <span class="n">seen</span><span class="p">[</span><span class="n">atmy_id</span><span class="p">][</span><span class="n">atmx_id</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+                            <span class="k">continue</span>
+
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;...valid&quot;</span><span class="p">)</span>
+
+                        <span class="k">if</span> <span class="ow">not</span> <span class="n">seen</span><span class="p">[</span><span class="n">atmx_id</span><span class="p">][</span><span class="n">atmy_id</span><span class="p">]:</span>
+                            <span class="c1"># If contact between two atoms not already seen,</span>
+                            <span class="c1"># write distance in the output file</span>
+                            <span class="n">dist</span> <span class="o">=</span> <span class="n">atmx</span> <span class="o">-</span> <span class="n">atmy</span>
+
+                            <span class="n">dists</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">OrderedDict</span><span class="p">([</span>
+                                <span class="p">(</span><span class="s1">&#39;pdbid&#39;</span><span class="p">,</span> <span class="n">pdbid</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;ss_type&#39;</span><span class="p">,</span> <span class="n">ss_type</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;ssx&#39;</span><span class="p">,</span> <span class="n">ssx</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;ssy&#39;</span><span class="p">,</span> <span class="n">ssy</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;pb_type&#39;</span><span class="p">,</span> <span class="n">pb_type</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;pblocx&#39;</span><span class="p">,</span> <span class="n">pblocx</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;pblocy&#39;</span><span class="p">,</span> <span class="n">pblocy</span><span class="p">),</span> <span class="p">(</span><span class="s1">&#39;resx_id&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">resx_id</span><span class="p">)),</span>
+                                <span class="p">(</span><span class="s1">&#39;resy_id&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">resy_id</span><span class="p">)),</span>
+                                <span class="p">(</span><span class="s1">&#39;resx_name&#39;</span><span class="p">,</span> <span class="n">resx_name</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;resy_name&#39;</span><span class="p">,</span> <span class="n">resy_name</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;atmx_id&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">atmx_id</span><span class="p">)),</span>
+                                <span class="p">(</span><span class="s1">&#39;atmy_id&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">atmy_id</span><span class="p">)),</span>
+                                <span class="p">(</span><span class="s1">&#39;atmx_name&#39;</span><span class="p">,</span> <span class="n">atmx_name</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;atmy_name&#39;</span><span class="p">,</span> <span class="n">atmy_name</span><span class="p">),</span>
+                                <span class="p">(</span><span class="s1">&#39;dist&#39;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">dist</span><span class="p">))</span>
+                            <span class="p">]))</span>
+
+                            <span class="n">seen</span><span class="p">[</span><span class="n">atmx_id</span><span class="p">][</span><span class="n">atmy_id</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+                            <span class="n">seen</span><span class="p">[</span><span class="n">atmy_id</span><span class="p">][</span><span class="n">atmx_id</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
+        <span class="k">return</span> <span class="n">dists</span></div>
+
+<div class="viewcode-block" id="PDBDist.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbdist.PDBDist.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;main method&quot;&quot;&quot;</span>
+
+        <span class="c1"># Set pdb directory</span>
+        <span class="n">outdir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;output_directory&quot;</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">())</span>
+        <span class="n">pdbdir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;pdbdir&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;pdbdir&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">pdbdir</span><span class="p">,</span>
+                                                                         <span class="n">os</span><span class="o">.</span><span class="n">F_OK</span><span class="p">):</span>
+
+            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;download_pdbs&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
+                    <span class="s2">&quot;PDB directory not given and download inactivated.&quot;</span>
+                    <span class="s2">&quot; PDBDist command can&#39;t download pdb files.&quot;</span><span class="p">)</span>
+                <span class="k">return</span> <span class="kc">None</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="c1"># We have to download all files so we set outdir as pdbdir</span>
+                <span class="n">pdbdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">outdir</span><span class="p">),</span> <span class="s1">&#39;pdbs&#39;</span><span class="p">)</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">pdbdir</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">F_OK</span><span class="p">):</span>
+                    <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">pdbdir</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">pdbdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">pdbdir</span><span class="p">)</span>
+
+        <span class="n">pair_flag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;pair_list&quot;</span><span class="p">,</span> <span class="s2">&quot;all&quot;</span><span class="p">)</span>
+        <span class="n">distpath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">outdir</span><span class="p">,</span> <span class="s2">&quot;pdbdists.dat&quot;</span><span class="p">)</span>
+        <span class="n">distpath</span> <span class="o">=</span> <span class="n">distpath</span> <span class="k">if</span> <span class="n">pair_flag</span> <span class="ow">in</span> <span class="n">distpath</span> <span class="k">else</span> \
+            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">distpath</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="o">+</span> <span class="n">pair_flag</span> <span class="o">+</span> \
+            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">distpath</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
+
+        <span class="c1"># Load cullpdb file</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading culled list of pdb file(s)&quot;</span><span class="p">)</span>
+        <span class="n">cullfile</span> <span class="o">=</span> <span class="n">CulledPdbFile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cullpdbs&quot;</span><span class="p">))</span>
+        <span class="n">cullfile</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
+
+        <span class="c1"># Load all pdb files and generate distance file</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Looking for pdb entries into </span><span class="si">%s</span><span class="s2"> folder&quot;</span><span class="p">,</span> <span class="n">pdbdir</span><span class="p">)</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">distpath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">distfile</span><span class="p">:</span>
+
+            <span class="k">for</span> <span class="n">idline</span><span class="p">,</span> <span class="n">pdbent</span> <span class="ow">in</span> <span class="n">iteritems</span><span class="p">(</span><span class="n">cullfile</span><span class="o">.</span><span class="n">lines</span><span class="p">):</span>
+
+                <span class="n">pdbid</span> <span class="o">=</span> <span class="n">pdbent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;pdb_id&quot;</span><span class="p">)</span>
+
+                <span class="c1"># Download file if necessary</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">glob</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">/*</span><span class="si">%s</span><span class="s1">*&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pdbdir</span><span class="p">,</span> <span class="n">pdbid</span><span class="o">.</span><span class="n">lower</span><span class="p">())):</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Download pdb entry for </span><span class="si">%s</span><span class="s2"> pdb&quot;</span><span class="p">,</span> <span class="n">pdbid</span><span class="p">)</span>
+                    <span class="k">try</span><span class="p">:</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">pdblist</span><span class="o">.</span><span class="n">retrieve_pdb_file</span><span class="p">(</span><span class="n">pdbid</span><span class="p">,</span> <span class="n">pdir</span><span class="o">=</span><span class="n">pdbdir</span><span class="p">,</span>
+                                                       <span class="n">file_format</span><span class="o">=</span><span class="s2">&quot;pdb&quot;</span><span class="p">)</span>
+                    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
+                        <span class="k">continue</span>
+                    <span class="k">if</span> <span class="ow">not</span> <span class="n">glob</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">/*</span><span class="si">%s</span><span class="s1">*&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pdbdir</span><span class="p">,</span> <span class="n">pdbid</span><span class="o">.</span><span class="n">lower</span><span class="p">())):</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Error during download, try to download in &quot;</span>
+                                 <span class="s2">&quot;mmCIF format&quot;</span><span class="p">)</span>
+                        <span class="k">try</span><span class="p">:</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">pdblist</span><span class="o">.</span><span class="n">retrieve_pdb_file</span><span class="p">(</span><span class="n">pdbid</span><span class="p">,</span> <span class="n">pdir</span><span class="o">=</span><span class="n">pdbdir</span><span class="p">,</span>
+                                                           <span class="n">file_format</span><span class="o">=</span><span class="s2">&quot;mmCif&quot;</span><span class="p">)</span>
+                        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">msg</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
+                            <span class="k">continue</span>
+
+                <span class="n">pdbpaths</span> <span class="o">=</span> <span class="n">glob</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">/*</span><span class="si">%s</span><span class="s1">*&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pdbdir</span><span class="p">,</span> <span class="n">pdbid</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Found </span><span class="si">%s</span><span class="s2"> file(s) related to </span><span class="si">%s</span><span class="s2"> pdb entry into </span><span class="si">%s</span><span class="s2"> folder &quot;</span>
+                          <span class="s2">&quot;(</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">pdbpaths</span><span class="p">),</span> <span class="n">pdbid</span><span class="p">,</span> <span class="n">pdbdir</span><span class="p">,</span> <span class="n">pdbpaths</span><span class="p">)</span>
+
+                <span class="c1"># Get distance matrix from pdb file and write distances into</span>
+                <span class="c1"># output file</span>
+                <span class="n">dists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pdbdists</span><span class="p">(</span>
+                    <span class="n">pdbpaths</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">pdbid</span><span class="p">,</span> <span class="n">pdbent</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;chain_id&quot;</span><span class="p">),</span>
+                    <span class="n">pair_list</span><span class="o">=</span><span class="n">pair_flag</span><span class="p">)</span>
+
+                <span class="k">if</span> <span class="n">idline</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing header line&quot;</span><span class="p">)</span>
+                    <span class="n">header</span> <span class="o">=</span> <span class="p">[</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">dists</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()]</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">header</span><span class="p">))</span>
+                    <span class="n">distfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">header</span><span class="p">))</span>
+
+                <span class="k">for</span> <span class="n">dist</span> <span class="ow">in</span> <span class="n">dists</span><span class="p">:</span>
+                    <span class="n">distfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">dist</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">header</span><span class="p">]))</span>
+
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbdist</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;remove_pdbs&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Remove </span><span class="si">%s</span><span class="s2"> pdb file&quot;</span><span class="p">,</span> <span class="n">pdbid</span><span class="p">)</span>
+                    <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">pdbpaths</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;PDBdist finished&quot;</span><span class="p">)</span></div></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/pdbqual.html b/examples-dev/olds/_build/html/_modules/ariaec/pdbqual.html
new file mode 100644
index 0000000..2623c8e
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/pdbqual.html
@@ -0,0 +1,278 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.pdbqual &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.pdbqual</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.pdbqual</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">Created on 9/5/16</span>
+<span class="sd">@author: fallain</span>
+
+<span class="sd">Derived from qual.py script by Dr. Benjamin Bardiaux</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">shutil</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+
+<span class="kn">from</span> <span class="nn">aria.legacy.QualityChecks</span> <span class="k">import</span> <span class="n">QualityChecks</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">CommandProtocol</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="AriaEcPdbqual"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbqual.AriaEcPdbqual">[docs]</a><span class="k">class</span> <span class="nc">AriaEcPdbqual</span><span class="p">(</span><span class="n">CommandProtocol</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Quality pdb tool&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AriaEcPdbqual</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+<div class="viewcode-block" id="AriaEcPdbqual.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.pdbqual.AriaEcPdbqual.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Starting quality runs with </span><span class="si">%s</span><span class="s2"> file(s)&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">])</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Copying file(s) to output directory&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">infile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">]:</span>
+            <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">infile</span><span class="p">)</span> <span class="o">!=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">]):</span>
+                <span class="n">shutil</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">infile</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">])</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">])</span>
+        <span class="n">QualityChecks</span><span class="o">.</span><span class="n">runChecks</span><span class="p">(</span>
+            <span class="n">workingDirectory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">],</span>
+            <span class="n">trashDirectory</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;trash_directory&quot;</span><span class="p">],</span>
+            <span class="n">prosaOnOff</span><span class="o">=</span><span class="mi">1</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;prosa&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="mi">0</span><span class="p">,</span>
+            <span class="n">procheckExe</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="p">[</span><span class="s2">&quot;procheck_executable&quot;</span><span class="p">],</span>
+            <span class="n">whatIfExe</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="p">[</span><span class="s2">&quot;whatif_executable&quot;</span><span class="p">],</span>
+            <span class="n">clashlistExe</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="p">[</span><span class="s2">&quot;clashlist_executable&quot;</span><span class="p">],</span>
+            <span class="n">prosaExe</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="p">[</span><span class="s2">&quot;prosa_executable&quot;</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">main</span><span class="p">[</span><span class="s2">&quot;prosa_executable&quot;</span><span class="p">]</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+            <span class="n">cshExe</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;csh_executable&quot;</span><span class="p">],</span>
+            <span class="n">howManyPdb</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">]),</span>
+            <span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
+            <span class="n">fileList</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">],</span>
+            <span class="n">skipPrefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;skip_prefix&quot;</span><span class="p">]</span>
+        <span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> generated&quot;</span><span class="p">,</span>
+                 <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">],</span>
+                              <span class="n">QualityChecks</span><span class="o">.</span><span class="n">FILENAME_REPORT</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Removing infile(s) in output directory </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">])</span>
+        <span class="p">[</span><span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">],</span>
+                         <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">infile</span><span class="p">)))</span>
+         <span class="k">for</span> <span class="n">infile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;infiles&quot;</span><span class="p">]</span>
+         <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">pdbqual</span><span class="p">[</span><span class="s2">&quot;output_directory&quot;</span><span class="p">],</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">infile</span><span class="p">)))]</span></div></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/protein.html b/examples-dev/olds/_build/html/_modules/ariaec/protein.html
new file mode 100644
index 0000000..88f8a22
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/protein.html
@@ -0,0 +1,861 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.protein &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.protein</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.protein</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Secondary structure list</span>
+<span class="sd">&quot;&quot;&quot;</span>
+
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span><span class="p">,</span> \
+    <span class="n">unicode_literals</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">pkg_resources</span> <span class="k">as</span> <span class="nn">pkgr</span>
+<span class="kn">import</span> <span class="nn">aria.legacy.SequenceList</span> <span class="k">as</span> <span class="nn">SequenceList</span>
+<span class="kn">import</span> <span class="nn">aria.legacy.AminoAcid</span> <span class="k">as</span> <span class="nn">AmnAcd</span>
+<span class="kn">from</span> <span class="nn">six</span> <span class="k">import</span> <span class="n">iteritems</span><span class="p">,</span> <span class="n">text_type</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="p">(</span><span class="n">reg_load</span><span class="p">,</span> <span class="n">ppdict</span><span class="p">)</span>
+<span class="c1"># import skbio.Protein as skprot</span>
+<span class="c1"># TODO: interface skbio ??</span>
+
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<span class="c1"># TODO: implement psipred format 3.5</span>
+<div class="viewcode-block" id="SsList"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList">[docs]</a><span class="k">class</span> <span class="nc">SsList</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Reader for secondary prediction structure files&quot;&quot;&quot;</span>
+    <span class="n">psipred_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^(?P&lt;up_index&gt;\d+)&#39;</span>
+                             <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;up_residue&gt;[AC-IK-NP-TVWYZ])&#39;</span>
+                             <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;ss_pred&gt;[HEC])&#39;</span>
+                             <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;ss_conf&gt;\d?)&#39;</span><span class="p">)</span>
+    <span class="n">psipred2_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^(?P&lt;ss_pred&gt;[HEC]+)&#39;</span><span class="p">)</span>
+    <span class="n">indxplus_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+        <span class="sa">r</span><span class="s1">&#39;^(?P&lt;up_index&gt;\d+)\s+(?P&lt;up_residue&gt;[AC-IK-NP-TVWYZ])\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;ss_pred&gt;[CEH])\s+(?P&lt;ss_conf&gt;\d)\s+(?P&lt;msa_index&gt;[\d\-]+)\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;msa_consper&gt;[\d\-]+)\s+(?P&lt;msa_cons&gt;[*~\-])\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;in_const&gt;[*~\-])\s+(?P&lt;pdb_atom&gt;[\d\-]+)\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;pdb_chain&gt;[\-\w])\s+(?P&lt;pdb_index&gt;[\d\-]+\w?)\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;pdb_residue&gt;[AC-IK-NP-TVWYZ\-])\s+(?P&lt;pdb_x_pos&gt;[\d.\-]+)\s+&#39;</span>
+        <span class="sa">r</span><span class="s1">&#39;(?P&lt;pdb_y_pos&gt;[\d.\-]+)\s+(?P&lt;pdb_z_pos&gt;[\d\-.]+)&#39;</span><span class="p">)</span>
+    <span class="n">ss_dist_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;\s+(\d+\.\d+) \( (\d+\.\d+)\)&quot;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sett</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param sett:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">sett</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">ssdist</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+    <span class="k">def</span> <span class="nf">__bool__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span> <span class="k">else</span> <span class="kc">False</span>
+
+    <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__bool__</span><span class="p">()</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">:</span>
+            <span class="c1"># Assuming human idx (1 ...) correspond to ss_matrix first column !!!</span>
+            <span class="k">return</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">_</span><span class="p">)</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">)[</span><span class="mi">0</span><span class="p">]]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="p">[]</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">:</span>
+            <span class="k">return</span> <span class="p">[</span><span class="n">_</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">)[</span><span class="mi">2</span><span class="p">]]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="p">[]</span>
+
+<div class="viewcode-block" id="SsList.check_filetype"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.check_filetype">[docs]</a>    <span class="k">def</span> <span class="nf">check_filetype</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span></div>
+        <span class="c1"># TODO: check if given file is supported</span>
+
+<div class="viewcode-block" id="SsList.read"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">check_filetype</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading secondary structure file </span><span class="si">%s</span><span class="s2"> [</span><span class="si">%s</span><span class="s2">]&quot;</span><span class="p">,</span>
+                 <span class="n">filename</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+        <span class="c1"># TODO: better read with getattr</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;indextableplus&quot;</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">read_indextableplus</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">read_psipred</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Secondary structure list:</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span>
+                  <span class="s2">&quot;Secondary structure dict:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">,</span>
+                  <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="SsList.read_psipred"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.read_psipred">[docs]</a>    <span class="k">def</span> <span class="nf">read_psipred</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span> <span class="o">=</span> <span class="n">reg_load</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">psipred_reg</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
+        <span class="c1"># TODO: supprimer psipred_list dans les futures implementations</span>
+        <span class="n">ss_index_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;H&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;E&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
+        <span class="k">for</span> <span class="n">line_id</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
+            <span class="c1"># Modif champ ss_pred</span>
+            <span class="c1"># Si line_id</span>
+            <span class="k">if</span> <span class="n">line_id</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> \
+                    <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">]:</span>
+                <span class="c1"># If next ss isn&#39;t the same, increment relative struct in</span>
+                <span class="c1"># ss_index_dict</span>
+                <span class="n">ss_index_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span>
+
+            <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">],</span>
+                 <span class="nb">str</span><span class="p">(</span><span class="n">ss_index_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">]])))</span>
+
+            <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;up_index&#39;</span><span class="p">],</span>
+                                   <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;up_residue&#39;</span><span class="p">],</span>
+                                   <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">],</span>
+                                   <span class="bp">self</span><span class="o">.</span><span class="n">ssdict</span><span class="p">[</span><span class="n">line_id</span><span class="p">][</span><span class="s1">&#39;ss_conf&#39;</span><span class="p">]])</span></div>
+
+<div class="viewcode-block" id="SsList.write_ssfasta"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.write_ssfasta">[docs]</a>    <span class="k">def</span> <span class="nf">write_ssfasta</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;pdbid&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            param desc:</span>
+<span class="sd">        desc :</span>
+<span class="sd">            (Default value = &quot;pdbid&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="s1">&#39;w&#39;</span><span class="p">))</span> <span class="k">as</span> <span class="n">psipred</span><span class="p">:</span>
+            <span class="n">psipred</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="s2">&quot;&gt; </span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">desc</span><span class="p">))</span>
+            <span class="n">psipred</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">_</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">)[</span><span class="mi">2</span><span class="p">]])))</span></div>
+
+<div class="viewcode-block" id="SsList.read_indextableplus"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.read_indextableplus">[docs]</a>    <span class="k">def</span> <span class="nf">read_indextableplus</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">error_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">ss_index_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;H&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;E&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="p">:</span>
+                <span class="n">indxplus_match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indxplus_reg</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                <span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;up_&quot;</span><span class="p">):</span>
+                    <span class="k">continue</span>
+                <span class="k">elif</span> <span class="n">indxplus_match</span><span class="p">:</span>
+
+                    <span class="c1"># TODO: Other method to replace ss code ?</span>
+                    <span class="c1"># =&gt; build indx_list with group_dict !</span>
+                    <span class="n">ss</span> <span class="o">=</span> <span class="n">indxplus_match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">)</span>
+                    <span class="n">ss_start</span> <span class="o">=</span> <span class="n">indxplus_match</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="s1">&#39;ss_pred&#39;</span><span class="p">)</span>
+                    <span class="n">line</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">line</span><span class="p">[:</span><span class="n">ss_start</span><span class="p">],</span> <span class="n">ss</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">ss_index_dict</span><span class="p">[</span><span class="n">ss</span><span class="p">]),</span>
+                                    <span class="n">line</span><span class="p">[</span><span class="n">ss_start</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">]])</span>
+                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">ss</span><span class="p">:</span>
+                        <span class="c1"># Si ss est une structure secondaire diff, on incremente</span>
+                        <span class="c1"># la valeur de l&#39;ancienne dans ss_index_dict</span>
+                        <span class="n">ss_index_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span>
+
+                    <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
+                    <span class="n">c</span> <span class="o">+=</span> <span class="mi">1</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">error_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+            <span class="k">try</span><span class="p">:</span>
+                <span class="k">assert</span> <span class="n">c</span> <span class="o">==</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span>
+            <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
+                <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;Uneven number of matching lines (</span><span class="si">%d</span><span class="s1">) &#39;</span>
+                         <span class="s1">&#39;vs up_index (</span><span class="si">%d</span><span class="s1">) : lines </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">c</span><span class="p">,</span>
+                                                          <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span>
+                                                                  <span class="o">-</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]),</span>
+                                                          <span class="nb">str</span><span class="p">(</span><span class="n">error_list</span><span class="p">)))</span></div>
+
+    <span class="k">def</span> <span class="nf">_read_ssdist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">infile</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        infile :</span>
+<span class="sd">            param filename:</span>
+<span class="sd">        filename :</span>
+<span class="sd">            (Default value = &#39;&#39;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading distance file </span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
+        <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">atom_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">infile</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">+=</span> <span class="mi">1</span>
+            <span class="n">line_list</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\t</span><span class="s1">&#39;</span><span class="p">)</span>
+            <span class="n">dist_sdev_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_dist_reg</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;i&#39;</span><span class="p">):</span>
+                <span class="n">atom_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">elt</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">elt</span> <span class="ow">in</span> <span class="n">line_list</span><span class="p">[</span><span class="mi">1</span><span class="p">:]]</span>
+            <span class="k">elif</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^([HE],[HE]\+\d)&#39;</span><span class="p">,</span> <span class="n">line</span><span class="p">):</span>
+                <span class="n">bond_type</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">ssdist</span><span class="p">[</span><span class="n">bond_type</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">dist_sdev_list</span><span class="p">):</span>
+                    <span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">dist</span><span class="p">),</span> <span class="nb">float</span><span class="p">(</span><span class="n">sdev</span><span class="p">)</span>
+                    <span class="k">if</span> <span class="n">sdev</span> <span class="o">&lt;</span> <span class="mf">0.1</span><span class="p">:</span>
+                        <span class="c1"># TODO: explain more why we choose 0.1 as treshold !</span>
+                        <span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">ssdist</span><span class="p">[</span><span class="n">bond_type</span><span class="p">][</span><span class="n">atom_list</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="p">(</span><span class="n">dist</span><span class="p">,</span> <span class="n">sdev</span><span class="p">)</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">dist_sdev_list</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom_list</span><span class="p">)</span>
+                <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
+                    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span>
+                        <span class="s1">&#39;Error at </span><span class="si">%s</span><span class="s1">, line </span><span class="si">%d</span><span class="s1"> : uneven number of columns &#39;</span>
+                        <span class="s1">&#39;between current line and header&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">c</span><span class="p">))</span>
+
+<div class="viewcode-block" id="SsList.read_ssdist"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.read_ssdist">[docs]</a>    <span class="k">def</span> <span class="nf">read_ssdist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ssdistpath</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Read average dist file generated using PDB</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        ssdistpath :</span>
+<span class="sd">            return: (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">ssdistpath</span><span class="p">)</span> <span class="k">if</span> <span class="n">ssdistpath</span> <span class="k">else</span> <span class="kc">None</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading ss dist file&quot;</span><span class="p">)</span>
+        <span class="k">try</span><span class="p">:</span>
+            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_read_ssdist</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="n">filename</span><span class="p">)</span>
+        <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">message</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Can&#39;t load given ss dist file...&quot;</span><span class="p">)</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Loading default ss dist file&quot;</span><span class="p">)</span>
+            <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">SS_DIST</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_read_ssdist</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">SS_DIST</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="SsList.seq_sublist"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.SsList.seq_sublist">[docs]</a>    <span class="k">def</span> <span class="nf">seq_sublist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Check and  adjust sslist with given sequence</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sequence :</span>
+<span class="sd">            input amino acid sequence (one letter format)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Adjust sslist related to sequence </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">sequence</span><span class="p">))</span>
+        <span class="n">tableplus_inv</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">)</span>
+        <span class="c1"># Get amino acid sequence related to secondary structure prediction</span>
+        <span class="n">tableplus_seq</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tableplus_inv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+        <span class="k">if</span> <span class="n">sequence</span> <span class="ow">in</span> <span class="n">tableplus_seq</span><span class="p">:</span>
+            <span class="n">imin</span> <span class="o">=</span> <span class="n">tableplus_seq</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span>
+            <span class="n">imax</span> <span class="o">=</span> <span class="n">imin</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span>
+            <span class="k">try</span><span class="p">:</span>
+                <span class="k">assert</span> <span class="n">tableplus_seq</span><span class="p">[</span><span class="n">imin</span><span class="p">:</span><span class="n">imax</span><span class="p">]</span> <span class="o">==</span> <span class="n">sequence</span>
+            <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
+                <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;Missing residues in indextableplus file&#39;</span><span class="p">)</span>
+
+            <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">imin</span><span class="p">:</span><span class="n">imax</span><span class="p">]</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Secondary structure matrix relative to given &quot;</span>
+                      <span class="s2">&quot;sequence:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">)</span></div></div>
+            <span class="c1"># TODO: read_dssp</span>
+
+
+<div class="viewcode-block" id="AminoAcidSequence"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.AminoAcidSequence">[docs]</a><span class="k">class</span> <span class="nc">AminoAcidSequence</span><span class="p">(</span><span class="n">SequenceList</span><span class="o">.</span><span class="n">SequenceList</span><span class="p">,</span> <span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Amino acid sequence&quot;&quot;&quot;</span>
+    <span class="n">startres_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*residue\s+(?P&lt;name&gt;[A-Za-z]{1,4})&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
+    <span class="n">end_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*end&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
+    <span class="n">restatement_reg</span> <span class="o">=</span> <span class="p">{</span>
+        <span class="s2">&quot;atom&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;atom\s+(?P&lt;name&gt;\w{1,4})\s*(?:.*?&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;(?:(?:type=(?P&lt;type&gt;\w{1,4}))|&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;(?:&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;(?:charge= ?)(?P&lt;charge&gt;-?\d\.\d{1,3}))|&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;(?:(?:mass=)(?P&lt;mass&gt;[- ]\d\.\d{1,3}))|&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;(?:(?:excl\s*=\s*)\((?P&lt;exclude&gt;[^(]+)\)))){1,4}&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;\s*end&quot;</span><span class="p">,</span>
+                           <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">),</span>
+        <span class="s2">&quot;bond&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;bond\s+(?P&lt;atm1&gt;\w{1,4})\s+(?P&lt;atm2&gt;\w{1,4})&quot;</span><span class="p">,</span>
+                           <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">),</span>
+        <span class="s2">&quot;improper&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;improper\s+(?P&lt;atm1&gt;\w{1,4})&quot;</span>
+                               <span class="sa">r</span><span class="s2">&quot;\s+(?P&lt;atm2&gt;\w{1,4})\s+(?P&lt;atm3&gt;\w{1,4})&quot;</span>
+                               <span class="sa">r</span><span class="s2">&quot;\s+(?P&lt;atm4&gt;\w{1,4})&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">),</span>
+        <span class="s2">&quot;dihedral&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;dihedral\s+(?P&lt;atm1&gt;\w{1,4})&quot;</span>
+                               <span class="sa">r</span><span class="s2">&quot;\s+(?P&lt;atm2&gt;\w{1,4})\s+(?P&lt;atm3&gt;\w{1,4})&quot;</span>
+                               <span class="sa">r</span><span class="s2">&quot;\s+(?P&lt;atm4&gt;\w{1,4})&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">),</span>
+        <span class="s2">&quot;dono&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;dono\s+(?P&lt;hatm&gt;\w{1,4})\s+(?:(?P&lt;heavatm&gt;\w{1,&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;4})|(?:</span><span class="se">\&quot;</span><span class="s2">\s*</span><span class="se">\&quot;</span><span class="s2">))?&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">),</span>
+        <span class="s2">&quot;acce&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^\s*acce\s+(?P&lt;accatm&gt;\w{1,4})\s+(?:(?P&lt;antatm&gt;\w{1,&quot;</span>
+                           <span class="sa">r</span><span class="s2">&quot;4})|(?:</span><span class="se">\&quot;</span><span class="s2">\s*</span><span class="se">\&quot;</span><span class="s2">))&quot;</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
+    <span class="p">}</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">topologyfile</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param topologyfile:</span>
+<span class="sd">        :param args:</span>
+<span class="sd">        :param kwargs:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AminoAcidSequence</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_topfile</span> <span class="o">=</span> <span class="n">topologyfile</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_topology</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_topok</span> <span class="o">=</span> <span class="kc">False</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">humanidx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">topology</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Topology dict with 3l code as dict key</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_topology</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_topok</span><span class="p">:</span>
+            <span class="n">topo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">readtopo</span><span class="p">()</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aalist</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_topology</span> <span class="o">=</span> <span class="p">[(</span><span class="n">aa</span><span class="p">,</span> <span class="n">topo</span><span class="p">[</span><span class="n">aa</span><span class="p">])</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">aalist</span><span class="p">]</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_topok</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_topology</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">iteritems</span><span class="p">(</span><span class="n">topo</span><span class="p">))</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_topology</span>
+
+    <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param key:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">aalist</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="s2">&quot;Amino Acid sequence </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span>
+                                                <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">))</span>
+
+<div class="viewcode-block" id="AminoAcidSequence.readtopo"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.AminoAcidSequence.readtopo">[docs]</a>    <span class="k">def</span> <span class="nf">readtopo</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Parse topology file for amino acids</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">topo</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_topfile</span><span class="p">)</span> <span class="k">as</span> <span class="n">tpf</span><span class="p">:</span>
+            <span class="n">res_flag</span> <span class="o">=</span> <span class="kc">False</span>
+            <span class="n">resname</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">tpf</span><span class="p">:</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">res_flag</span><span class="p">:</span>
+                    <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">startres_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                    <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                        <span class="n">res_flag</span> <span class="o">=</span> <span class="kc">True</span>
+                        <span class="n">resname</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">)</span>
+                        <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="c1"># Check if end of residue statement</span>
+                    <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                    <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                        <span class="n">res_flag</span> <span class="o">=</span> <span class="kc">False</span>
+                        <span class="n">resname</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+                        <span class="k">continue</span>
+                    <span class="c1"># Walk along reg dict</span>
+                    <span class="k">for</span> <span class="n">regid</span><span class="p">,</span> <span class="n">reg</span> <span class="ow">in</span> <span class="n">iteritems</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">restatement_reg</span><span class="p">):</span>
+                        <span class="k">if</span> <span class="n">regid</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">]:</span>
+                            <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">][</span><span class="n">regid</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
+                        <span class="k">if</span> <span class="n">regid</span> <span class="o">==</span> <span class="s2">&quot;bond&quot;</span><span class="p">:</span>
+                            <span class="n">match</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">reg</span><span class="p">,</span> <span class="n">line</span><span class="p">)</span>
+                            <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                                <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">][</span><span class="n">regid</span><span class="p">]</span> <span class="o">+=</span> <span class="n">match</span>
+                                <span class="k">break</span>
+                        <span class="k">else</span><span class="p">:</span>
+                            <span class="n">match</span> <span class="o">=</span> <span class="n">reg</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                            <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                                <span class="k">if</span> <span class="n">regid</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;improper&quot;</span><span class="p">,</span> <span class="s2">&quot;dihedral&quot;</span><span class="p">):</span>
+                                    <span class="c1"># Add tuple into list since we need atm order</span>
+                                    <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">][</span><span class="n">regid</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">groups</span><span class="p">())</span>
+                                <span class="k">else</span><span class="p">:</span>
+                                    <span class="c1"># Add dict</span>
+                                    <span class="n">topo</span><span class="p">[</span><span class="n">resname</span><span class="p">][</span><span class="n">regid</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">())</span>
+                                <span class="k">break</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Topology used:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">ppdict</span><span class="p">(</span><span class="n">topo</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">topo</span></div>
+
+<div class="viewcode-block" id="AminoAcidSequence.read"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.AminoAcidSequence.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: smarter reader checking type of file (fasta, etc ...)</span>
+        <span class="c1"># TODO: capturing has some troubles with unicode ...</span>
+        <span class="c1"># with Capturing() as output:</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filename</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;.seq&#39;</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">ReadSeq</span><span class="p">(</span><span class="n">text_type</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">ReadFasta</span><span class="p">(</span><span class="n">text_type</span><span class="p">(</span><span class="n">filename</span><span class="p">))</span>
+        <span class="c1"># LOG.info(&#39;&#39;.join(output))</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">AmnAcd</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">_</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span>
+                                 <span class="bp">self</span><span class="o">.</span><span class="n">aalist</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Amino acid sequence:</span><span class="se">\t</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="Protein"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.Protein">[docs]</a><span class="k">class</span> <span class="nc">Protein</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Protein class&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sett</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param sett:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span> <span class="o">=</span> <span class="n">AminoAcidSequence</span><span class="p">(</span><span class="n">sett</span><span class="o">.</span><span class="n">TOPO</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span> <span class="o">=</span> <span class="n">SsList</span><span class="p">(</span><span class="n">sett</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="p">[]</span>  <span class="c1"># Index starting from 1</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">seqfile_path</span> <span class="o">=</span> <span class="sa">u</span><span class="s1">&#39;&#39;</span>
+
+<div class="viewcode-block" id="Protein.sync_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.Protein.sync_index">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">sync_index</span><span class="p">(</span><span class="n">index1</span><span class="p">,</span> <span class="n">index2</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Return humanidx with upper min from existing humanidx</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        index1 :</span>
+<span class="sd">            param index2:</span>
+<span class="sd">        index2 :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="n">index1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">index2</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">index1</span>
+        <span class="k">elif</span> <span class="n">index2</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">index1</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">index2</span>
+        <span class="k">elif</span> <span class="ow">not</span> <span class="n">index1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">index2</span><span class="p">:</span>
+            <span class="k">return</span> <span class="p">[]</span>
+        <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">index1</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">index2</span><span class="p">):</span>
+            <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="n">index1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="nb">min</span><span class="p">(</span><span class="n">index2</span><span class="p">):</span>
+                <span class="k">return</span> <span class="n">index2</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">return</span> <span class="n">index1</span>
+        <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">index1</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">index2</span><span class="p">):</span>
+            <span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span>
+                <span class="s2">&quot;Please check humanidx list from input files. They &quot;</span>
+                <span class="s2">&quot;are not the same length !&quot;</span><span class="p">)</span></div>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">topology</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">topology</span>
+
+<div class="viewcode-block" id="Protein.set_aa_sequence"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.Protein.set_aa_sequence">[docs]</a>    <span class="k">def</span> <span class="nf">set_aa_sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">ssidx</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            param ssidx:</span>
+<span class="sd">        ssidx :</span>
+<span class="sd">            (Default value = False)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">seq_sublist</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">ssidx</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using secondary structure index for amino acid &quot;</span>
+                         <span class="s2">&quot;sequence&quot;</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sync_index</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">humanidx</span><span class="p">,</span>
+                                             <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">index</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Protein.set_sec_struct"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.Protein.set_sec_struct">[docs]</a>    <span class="k">def</span> <span class="nf">set_sec_struct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">ssdist_filename</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">ssidx</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            param ssdist_filename:</span>
+<span class="sd">        ssidx :</span>
+<span class="sd">            return: (Default value = False)</span>
+<span class="sd">        ssdist_filename :</span>
+<span class="sd">            (Default value = &#39;&#39;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: Add test checking if both amino acid and sec_struct sequence</span>
+        <span class="c1"># have the same length after seq_sublist call</span>
+        <span class="c1"># Read secondary structure prediction file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">ssdist_filename</span><span class="p">:</span>
+            <span class="c1"># Read secondary distance matrix</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">read_ssdist</span><span class="p">(</span><span class="n">ssdist_filename</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;No secondary structure distance file found. Please &quot;</span>
+                      <span class="s2">&quot;check configuration file&quot;</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">:</span>
+            <span class="c1"># Synchronise sec structure sequence with aa sequence</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Align secondary structure sequence with protein &quot;</span>
+                     <span class="s2">&quot;sequence&quot;</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">seq_sublist</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">ssidx</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using secondary structure index for amino acid &quot;</span>
+                     <span class="s2">&quot;sequence&quot;</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sync_index</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">humanidx</span><span class="p">,</span>
+                                         <span class="bp">self</span><span class="o">.</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">index</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Protein.write_seq"><a class="viewcode-back" href="../../ariaec.html#ariaec.protein.Protein.write_seq">[docs]</a>    <span class="k">def</span> <span class="nf">write_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">outfile</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        outfile :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: same as above, trouble with unicode calls inside capturing</span>
+        <span class="c1"># with Capturing() as output:</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">WriteSeq</span><span class="p">(</span><span class="n">text_type</span><span class="p">(</span><span class="n">outfile</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">seqfile_path</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">outfile</span></div></div>
+
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
+    <span class="kn">from</span> <span class="nn">.settings</span> <span class="k">import</span> <span class="n">AriaEcSettings</span>
+    <span class="n">settings</span> <span class="o">=</span> <span class="n">AriaEcSettings</span><span class="p">(</span><span class="s2">&quot;setup&quot;</span><span class="p">)</span>
+    <span class="n">prot</span> <span class="o">=</span> <span class="n">Protein</span><span class="p">(</span><span class="n">settings</span><span class="p">)</span>
+    <span class="n">prot</span><span class="o">.</span><span class="n">set_aa_sequence</span><span class="p">(</span><span class="s2">&quot;../examples/data/BPT1_BOVIN.fa&quot;</span><span class="p">)</span>
+    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">prot</span><span class="o">.</span><span class="n">aa_sequence</span><span class="p">)</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/protmap.html b/examples-dev/olds/_build/html/_modules/ariaec/protmap.html
new file mode 100644
index 0000000..bd9f8bd
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/protmap.html
@@ -0,0 +1,2743 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.protmap &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.protmap</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.protmap</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                    ARIA Evolutionary Constraints Tools</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span>
+<span class="kn">from</span> <span class="nn">copy</span> <span class="k">import</span> <span class="n">deepcopy</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">csv</span>
+<span class="kn">import</span> <span class="nn">six</span>
+<span class="kn">import</span> <span class="nn">string</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">textwrap</span>
+<span class="kn">import</span> <span class="nn">datetime</span>
+<span class="kn">import</span> <span class="nn">operator</span>
+<span class="kn">import</span> <span class="nn">itertools</span>
+<span class="kn">import</span> <span class="nn">collections</span>
+
+<span class="kn">import</span> <span class="nn">matplotlib</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
+<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
+<span class="kn">import</span> <span class="nn">sklearn.metrics</span> <span class="k">as</span> <span class="nn">skm</span>
+
+<span class="kn">import</span> <span class="nn">aria.ConversionTable</span> <span class="k">as</span> <span class="nn">ConversionTable</span>
+<span class="kn">import</span> <span class="nn">aria.legacy.AminoAcid</span> <span class="k">as</span> <span class="nn">AminoAcid</span>
+
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="k">import</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">plt</span>
+<span class="kn">from</span> <span class="nn">matplotlib.lines</span> <span class="k">import</span> <span class="n">Line2D</span>
+
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="p">(</span><span class="n">tickmin</span><span class="p">,</span> <span class="n">tickrot</span><span class="p">,</span> <span class="n">titleprint</span><span class="p">,</span> <span class="n">addtup</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">.ndconv</span> <span class="k">import</span> <span class="n">net_deconv</span>
+
+
+<span class="n">matplotlib</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s2">&quot;Agg&quot;</span><span class="p">,</span> <span class="n">warn</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+<span class="c1"># TODO: check dataframe symmetry or always use unstack</span>
+<span class="c1"># TODO: objet MapContainer contenant les differentes maps en attributs ! (et</span>
+<span class="c1"># non en clef de dict)</span>
+
+
+<div class="viewcode-block" id="Map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map">[docs]</a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Distance/contact matrix&quot;&quot;&quot;</span>
+
+    <span class="n">mtype_choices</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;contact&#39;</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span> <span class="s1">&#39;distance&#39;</span><span class="p">:</span> <span class="nb">float</span><span class="p">,</span> <span class="s2">&quot;score&quot;</span><span class="p">:</span> <span class="nb">float</span><span class="p">}</span>
+
+<div class="viewcode-block" id="Map.update"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.update">[docs]</a>    <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        args :</span>
+<span class="sd">            param kwargs:</span>
+<span class="sd">        *args :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#     super(Map, self)._constructor_expanddim()</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s1">&#39;distance&#39;</span><span class="p">,</span>
+                 <span class="n">duplicate_levels</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                 <span class="n">desc</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        index</span>
+<span class="sd">        columns</span>
+<span class="sd">        mtype</span>
+<span class="sd">        duplicate_levels</span>
+<span class="sd">            Allow duplicate levels in dataframe</span>
+<span class="sd">        data</span>
+<span class="sd">        dtype</span>
+<span class="sd">        sym</span>
+<span class="sd">        desc</span>
+<span class="sd">        path</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">dtype</span><span class="p">:</span>
+            <span class="n">dtype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_type</span><span class="p">(</span><span class="n">mtype</span><span class="p">)</span>
+        <span class="c1"># TODO: should probably init to np.NaN</span>
+        <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="n">data</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">if</span> <span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">NaN</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span>
+                                  <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">duplicate_levels</span> <span class="o">=</span> <span class="n">duplicate_levels</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mtype</span> <span class="o">=</span> <span class="n">mtype</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">=</span> <span class="n">dtype</span>
+        <span class="k">if</span> <span class="n">mtype</span> <span class="o">==</span> <span class="s2">&quot;score&quot;</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sym</span> <span class="o">=</span> <span class="n">sym</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">desc</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span>
+
+    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
+
+<div class="viewcode-block" id="Map.sortedset"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.sortedset">[docs]</a>    <span class="k">def</span> <span class="nf">sortedset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            (Default value = False)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Remove duplicate in sort_list</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param human_idx:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">n</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">human_idx</span> <span class="k">else</span> <span class="mi">0</span>
+        <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;sort_list&quot;</span><span class="p">):</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">:</span>
+                <span class="c1"># Use OrderedDict to keep the order</span>
+                <span class="k">return</span> <span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="n">n</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">n</span><span class="p">)</span>
+                        <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span>
+                        <span class="n">collections</span><span class="o">.</span><span class="n">OrderedDict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="nb">frozenset</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
+                                                         <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span>
+                                                         <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span><span class="p">)]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="c1"># Asym matrix, no need to remove duplicate</span>
+                <span class="k">return</span> <span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="n">n</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="Map.check_type"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.check_type">[docs]</a>    <span class="k">def</span> <span class="nf">check_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mtype</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        mtype :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mtype_choices</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">mtype</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
+            <span class="k">return</span> <span class="n">value</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Map type should be in list </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                      <span class="bp">self</span><span class="o">.</span><span class="n">mtype_choices</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+            <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="Map.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Low complexcity dataframe&quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="Map.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Copy the current map</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="Map.remove"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.remove">[docs]</a>    <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rm_list</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        rm_list :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Reset values at positions in rm_list</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param rm_list:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">value</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span> <span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">NaN</span>
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">rm_list</span><span class="p">:</span>
+            <span class="n">idx1</span><span class="p">,</span> <span class="n">idx2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">[</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">[</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">idx1</span><span class="p">,</span> <span class="n">idx2</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+            <span class="c1"># self.iat[(contact[0], contact[1])] = value</span>
+            <span class="c1"># self.iat[(contact[1], contact[0])] = value</span>
+            <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;sort_list&#39;</span><span class="p">):</span>
+                <span class="c1"># ! sort_list start at 1</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span><span class="o">.</span><span class="n">remove</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">sort_list</span><span class="o">.</span><span class="n">remove</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span></div>
+
+<div class="viewcode-block" id="Map.to_series"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.to_series">[docs]</a>    <span class="k">def</span> <span class="nf">to_series</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Return panda series related to lower triangle values&quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span>
+        <span class="c1"># remove values from upper triangle</span>
+        <span class="n">df</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">triu_indices_from</span><span class="p">(</span><span class="n">df</span><span class="p">,</span> <span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
+        <span class="c1"># pd.series with only lower triangle values</span>
+        <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">unstack</span><span class="p">()</span><span class="o">.</span><span class="n">dropna</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="Map.topmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.topmap">[docs]</a>    <span class="k">def</span> <span class="nf">topmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scoremap</span><span class="p">,</span> <span class="n">nb_topcontact</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        scoremap :</span>
+<span class="sd">            param nb_topcontact:</span>
+<span class="sd">        nb_topcontact :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">!=</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Error when retrieving top contact map. The type of &quot;</span>
+                     <span class="s2">&quot;the given map is not a contact type!&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="bp">self</span>
+        <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="kc">False</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">==</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span>
+            <span class="n">pair_list</span> <span class="o">=</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">sortedset</span><span class="p">()[:</span><span class="n">nb_topcontact</span><span class="p">]</span>
+            <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">pair_list</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span> <span class="o">=</span> <span class="kc">True</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])]</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">return</span> <span class="bp">self</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Given scoremap has not the same dimension !&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="Map.subfill"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.subfill">[docs]</a>    <span class="k">def</span> <span class="nf">subfill</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pairdict</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Fill map with dict giving</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        pairdict :</span>
+<span class="sd">            param level:</span>
+<span class="sd">        level :</span>
+<span class="sd">            (Default value = 0)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">pairdict</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="o">.</span><span class="n">upper</span><span class="p">():</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">pairdict</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
+        <span class="k">if</span> <span class="s2">&quot;def&quot;</span> <span class="ow">in</span> <span class="n">pairdict</span><span class="p">:</span>
+            <span class="bp">self</span><span class="p">[:]</span> <span class="o">=</span> <span class="n">pairdict</span><span class="p">[</span><span class="s2">&quot;def&quot;</span><span class="p">]</span>
+        <span class="k">for</span> <span class="n">idxval</span> <span class="ow">in</span> <span class="n">pairdict</span><span class="p">:</span>
+            <span class="n">idx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="n">level</span><span class="p">)</span> <span class="o">==</span> <span class="n">idxval</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx</span><span class="p">,</span> <span class="n">idx</span><span class="p">]</span> <span class="o">=</span> <span class="n">pairdict</span><span class="p">[</span><span class="n">idxval</span><span class="p">]</span></div>
+
+<div class="viewcode-block" id="Map.set_value"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.Map.set_value">[docs]</a>    <span class="k">def</span> <span class="nf">set_value</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        index :</span>
+<span class="sd">            param col:</span>
+<span class="sd">        value :</span>
+<span class="sd">            param kwargs:</span>
+<span class="sd">        col :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">col</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">:</span>
+            <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div></div>
+
+
+<span class="c1"># TODO: Matrices PosAaAtmMap, AaAtmMap, AtmMap</span>
+<div class="viewcode-block" id="ProteinMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap">[docs]</a><span class="k">class</span> <span class="nc">ProteinMap</span><span class="p">(</span><span class="n">Map</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Abstract class for protein contact map objects</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="c1"># TODO: matrix should be not only for heavy atoms</span>
+    <span class="c1"># Matrix only for heavy atoms.</span>
+    <span class="n">heavy_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;[CNOS][ABGDEZH][0-9]?&quot;</span><span class="p">)</span>
+    <span class="n">all_reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^((?!cns|dyana).*)$&quot;</span><span class="p">)</span>
+    <span class="c1"># TODO: Autre methodes de dist</span>
+    <span class="n">distance_method</span> <span class="o">=</span> <span class="s1">&#39;euclidean&#39;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;index&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;columns&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;index&quot;</span><span class="p">],</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;columns&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">create_index</span><span class="p">(</span>
+                <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">ProteinMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">contact_flags</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;flaglist&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_maplot</span> <span class="o">=</span> <span class="kc">None</span>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#    return self._constructor_expanddim()</span>
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Specific sequence related to the map in a string</span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        str</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+
+<div class="viewcode-block" id="ProteinMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate heatmap</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="ProteinMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate contact map</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            param scsc_min:</span>
+<span class="sd">        scsc_min :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="ProteinMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sequence</span>
+<span class="sd">        kwargs</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Indexation matrice (tous les atomes ou tous les residus)</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="ProteinMap.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Lower index level if multi index&quot;&quot;&quot;</span>
+        <span class="c1"># TODO: check if multiindex</span>
+        <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;-&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">]</span>
+        <span class="n">index</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;-&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">idx</span><span class="p">)</span> <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">]</span>
+        <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;__init__&#39;</span><span class="p">)(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span>
+                                         <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span>
+                                         <span class="n">data</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">as_matrix</span><span class="p">(),</span>
+                                         <span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+                                         <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span>
+                                         <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ProteinMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Copy dataframe and related attributes of the map</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">ProteinMap</span><span class="p">(</span>
+            <span class="n">sequence</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ProteinMap.plotflush"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.plotflush">[docs]</a>    <span class="k">def</span> <span class="nf">plotflush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Flush contact map plot&quot;&quot;&quot;</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">clf</span><span class="p">()</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">cla</span><span class="p">()</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_maplot</span> <span class="o">=</span> <span class="kc">None</span></div>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">maplot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">linewidths</span><span class="o">=</span><span class="mf">0.0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Contact map plot</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        linewidths :</span>
+<span class="sd">            (Default value = 0.0)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Contact map Plot</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_maplot</span><span class="p">:</span>
+            <span class="c1"># Flush matplot</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Build maplot&quot;</span><span class="p">)</span>
+            <span class="n">minticks</span> <span class="o">=</span> <span class="n">tickmin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">shift</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>  <span class="c1"># Nb graduations</span>
+
+            <span class="bp">self</span><span class="o">.</span><span class="n">_maplot</span> <span class="o">=</span> <span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">square</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">cbar</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+                                       <span class="n">linewidths</span><span class="o">=</span><span class="n">linewidths</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">vmin</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
+                                       <span class="n">cmap</span><span class="o">=</span><span class="n">sns</span><span class="o">.</span><span class="n">diverging_palette</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">220</span><span class="p">,</span> <span class="n">n</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span>
+                                                                  <span class="n">as_cmap</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+                                       <span class="n">xticklabels</span><span class="o">=</span><span class="n">minticks</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
+                                       <span class="n">yticklabels</span><span class="o">=</span><span class="n">minticks</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
+                                       <span class="n">linecolor</span><span class="o">=</span><span class="s2">&quot;grey&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_maplot</span>
+
+<div class="viewcode-block" id="ProteinMap.saveplot"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.saveplot">[docs]</a>    <span class="k">def</span> <span class="nf">saveplot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="s2">&quot;protein&quot;</span><span class="p">,</span> <span class="n">size_fig</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
+                 <span class="n">plot_ext</span><span class="o">=</span><span class="s2">&quot;pdf&quot;</span><span class="p">,</span> <span class="n">plot_dpi</span><span class="o">=</span><span class="mi">200</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Save plot</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        outdir :</span>
+<span class="sd">            param outprefix: (Default value = &#39;&#39;)</span>
+<span class="sd">        size_fig :</span>
+<span class="sd">            param plot_ext: (Default value = 10)</span>
+<span class="sd">        plot_dpi :</span>
+<span class="sd">            (Default value = 200)</span>
+<span class="sd">        outprefix :</span>
+<span class="sd">            (Default value = &quot;protein&quot;)</span>
+<span class="sd">        plot_ext :</span>
+<span class="sd">            (Default value = &quot;pdf&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">plotpath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">outdir</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.maplot.</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span>
+            <span class="n">outprefix</span><span class="p">,</span> <span class="n">plot_ext</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate contact map plot (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">plotpath</span><span class="p">)</span>
+        <span class="n">f</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
+        <span class="n">tickrot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">axes</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">figure</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">set_size_inches</span><span class="p">(</span><span class="n">size_fig</span><span class="p">,</span> <span class="n">size_fig</span><span class="p">)</span>
+        <span class="n">map_title</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> contacts map&quot;</span> <span class="o">%</span> <span class="n">outprefix</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">map_title</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
+
+        <span class="n">f</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">plotpath</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="n">plot_dpi</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">(</span><span class="s1">&#39;all&#39;</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ProteinMap.contactset"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.contactset">[docs]</a>    <span class="k">def</span> <span class="nf">contactset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Remove duplicate in contact_list</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            return: (Default value = False)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        list</span>
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">contacts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contact_list</span><span class="p">(</span><span class="n">human_idx</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">contacts</span><span class="p">:</span>
+            <span class="n">contacts</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">((</span><span class="nb">tuple</span><span class="p">(</span><span class="nb">sorted</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)))</span>
+                                   <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">)))</span>
+        <span class="k">return</span> <span class="n">contacts</span></div>
+
+<div class="viewcode-block" id="ProteinMap.contact_list"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.contact_list">[docs]</a>    <span class="k">def</span> <span class="nf">contact_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Return contact list</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            return: (Default value = False)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        list</span>
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">contact_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">n</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">human_idx</span> <span class="k">else</span> <span class="mi">0</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="ow">is</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="c1"># for irow, row in enumerate(self):</span>
+            <span class="k">for</span> <span class="n">irow</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">):</span>
+                <span class="k">for</span> <span class="n">icol</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="n">row</span><span class="p">]):</span>
+                    <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
+                        <span class="n">contact_list</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">irow</span> <span class="o">+</span> <span class="n">n</span><span class="p">,</span> <span class="n">icol</span> <span class="o">+</span> <span class="n">n</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">contact_list</span></div>
+
+<div class="viewcode-block" id="ProteinMap.compareplot"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.compareplot">[docs]</a>    <span class="k">def</span> <span class="nf">compareplot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protmap</span><span class="p">,</span> <span class="n">save_fig</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Compare 2 contact map and plot differences</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protmap :</span>
+<span class="sd">            param save_fig:</span>
+<span class="sd">        alpha :</span>
+<span class="sd">            param kwargs: (Default value = None)</span>
+<span class="sd">        save_fig :</span>
+<span class="sd">            (Default value = True)</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">plotflush</span><span class="p">()</span>
+        <span class="c1"># Contact map plot</span>
+        <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">protmap</span><span class="p">,</span> <span class="s2">&quot;shape&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">shape</span> <span class="o">!=</span> <span class="n">protmap</span><span class="o">.</span><span class="n">shape</span><span class="p">:</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Cant&#39;t compare </span><span class="si">%s</span><span class="s2"> map with </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span>
+                <span class="n">protmap</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">))</span>
+            <span class="k">return</span> <span class="kc">None</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">cmplist</span> <span class="o">=</span> <span class="n">protmap</span><span class="o">.</span><span class="n">contact_list</span><span class="p">(</span><span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+
+            <span class="n">ymax</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
+            <span class="k">if</span> <span class="n">protmap</span><span class="o">.</span><span class="n">contact_flags</span><span class="p">:</span>
+                <span class="n">flags</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">protmap</span><span class="o">.</span><span class="n">contact_flags</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
+                <span class="c1"># Color palette</span>
+                <span class="n">pal</span> <span class="o">=</span> <span class="n">sns</span><span class="o">.</span><span class="n">color_palette</span><span class="p">(</span><span class="s2">&quot;hls&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">flags</span><span class="p">))</span>
+                <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">flag</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">flags</span><span class="p">):</span>
+                    <span class="n">conlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">contact</span> <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">protmap</span><span class="o">.</span><span class="n">contact_flags</span> <span class="k">if</span>
+                               <span class="n">protmap</span><span class="o">.</span><span class="n">contact_flags</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span> <span class="o">==</span> <span class="n">flag</span><span class="p">]</span>
+                    <span class="n">xind</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">-</span> <span class="o">.</span><span class="mi">5</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span>
+                            <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">conlist</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">conlist</span><span class="p">)[</span><span class="mi">1</span><span class="p">]]</span>
+                    <span class="n">yind</span> <span class="o">=</span> <span class="p">[</span><span class="n">ymax</span> <span class="o">-</span> <span class="n">y</span> <span class="o">+</span> <span class="mf">1.5</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span>
+                            <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">conlist</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">conlist</span><span class="p">)[</span><span class="mi">0</span><span class="p">]]</span>
+                    <span class="n">color</span> <span class="o">=</span> <span class="n">pal</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
+                    <span class="n">mark</span> <span class="o">=</span> <span class="n">Line2D</span><span class="o">.</span><span class="n">filled_markers</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
+                    <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">xind</span><span class="p">,</span> <span class="n">yind</span><span class="p">):</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">color</span><span class="p">,</span>
+                                                 <span class="n">linewidths</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="n">alpha</span><span class="p">,</span>
+                                                 <span class="n">marker</span><span class="o">=</span><span class="n">mark</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Contact list: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">cmplist</span><span class="p">)</span>
+                <span class="n">xind</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="o">-</span> <span class="o">.</span><span class="mi">5</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span>
+                        <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">cmplist</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">cmplist</span><span class="p">)[</span><span class="mi">1</span><span class="p">]]</span>
+                <span class="n">yind</span> <span class="o">=</span> <span class="p">[</span><span class="n">ymax</span> <span class="o">-</span> <span class="n">y</span> <span class="o">+</span> <span class="mf">1.5</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span>
+                        <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">cmplist</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">cmplist</span><span class="p">)[</span><span class="mi">0</span><span class="p">]]</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Xind: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">xind</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Yind: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">yind</span><span class="p">)</span>
+                <span class="n">color</span> <span class="o">=</span> <span class="s2">&quot;red&quot;</span>
+                <span class="c1"># width = [0.3 for _ in xind]</span>
+                <span class="c1"># for x, y, h in zip(xind, yind, width):</span>
+                <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">xind</span><span class="p">,</span> <span class="n">yind</span><span class="p">):</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">s</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">color</span><span class="p">,</span>
+                                             <span class="n">linewidths</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
+                                             <span class="n">alpha</span><span class="o">=</span><span class="n">alpha</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">save_fig</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">saveplot</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_write_report</span><span class="p">(</span><span class="n">reportpath</span><span class="p">,</span> <span class="o">**</span><span class="n">scores</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write report file from score dict</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        reportpath :</span>
+<span class="sd">            </span>
+<span class="sd">        scores :</span>
+<span class="sd">            </span>
+<span class="sd">        **scores :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">reportpath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">reportf</span><span class="p">:</span>
+            <span class="n">msg</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">Formatter</span><span class="p">()</span><span class="o">.</span><span class="n">vformat</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;</span><span class="se">\</span>
+<span class="s2">## Report </span><span class="si">{map1name}</span><span class="s2"> vs. </span><span class="si">{map2name}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## Date: </span><span class="si">{date}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## Plots: </span><span class="si">{outdir}</span><span class="s2"></span>
+<span class="s2">## Reference map: </span><span class="si">{map1path}</span><span class="s2"></span>
+<span class="s2">## Contact map: </span><span class="si">{map2path}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## -----------------------------------------------------------------------------</span>
+<span class="s2">##</span>
+<span class="s2">## Sequence:</span>
+<span class="s2">## </span><span class="si">{seq}</span><span class="s2"></span>
+<span class="s2">## Protein length: </span><span class="si">{protlen}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## -----------------------------------------------------------------------------</span>
+<span class="s2">##</span>
+<span class="s2">## Matthews correlation coefficient (MCC): </span><span class="si">{mcc}</span><span class="s2"></span>
+<span class="s2">## F1 score: </span><span class="si">{f1s}</span><span class="s2"></span>
+<span class="s2">## F2 score: </span><span class="si">{f2s}</span><span class="s2"></span>
+<span class="s2">## F0.5 score: </span><span class="si">{f05s}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## Precision: </span><span class="si">{precision}</span><span class="s2"></span>
+<span class="s2">## Recall (Sensibility): </span><span class="si">{recall}</span><span class="s2"></span>
+<span class="s2">## Accuracy: </span><span class="si">{accuracy}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## Hamming loss: </span><span class="si">{hamm}</span><span class="s2"></span>
+<span class="s2">## Hinge loss: </span><span class="si">{hin}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## -----------------------------------------------------------------------------</span>
+<span class="s2">##</span>
+<span class="s2">##                                  Plot scores</span>
+<span class="s2">##</span>
+<span class="s2">## ROC Area Under Curve: </span><span class="si">{roc_auc}</span><span class="s2"></span>
+<span class="s2">## Average precision score: </span><span class="si">{aver_prec}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## -----------------------------------------------------------------------------</span>
+<span class="s2">##</span>
+<span class="s2">##                          Precision recall curve</span>
+<span class="s2">##</span>
+<span class="s2">## Precision values:</span>
+<span class="s2">## </span><span class="si">{allprec}</span><span class="s2"></span>
+<span class="s2">## Recall values:</span>
+<span class="s2">## </span><span class="si">{allrec}</span><span class="s2"></span>
+<span class="s2">## Score tresholds (</span><span class="si">{map2name}</span><span class="s2">):</span>
+<span class="s2">## </span><span class="si">{prthres}</span><span class="s2"></span>
+<span class="s2">##</span>
+<span class="s2">## -----------------------------------------------------------------------------</span>
+<span class="s2">##</span>
+<span class="s2">##                               ROC curve</span>
+<span class="s2">##</span>
+<span class="s2">## True Positive Rate (Sensibility) values:</span>
+<span class="s2">## </span><span class="si">{alltpr}</span><span class="s2"></span>
+<span class="s2">## False Positive Rate (1 - Specificity) values:</span>
+<span class="s2">## </span><span class="si">{allfpr}</span><span class="s2"></span>
+<span class="s2">## Score tresholds (</span><span class="si">{map2name}</span><span class="s2">):</span>
+<span class="s2">## </span><span class="si">{rocthres}</span><span class="s2">&quot;&quot;&quot;</span><span class="p">,</span> <span class="p">(),</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">scores</span><span class="p">))</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">msg</span><span class="p">)</span>
+            <span class="n">reportf</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+
+<div class="viewcode-block" id="ProteinMap.classification_metrics"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.classification_metrics">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">classification_metrics</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">,</span> <span class="n">y_scores</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Compute classification metrics</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        y_true : numpy array of true values</span>
+<span class="sd">            </span>
+<span class="sd">        y_pred : numpy array of predicted values</span>
+<span class="sd">            </span>
+<span class="sd">        y_scores : numpy array of prediction scores</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">metrics</span> <span class="o">=</span> <span class="p">{}</span>
+
+        <span class="k">if</span> <span class="mi">1</span> <span class="ow">in</span> <span class="n">y_pred</span> <span class="ow">and</span> <span class="mi">1</span> <span class="ow">in</span> <span class="n">y_true</span><span class="p">:</span>
+            <span class="n">metrics</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
+                <span class="s1">&#39;accuracy&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">accuracy_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;precision&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">precision_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;recall&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">recall_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;mcc&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">matthews_corrcoef</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;f1s&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">f1_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;f2s&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">fbeta_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
+                <span class="s1">&#39;f05s&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">fbeta_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">),</span>
+                <span class="s1">&#39;hamm&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">hamming_loss</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">),</span>
+                <span class="s1">&#39;hin&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">hinge_loss</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">)</span>
+            <span class="p">})</span>
+
+        <span class="k">if</span> <span class="n">y_scores</span><span class="p">:</span>
+            <span class="c1"># ROC plot</span>
+            <span class="c1"># Replace nan values in y_scores</span>
+            <span class="n">y_scores</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">y_scores</span><span class="p">)]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">nanmin</span><span class="p">(</span><span class="n">y_scores</span><span class="p">))</span>
+            <span class="n">metrics</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
+                <span class="s1">&#39;roc_auc&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">roc_auc_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">),</span>
+                <span class="s1">&#39;aver_prec&#39;</span><span class="p">:</span> <span class="n">skm</span><span class="o">.</span><span class="n">average_precision_score</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">)</span>
+            <span class="p">})</span>
+            <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allfpr&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;alltpr&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;rocthres&#39;</span><span class="p">]</span> <span class="o">=</span> \
+                <span class="n">skm</span><span class="o">.</span><span class="n">roc_curve</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">,</span> <span class="n">pos_label</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
+            <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allprec&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allrec&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;prthres&#39;</span><span class="p">]</span> <span class="o">=</span> \
+                <span class="n">skm</span><span class="o">.</span><span class="n">precision_recall_curve</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">metrics</span></div>
+
+    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">_metrics_plot</span><span class="p">(</span><span class="n">metrics</span><span class="p">,</span> <span class="n">mapnames</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> <span class="n">plotdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
+                      <span class="n">plot_ext</span><span class="o">=</span><span class="s2">&quot;pdf&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        metrics :</span>
+<span class="sd">            </span>
+<span class="sd">        mapnames :</span>
+<span class="sd">            (Default value = (&#39;&#39;)</span>
+<span class="sd">        &#39;&#39; :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">outprefix</span> <span class="o">=</span> <span class="n">outprefix</span> <span class="k">if</span> <span class="n">outprefix</span> <span class="k">else</span> <span class="s2">&quot;maplot&quot;</span>
+        <span class="n">csv_roc</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plotdir</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.roc.csv&quot;</span> <span class="o">%</span> <span class="n">outprefix</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate roc file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">csv_roc</span><span class="p">)</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">csv_roc</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+            <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;TPR,FPR,Treshold</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+            <span class="n">writer</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">writer</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+            <span class="n">writer</span><span class="o">.</span><span class="n">writerows</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;alltpr&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allfpr&#39;</span><span class="p">],</span>
+                                 <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;rocthres&#39;</span><span class="p">]))</span>
+
+        <span class="n">plotpath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plotdir</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.roc.</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outprefix</span><span class="p">,</span>
+                                                        <span class="n">plot_ext</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate roc plot (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">plotpath</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allfpr&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;alltpr&#39;</span><span class="p">],</span>
+                 <span class="n">label</span><span class="o">=</span><span class="s1">&#39;ROC curve (area = </span><span class="si">%0.2f</span><span class="s1">)&#39;</span> <span class="o">%</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;roc_auc&#39;</span><span class="p">])</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="s1">&#39;k--&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;False Positive Rate&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;True Positive Rate&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Receiver operating characteristic </span><span class="si">%s</span><span class="s1"> vs. </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span>
+            <span class="n">mapnames</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mapnames</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;lower right&quot;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">plotpath</span><span class="p">)</span>
+
+        <span class="n">csv_precall</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plotdir</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.roc.csv&quot;</span> <span class="o">%</span> <span class="n">outprefix</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate precall file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">csv_precall</span><span class="p">)</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">csv_precall</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
+            <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;Precision,Recall,Treshold</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+            <span class="n">writer</span> <span class="o">=</span> <span class="n">csv</span><span class="o">.</span><span class="n">writer</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+            <span class="n">writer</span><span class="o">.</span><span class="n">writerows</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allprec&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allrec&#39;</span><span class="p">],</span>
+                                 <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;prthres&#39;</span><span class="p">]))</span>
+
+        <span class="n">plotpath</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">plotdir</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.precall.</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outprefix</span><span class="p">,</span>
+                                                            <span class="n">plot_ext</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate precall plot (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">plotpath</span><span class="p">)</span>
+        <span class="c1"># Precision recall curve</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">clf</span><span class="p">()</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allrec&#39;</span><span class="p">],</span> <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;allprec&#39;</span><span class="p">],</span>
+                 <span class="n">label</span><span class="o">=</span><span class="s1">&#39;Precision-Recall curve&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;Recall&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;Precision&#39;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;Precision-Recall </span><span class="si">{1}</span><span class="s1"> vs. </span><span class="si">{2}</span><span class="s1">: AUC=</span><span class="si">{0:0.2f}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
+            <span class="n">metrics</span><span class="p">[</span><span class="s1">&#39;aver_prec&#39;</span><span class="p">],</span> <span class="n">mapnames</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">mapnames</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s2">&quot;lower left&quot;</span><span class="p">)</span>
+        <span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">plotpath</span><span class="p">)</span>
+
+<div class="viewcode-block" id="ProteinMap.report"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.report">[docs]</a>    <span class="k">def</span> <span class="nf">report</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmpmap</span><span class="p">,</span> <span class="n">scoremap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">plotdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
+               <span class="c1"># plot_ext=&quot;pdf&quot;, plotag=True, n_factors=(0.5, 1.0, 1.5)):</span>
+               <span class="n">plot_ext</span><span class="o">=</span><span class="s2">&quot;pdf&quot;</span><span class="p">,</span> <span class="n">plotag</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Generate contact map report file</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        cmpmap :</span>
+<span class="sd">            </span>
+<span class="sd">        scoremap :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        outprefix :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        outdir :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        plotdir :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        plot_ext :</span>
+<span class="sd">            (Default value = &quot;pdf&quot;)</span>
+<span class="sd">        plotag :</span>
+<span class="sd">            (Default value = True)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">filename</span> <span class="o">=</span> <span class="s2">&quot;.&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">outprefix</span><span class="p">,</span> <span class="s2">&quot;mapreport&quot;</span><span class="p">))</span> <span class="k">if</span> <span class="n">outprefix</span> <span class="k">else</span> \
+            <span class="s2">&quot;mapreport&quot;</span>
+        <span class="n">reportpath</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outdir</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate map report file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">reportpath</span><span class="p">)</span>
+
+        <span class="c1"># TODO: evaluate map statistics for several treshold (use submap var)</span>
+        <span class="c1"># nb_c = int(len(self.sequence) * float(n_factors[0]))</span>
+        <span class="c1"># submap = cmpmap.copy()</span>
+        <span class="c1"># print(np.array_equal(cmpmap.values.astype(int).flat,</span>
+        <span class="c1">#                      submap.topmap(scoremap, nb_c).values.astype(int).flat))</span>
+
+        <span class="n">y_true</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span><span class="o">.</span><span class="n">flat</span><span class="p">)</span>
+        <span class="n">y_pred</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">cmpmap</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span><span class="o">.</span><span class="n">flat</span><span class="p">)</span>
+        <span class="n">y_scores</span> <span class="o">=</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">float</span><span class="p">)</span><span class="o">.</span><span class="n">flat</span> <span class="k">if</span> <span class="n">scoremap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span>
+
+        <span class="c1"># Compute classification metrics for the entire map</span>
+        <span class="n">metrics</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">classification_metrics</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">,</span> <span class="n">y_scores</span><span class="p">)</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">_write_report</span><span class="p">(</span>
+            <span class="n">reportpath</span><span class="p">,</span> <span class="n">map1name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span> <span class="n">map2name</span><span class="o">=</span><span class="n">cmpmap</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">map1path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">map2path</span><span class="o">=</span><span class="n">cmpmap</span><span class="o">.</span><span class="n">path</span><span class="p">,</span>
+            <span class="n">seq</span><span class="o">=</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">## &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">textwrap</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">77</span><span class="p">)),</span>
+            <span class="n">protlen</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">),</span>
+            <span class="n">date</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%A </span><span class="si">%d</span><span class="s2">. %B %Y&quot;</span><span class="p">),</span>
+            <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span> <span class="o">**</span><span class="n">metrics</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">plotag</span> <span class="ow">and</span> <span class="n">scoremap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_metrics_plot</span><span class="p">(</span><span class="n">metrics</span><span class="p">,</span> <span class="n">mapnames</span><span class="o">=</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span> <span class="n">cmpmap</span><span class="o">.</span><span class="n">desc</span><span class="p">),</span>
+                               <span class="n">outprefix</span><span class="o">=</span><span class="n">outprefix</span><span class="p">,</span> <span class="n">plot_ext</span><span class="o">=</span><span class="n">plot_ext</span><span class="p">,</span>
+                               <span class="n">plotdir</span><span class="o">=</span><span class="n">plotdir</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ProteinMap.compare_contactmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.compare_contactmap">[docs]</a>    <span class="k">def</span> <span class="nf">compare_contactmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmpmap</span><span class="p">,</span> <span class="n">contactlist</span><span class="p">,</span> <span class="n">outprefix</span><span class="p">,</span>
+                           <span class="n">outdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">distmap</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Compare 2 contact map and plot differences</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        cmpmap :</span>
+<span class="sd">            param contactlist:</span>
+<span class="sd">        outprefix :</span>
+<span class="sd">            param outdir:</span>
+<span class="sd">        distmap :</span>
+<span class="sd">            param human_idx: (Default value = None)</span>
+<span class="sd">        contactlist :</span>
+<span class="sd">            </span>
+<span class="sd">        outdir :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            (Default value = True)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># CSV file giving TP/FP contacts</span>
+        <span class="n">outpath</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.contactcmp.csv&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outdir</span><span class="p">,</span>
+                                            <span class="n">outprefix</span> <span class="k">if</span> <span class="n">outprefix</span> <span class="k">else</span> <span class="s2">&quot;maplot&quot;</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate stat file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">outpath</span><span class="p">)</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outpath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="n">offset</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">human_idx</span> <span class="k">else</span> <span class="mi">0</span>
+            <span class="n">extra_header</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span> <span class="k">if</span> <span class="n">distmap</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">&quot;,dmin&quot;</span>
+            <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;#resid1,resid2,res1,res2,TP/FP</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">extra_header</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">contactlist</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">extra_header</span><span class="p">:</span>
+                    <span class="n">dmin</span> <span class="o">=</span> <span class="s2">&quot;,&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">distmap</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">-</span>
+                                                  <span class="n">offset</span><span class="p">)])</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">dmin</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+                <span class="n">contact</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">)]</span>
+                <span class="n">cmpcontact</span> <span class="o">=</span> <span class="n">cmpmap</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">)]</span>
+                <span class="k">if</span> <span class="n">contact</span> <span class="ow">and</span> <span class="n">cmpcontact</span><span class="p">:</span>
+                    <span class="n">eq</span> <span class="o">=</span> <span class="s2">&quot;TP&quot;</span>
+                <span class="k">elif</span> <span class="n">contact</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">cmpcontact</span><span class="p">:</span>
+                    <span class="n">eq</span> <span class="o">=</span> <span class="s2">&quot;FP&quot;</span>
+                <span class="k">elif</span> <span class="ow">not</span> <span class="n">contact</span> <span class="ow">and</span> <span class="n">cmpcontact</span><span class="p">:</span>
+                    <span class="n">eq</span> <span class="o">=</span> <span class="s2">&quot;FN&quot;</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">eq</span> <span class="o">=</span> <span class="s2">&quot;TN&quot;</span>
+                <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
+                                            <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">],</span>
+                                            <span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">],</span>
+                                            <span class="n">eq</span><span class="p">,</span>
+                                            <span class="n">dmin</span><span class="p">)</span>
+                <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="ProteinMap.write_contacts"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProteinMap.write_contacts">[docs]</a>    <span class="k">def</span> <span class="nf">write_contacts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                       <span class="n">scoremap</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        prefix</span>
+<span class="sd">        filename :</span>
+<span class="sd">            param outdir:</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            param scoremap: (Default value = True)</span>
+<span class="sd">        outdir :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        scoremap :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span> <span class="o">+</span> <span class="s2">&quot;_&quot;</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">prefix</span>
+        <span class="n">filepath</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s%s</span><span class="s2">.contact.txt&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outdir</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">filename</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate contact file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">filepath</span><span class="p">)</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="n">offset</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">human_idx</span> <span class="k">else</span> <span class="mi">0</span>
+            <span class="c1"># contacts = [sorted(contact) for contact in self.contactset()]</span>
+            <span class="c1"># for contact in sorted(contacts):</span>
+            <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactset</span><span class="p">():</span>
+                <span class="n">contact</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">offset</span><span class="p">,</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="n">offset</span><span class="p">])</span>
+                <span class="k">if</span> <span class="n">scoremap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                    <span class="n">score</span> <span class="o">=</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">iat</span><span class="p">[(</span><span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span>
+                                          <span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">-</span> <span class="n">offset</span><span class="p">)]</span>
+                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%d</span><span class="s2"> </span><span class="si">%d</span><span class="s2"> </span><span class="si">%.4f</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span>
+                                  <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">score</span><span class="p">))</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%d</span><span class="s2"> </span><span class="si">%d</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span></div></div>
+
+
+<div class="viewcode-block" id="ResAtmMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap">[docs]</a><span class="k">class</span> <span class="nc">ResAtmMap</span><span class="p">(</span><span class="n">ProteinMap</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Protein distance/contact matrix for all atom pairs. If no sequence given,</span>
+<span class="sd">    protein distance/contact matrix for all amino acids</span>
+<span class="sd">    Ex:</span>
+<span class="sd">    residue           PHE1                                                    \</span>
+<span class="sd">    atom               CD1       CD2        CB        CA        CG        CZ</span>
+<span class="sd">    residue atom</span>
+<span class="sd">    PHE1    CD1   0.000000  2.394145  2.455440  3.269219  1.391024  2.421148</span>
+<span class="sd">            CD2   2.394145  0.000000  2.509243  3.407996  1.379875  2.401098</span>
+<span class="sd">            CB    2.455440  2.509243  0.000000  1.507025  1.478053  4.267602</span>
+<span class="sd">            CA    3.269219  3.407996  1.507025  0.000000  2.505414  5.085997</span>
+<span class="sd">            CG    1.391024  1.379875  1.478053  2.505414  0.000000  2.790403</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#     super(ResAtmMap, self)._constructor_expanddim()</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="c1"># Sequence: 1L string or MultiIndex object</span>
+        <span class="c1"># Dataframe is in 3L code</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sequence</span><span class="p">:</span>
+            <span class="n">sequence</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span>
+                <span class="s1">&#39;iupac&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+        <span class="c1"># Super call will initialize index and columns with self.create_index()</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">ResAtmMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">sequence</span><span class="o">=</span><span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span> <span class="o">=</span> <span class="n">sequence</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Amino Acid sequence string in humanidx</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span><span class="p">:</span>
+            <span class="c1"># If non empty string</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">_</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
+                                     <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">levels</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># No information given</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span>
+                <span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span><span class="s1">&#39;iupac&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sequence</span>
+
+<div class="viewcode-block" id="ResAtmMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">seq_pos</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">seqidx</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">idxnames</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                     <span class="n">colnames</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sequence</span>
+<span class="sd">        seq_pos</span>
+<span class="sd">        seqidx: pandas.MultiIndex, optional</span>
+<span class="sd">        idxnames</span>
+<span class="sd">        colnames</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        tuple of pandas.MultiIndex objects</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Indexing ResAtm - ResAtm dataframe&quot;</span><span class="p">)</span>
+        <span class="c1"># Atom table for residues (keys are in 3L code)</span>
+        <span class="n">seqidx</span> <span class="o">=</span> <span class="n">seqidx</span> <span class="k">if</span> <span class="n">seqidx</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">seqidx</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
+        <span class="n">iupac_aa</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span>
+            <span class="s1">&#39;iupac&#39;</span><span class="p">]</span>
+        <span class="c1"># Amino acid conversion table 1L -&gt; 3L</span>
+        <span class="c1"># Making humanidx list for pandas dataframe</span>
+        <span class="n">seq</span> <span class="o">=</span> <span class="p">[</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span>
+        <span class="c1"># Repeat each res for each heavy atm (humanidx value + 1 in order to</span>
+        <span class="c1"># start at 1 as in pdb file)</span>
+        <span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="o">==</span> <span class="n">sequence</span><span class="p">:</span>
+            <span class="c1"># General ResAtmMap for 20 aminoacid</span>
+            <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">aa</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span>
+                        <span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">iupac_aa</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()))]</span>
+        <span class="k">elif</span> <span class="n">seqidx</span><span class="p">:</span>
+            <span class="c1"># If we already have an index related to the sequence</span>
+            <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span>
+                <span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">seqidx</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">aa</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">aa</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">seq</span><span class="p">)</span>
+                <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">iupac_aa</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># If no index related to the sequence</span>
+            <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span>
+                <span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">aa</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">aa</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">seq</span><span class="p">)</span>
+                <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">iupac_aa</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())]</span>
+        <span class="c1"># TODO: Inutile de repeter a chaque fois le calcul des listes</span>
+        <span class="c1"># d&#39;atomes lourd pour chaque residu -&gt; Deplacer au niveau de l&#39;init</span>
+        <span class="n">atm_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">atm</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span>
+                                                        <span class="n">iupac_aa</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())]</span>
+        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">atm_list</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">res_list</span><span class="p">):</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Index lists aren&#39;t the same size</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                      <span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">)</span>
+
+        <span class="n">idxnames</span> <span class="o">=</span> <span class="n">idxnames</span> <span class="k">if</span> <span class="n">idxnames</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">idxnames</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="k">else</span> <span class="p">[</span>
+            <span class="s2">&quot;residuex&quot;</span><span class="p">,</span> <span class="s2">&quot;atomx&quot;</span><span class="p">]</span>
+        <span class="n">colnames</span> <span class="o">=</span> <span class="n">colnames</span> <span class="k">if</span> <span class="n">colnames</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">colnames</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="k">else</span> <span class="p">[</span>
+            <span class="s2">&quot;residuey&quot;</span><span class="p">,</span> <span class="s2">&quot;atomy&quot;</span><span class="p">]</span>
+        <span class="n">index</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">])),</span>
+                                          <span class="n">names</span><span class="o">=</span><span class="n">idxnames</span><span class="p">)</span>
+        <span class="n">columns</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">res_list</span><span class="p">,</span>
+                                                       <span class="n">atm_list</span><span class="p">])),</span>
+                                            <span class="n">names</span><span class="o">=</span><span class="n">colnames</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Index:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">index</span><span class="p">,</span> <span class="n">columns</span></div>
+
+<div class="viewcode-block" id="ResAtmMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="n">unidf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reduce</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">unidf</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="c1"># If there&#39;s no nan values</span>
+            <span class="k">return</span> <span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">unidf</span><span class="p">)</span>
+        <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="ResAtmMap.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupby</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        groupby :</span>
+<span class="sd">            return: (Default value = &quot;min&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">nlevels</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">groupby</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span>
+        <span class="n">newmap</span> <span class="o">=</span> <span class="n">ResMap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+                        <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">any</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;mean&quot;</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">newmap</span></div>
+
+<div class="viewcode-block" id="ResAtmMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">def_cut</span><span class="o">=</span><span class="mf">5.0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Contact map generator from all atoms distance map. There&#39;s a contact</span>
+<span class="sd">        with 2 residues iff dist between 2 atoms are below the given treshold</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        def_cut :</span>
+<span class="sd">            (Default value = 5.0)</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            for all atom pair </span>
+<span class="sd">        scsc_min :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="c1"># If self is already a contact map</span>
+            <span class="k">return</span> <span class="kc">None</span>
+        <span class="c1"># TODO: issue with sc_sc treshold !!!!!</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Generate contact map using contact definition </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                 <span class="n">contactdef</span><span class="p">)</span>
+        <span class="c1"># Initialize contact map to a boolean matrix filled with False as values</span>
+        <span class="n">contact_map</span> <span class="o">=</span> <span class="n">ResAtmMap</span><span class="p">(</span><span class="n">sequence</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s2">&quot;contact&quot;</span><span class="p">,</span>
+                                <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
+        <span class="n">def_cutoff</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">contactdef</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default_cutoff&quot;</span><span class="p">))</span> <span class="k">if</span> <span class="nb">float</span><span class="p">(</span>
+            <span class="n">contactdef</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default_cutoff&quot;</span><span class="p">))</span> <span class="k">else</span> <span class="n">def_cut</span>
+        <span class="n">treshold</span> <span class="o">=</span> <span class="kc">None</span>
+
+        <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">contactdef</span><span class="p">)</span> <span class="o">==</span> <span class="nb">float</span><span class="p">:</span>
+            <span class="c1"># ???</span>
+            <span class="n">contact_map</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">applymap</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="n">contactdef</span><span class="p">)</span>
+
+        <span class="k">elif</span> <span class="nb">sum</span><span class="p">(</span><span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">contactdef</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">==</span> <span class="mi">1</span> \
+                <span class="ow">and</span> <span class="n">def_cutoff</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using default cutoff&quot;</span><span class="p">)</span>
+            <span class="n">contact_map</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">applymap</span><span class="p">(</span>
+                <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="n">contactdef</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default_cutoff&quot;</span><span class="p">))</span>
+
+        <span class="k">elif</span> <span class="nb">sum</span><span class="p">(</span><span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">contactdef</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+            <span class="c1"># treshconv = lambda x: x &lt; contactdef.get(&quot;default_cutoff&quot;)</span>
+            <span class="c1"># contact_map[:] = self.applymap(treshconv)</span>
+            <span class="n">atm_list</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
+            <span class="n">atms_list</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">atm_list</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">atm_list</span><span class="p">])</span>
+            <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">contactdef</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
+                <span class="n">treshold</span> <span class="o">=</span> <span class="n">contactdef</span><span class="p">[</span><span class="n">pair</span><span class="p">]</span>
+                <span class="k">if</span> <span class="n">pair</span> <span class="o">==</span> <span class="s2">&quot;default_cutoff&quot;</span><span class="p">:</span>
+                    <span class="c1"># Since there is more than one treshold, we do not take</span>
+                    <span class="c1"># default cutoff into account</span>
+                    <span class="k">continue</span>
+                <span class="k">if</span> <span class="n">pair</span> <span class="o">==</span> <span class="s2">&quot;all&quot;</span><span class="p">:</span>
+                    <span class="n">tmp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">applymap</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="n">treshold</span><span class="p">)</span>
+                    <span class="n">contact_map</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">tmp</span><span class="p">)</span>
+                    <span class="k">continue</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">pair</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">pair</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;_&quot;</span><span class="p">))</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
+                        <span class="s2">&quot;Filtering values in matrix related to </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                        <span class="nb">str</span><span class="p">(</span><span class="n">pair</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">treshold</span><span class="p">))</span>
+                    <span class="k">if</span> <span class="n">pair</span> <span class="ow">in</span> <span class="p">((</span><span class="s2">&quot;SC&quot;</span><span class="p">,</span> <span class="s2">&quot;SC&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;sc&quot;</span><span class="p">,</span> <span class="s2">&quot;sc&quot;</span><span class="p">)):</span>
+                        <span class="c1"># Use scsc_min to apply treshold updateonly for selected atom</span>
+                        <span class="c1"># sidechain</span>
+                        <span class="n">idx_list</span> <span class="o">=</span> <span class="p">[]</span>
+                        <span class="n">col_list</span> <span class="o">=</span> <span class="p">[]</span>
+                        <span class="k">for</span> <span class="n">res1</span> <span class="ow">in</span> <span class="n">scsc_min</span><span class="p">:</span>
+                            <span class="k">for</span> <span class="n">res2</span> <span class="ow">in</span> <span class="n">scsc_min</span><span class="p">[</span><span class="n">res1</span><span class="p">]:</span>
+                                <span class="n">pair</span> <span class="o">=</span> <span class="p">(</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">res1</span><span class="p">)[</span><span class="mi">1</span><span class="p">],</span>
+                                        <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">res2</span><span class="p">)[</span><span class="mi">1</span><span class="p">])</span>
+                                <span class="n">atm1</span><span class="p">,</span> <span class="n">atm2</span> <span class="o">=</span> <span class="n">scsc_min</span><span class="p">[</span><span class="n">res1</span><span class="p">][</span><span class="n">res2</span><span class="p">]</span>
+                                <span class="n">idx_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+                                    <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span>
+                                        <span class="n">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">and</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">atm1</span><span class="p">))</span>
+                                <span class="n">col_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
+                                    <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span>
+                                        <span class="n">pair</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="ow">and</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">atm2</span><span class="p">))</span>
+                        <span class="n">mask</span> <span class="o">=</span> <span class="p">([</span><span class="nb">any</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">idx_list</span><span class="p">)],</span>
+                                <span class="p">[</span><span class="nb">any</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">col_list</span><span class="p">)])</span>
+                    <span class="k">elif</span> <span class="n">pair</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">atms_list</span><span class="p">:</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Pair </span><span class="si">%s</span><span class="s2"> doesn&#39;t exist ...&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">pair</span><span class="p">))</span>
+                        <span class="c1"># Already applied a treshold for this pair</span>
+                        <span class="k">continue</span>
+                    <span class="k">else</span><span class="p">:</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Apply treshold for </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">pair</span><span class="p">))</span>
+                        <span class="n">atms_list</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">pair</span><span class="p">)</span>
+                        <span class="c1"># Selecting rows for each atom</span>
+                        <span class="n">mask</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">pair</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+                    <span class="n">tmp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">mask</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="nb">float</span><span class="p">(</span><span class="n">treshold</span><span class="p">))</span>
+                    <span class="n">contact_map</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">tmp</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Missing values in contact definition section. Add &quot;</span>
+                      <span class="s2">&quot;at least a default_cutoff value.&quot;</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Contact map</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">contact_map</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
+        <span class="k">return</span> <span class="n">contact_map</span></div>
+
+<div class="viewcode-block" id="ResAtmMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResAtmMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Copy dataframe and related attributes of the map</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">ResAtmMap</span><span class="p">(</span>
+            <span class="n">sequence</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="ResMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResMap">[docs]</a><span class="k">class</span> <span class="nc">ResMap</span><span class="p">(</span><span class="n">ResAtmMap</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Res - res distance/contact matrix&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sequence</span><span class="p">:</span>
+            <span class="n">sequence</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span>
+                <span class="s1">&#39;iupac&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">ResMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#     super(ResMap, self)._constructor_expanddim()</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Amino Acid sequence string in humanidx</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># return &quot;&quot;.join(AminoAcid.AminoAcid(aa.split(&quot;-&quot;)[1])[0] for aa in</span>
+        <span class="c1">#                self.index)</span>
+        <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">ResMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">sequence</span>
+
+<div class="viewcode-block" id="ResMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">seqidx</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">idxnames</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                     <span class="n">colnames</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        sequence</span>
+<span class="sd">        seqidx: pandas.Index</span>
+<span class="sd">        idxnames</span>
+<span class="sd">        colnames</span>
+<span class="sd">        kwargs</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Indexing Res - Res dataframe&quot;</span><span class="p">)</span>
+        <span class="n">seq</span> <span class="o">=</span> <span class="p">[</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span>
+        <span class="n">seqidx</span> <span class="o">=</span> <span class="n">seqidx</span> <span class="k">if</span> <span class="n">seqidx</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">seqidx</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
+        <span class="k">if</span> <span class="n">seqidx</span><span class="p">:</span>
+            <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">seqidx</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">aa</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">aa</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">seq</span><span class="p">)]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">aa</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">aa</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">seq</span><span class="p">)]</span>
+        <span class="n">idxnames</span> <span class="o">=</span> <span class="n">idxnames</span> <span class="k">if</span> <span class="n">idxnames</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">idxnames</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">&quot;residuex&quot;</span>
+        <span class="n">colnames</span> <span class="o">=</span> <span class="n">colnames</span> <span class="k">if</span> <span class="n">colnames</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">colnames</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">&quot;residuey&quot;</span>
+        <span class="n">index</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">(</span><span class="n">res_list</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">idxnames</span><span class="p">)</span>
+        <span class="n">col</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">(</span><span class="n">res_list</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">colnames</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">index</span><span class="p">,</span> <span class="n">col</span></div>
+
+<div class="viewcode-block" id="ResMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">as_matrix</span><span class="p">()</span><span class="o">.</span><span class="n">isnull</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="c1"># If there&#39;s no nan values</span>
+            <span class="k">return</span> <span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">as_matrix</span><span class="p">())</span>
+        <span class="k">return</span> <span class="kc">None</span></div>
+
+<div class="viewcode-block" id="ResMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            param kwargs:</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">contact_map</span> <span class="o">=</span> <span class="n">ResMap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s2">&quot;contact&quot;</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+                             <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">)</span>
+
+        <span class="k">def</span> <span class="nf">treshconv</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">            </span>
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            x :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+<span class="sd">            </span>
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">x</span> <span class="o">&lt;=</span> <span class="n">treshold</span>
+
+        <span class="c1"># Applique treshold sur la matrice ssi c&#39;est une matrice de distance</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="c1"># If self is already a contact map</span>
+            <span class="k">return</span> <span class="kc">None</span>
+        <span class="n">treshold</span> <span class="o">=</span> <span class="n">contactdef</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default_cutoff&quot;</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
+        <span class="n">contact_map</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">applymap</span><span class="p">(</span><span class="n">treshconv</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">contact_map</span></div>
+
+    <span class="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">deepcopy_method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__deepcopy__</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">__deepcopy__</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="n">cp</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">__deepcopy__</span> <span class="o">=</span> <span class="n">deepcopy_method</span>
+
+        <span class="n">cp</span><span class="o">.</span><span class="n">dtype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span>
+        <span class="c1"># custom treatments</span>
+        <span class="c1"># for instance: cp.id = None</span>
+
+        <span class="k">return</span> <span class="n">cp</span>
+
+<div class="viewcode-block" id="ResMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ResMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Copy dataframe and related attributes of the map</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">ResMap</span><span class="p">(</span>
+            <span class="n">sequence</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="AaMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap">[docs]</a><span class="k">class</span> <span class="nc">AaMap</span><span class="p">(</span><span class="n">ProteinMap</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Amino Acid Distance Matrix&quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="AaMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contactdef</span>
+<span class="sd">        scsc_min</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="AaMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#     super(AaMap, self)._constructor_expanddim()</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="c1"># if (&quot;index&quot;, &quot;columns&quot;) not in kwargs:</span>
+        <span class="c1">#     idx, col = self.create_index()</span>
+        <span class="c1">#     kwargs[&quot;index&quot;] = idx</span>
+        <span class="c1">#     kwargs[&quot;columns&quot;] = col</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AaMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">sequence</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+    <span class="c1"># TODO: Actually useless since it raised an notimplemented error</span>
+<div class="viewcode-block" id="AaMap.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Reduce level of the contactmap&quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">AaMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">()</span></div>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">sequence</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+<span class="sd">        str</span>
+<span class="sd">            String containing all amino acid 1L code</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">([</span>
+            <span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+            <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span>
+                <span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span><span class="s1">&#39;iupac&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()]))</span>
+
+<div class="viewcode-block" id="AaMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">AaMap</span><span class="p">(</span>
+            <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AaMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span>
+        <span class="n">index</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">(</span><span class="n">res_list</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;aax&quot;</span><span class="p">)</span>
+        <span class="n">col</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">Index</span><span class="p">(</span><span class="n">res_list</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;aay&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">index</span><span class="p">,</span> <span class="n">col</span></div></div>
+
+
+<div class="viewcode-block" id="AaAtmMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaAtmMap">[docs]</a><span class="k">class</span> <span class="nc">AaAtmMap</span><span class="p">(</span><span class="n">AaMap</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Amino acid map with atom levels</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+<div class="viewcode-block" id="AaAtmMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaAtmMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="AaAtmMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaAtmMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contactdef</span>
+<span class="sd">        scsc_min</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AaAtmMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">atom_types</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;atom_types&quot;</span><span class="p">,</span> <span class="s2">&quot;min&quot;</span><span class="p">)</span>
+
+<div class="viewcode-block" id="AaAtmMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaAtmMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">atom_types</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Update Aa index with atoms</span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: better way to define indexs</span>
+        <span class="c1"># idx, col = super(AaAtmMap, self).create_index()</span>
+        <span class="n">atomtable</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span>
+            <span class="s1">&#39;iupac&#39;</span><span class="p">]</span>
+        <span class="n">seq</span> <span class="o">=</span> <span class="p">[</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span>
+        <span class="n">res_list</span> <span class="o">=</span> <span class="p">[</span>
+            <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">aa</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">aa</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">seq</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">atomtable</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())]</span>
+        <span class="n">atm_list</span> <span class="o">=</span> <span class="p">[</span>
+            <span class="n">atm</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">,</span> <span class="s1">&#39;SC&#39;</span><span class="p">)]</span> \
+            <span class="k">if</span> <span class="n">atom_types</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span> <span class="k">else</span> <span class="p">[</span>
+            <span class="n">atm</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span>
+                                                <span class="n">atomtable</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())]</span> \
+            <span class="k">if</span> <span class="n">atom_types</span> <span class="o">==</span> <span class="s2">&quot;heavy&quot;</span> <span class="k">else</span> <span class="p">[</span>
+            <span class="n">atm</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span> <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="n">atomtable</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()]</span>
+        <span class="n">idx</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">])),</span>
+                                        <span class="n">names</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">))</span>
+        <span class="n">col</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">])),</span>
+                                        <span class="n">names</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">idx</span><span class="p">,</span> <span class="n">col</span></div>
+
+<div class="viewcode-block" id="AaAtmMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AaAtmMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        kwargs :</span>
+
+<span class="sd">        **kwargs :</span>
+
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">AaAtmMap</span><span class="p">(</span>
+            <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span>
+            <span class="n">atom_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">atom_types</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="SsAaAtmMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap">[docs]</a><span class="k">class</span> <span class="nc">SsAaAtmMap</span><span class="p">(</span><span class="n">AaAtmMap</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Amino acid map with atom and secondary structure levels</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">ss_types</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">,</span> <span class="s2">&quot;X&quot;</span><span class="p">)</span>
+
+<div class="viewcode-block" id="SsAaAtmMap.contact_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap.contact_map">[docs]</a>    <span class="k">def</span> <span class="nf">contact_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contactdef</span>
+<span class="sd">        scsc_min</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+<div class="viewcode-block" id="SsAaAtmMap.create_heatmap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap.create_heatmap">[docs]</a>    <span class="k">def</span> <span class="nf">create_heatmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">SsAaAtmMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">atom_types</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;atom_types&quot;</span><span class="p">,</span> <span class="s2">&quot;min&quot;</span><span class="p">)</span>
+
+<div class="viewcode-block" id="SsAaAtmMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence</span><span class="p">,</span> <span class="n">atom_types</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        atom_types</span>
+<span class="sd">        sequence</span>
+<span class="sd">        kwargs</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: better way to define indexs, duplicated code here !!!</span>
+        <span class="c1"># idx, col = super(AaAtmMap, self).create_index()</span>
+        <span class="n">atomtable</span> <span class="o">=</span> <span class="n">ConversionTable</span><span class="o">.</span><span class="n">ConversionTable</span><span class="p">()</span><span class="o">.</span><span class="n">table</span><span class="p">[</span><span class="s1">&#39;AMINO_ACID&#39;</span><span class="p">][</span>
+            <span class="s1">&#39;iupac&#39;</span><span class="p">]</span>
+        <span class="n">seq</span> <span class="o">=</span> <span class="p">[</span><span class="n">AminoAcid</span><span class="o">.</span><span class="n">AminoAcid</span><span class="p">(</span><span class="n">aa</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">sequence</span><span class="p">]</span>
+        <span class="n">ss_list</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[]</span>
+
+        <span class="k">for</span> <span class="n">ss</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ss_types</span><span class="p">:</span>
+            <span class="k">for</span> <span class="n">aa</span> <span class="ow">in</span> <span class="n">seq</span><span class="p">:</span>
+                <span class="n">atms</span> <span class="o">=</span> <span class="p">(</span><span class="s1">&#39;CA&#39;</span><span class="p">,</span> <span class="s1">&#39;CB&#39;</span><span class="p">,</span> <span class="s1">&#39;SC&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="n">atom_types</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span> <span class="k">else</span> <span class="nb">filter</span><span class="p">(</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">,</span> <span class="n">atomtable</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="k">if</span> <span class="n">atom_types</span> <span class="o">==</span> <span class="s2">&quot;heavy&quot;</span> <span class="k">else</span> <span class="n">atomtable</span><span class="p">[</span><span class="n">aa</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
+                <span class="k">for</span> <span class="n">atm</span> <span class="ow">in</span> <span class="n">atms</span><span class="p">:</span>
+                    <span class="n">ss_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span>
+                    <span class="n">res_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">aa</span><span class="p">)</span>
+                    <span class="n">atm_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">atm</span><span class="p">)</span>
+        <span class="n">idx</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span>
+            <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">ss_list</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">])),</span>
+            <span class="n">names</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">))</span>
+        <span class="n">col</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">MultiIndex</span><span class="o">.</span><span class="n">from_tuples</span><span class="p">(</span>
+            <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">ss_list</span><span class="p">,</span> <span class="n">res_list</span><span class="p">,</span> <span class="n">atm_list</span><span class="p">])),</span>
+            <span class="n">names</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="s1">&#39;AminoAcid&#39;</span><span class="p">,</span> <span class="s1">&#39;Atom&#39;</span><span class="p">))</span>
+        <span class="k">return</span> <span class="n">idx</span><span class="p">,</span> <span class="n">col</span></div>
+
+<div class="viewcode-block" id="SsAaAtmMap.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">groupby</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        groupby :</span>
+<span class="sd">            return: (Default value = &quot;min&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">nlevels</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">groupby</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span>
+        <span class="n">newmap</span> <span class="o">=</span> <span class="n">AaAtmMap</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+                          <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">,</span>
+                          <span class="n">atom_types</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">atom_types</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dtype</span> <span class="o">==</span> <span class="nb">bool</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span>
+                <span class="n">level</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span><span class="o">.</span><span class="n">any</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;mean&quot;</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span>
+                <span class="n">level</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="n">groupby</span> <span class="o">==</span> <span class="s2">&quot;min&quot;</span><span class="p">:</span>
+            <span class="n">newmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="s1">&#39;SecStruct&#39;</span><span class="p">,</span> <span class="n">dropna</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span>
+                <span class="n">level</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">newmap</span></div>
+
+<div class="viewcode-block" id="SsAaAtmMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.SsAaAtmMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        kwargs :</span>
+
+<span class="sd">        **kwargs :</span>
+
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">SsAaAtmMap</span><span class="p">(</span>
+            <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="AtmMap"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AtmMap">[docs]</a><span class="k">class</span> <span class="nc">AtmMap</span><span class="p">(</span><span class="n">Map</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Atom Distance Matrix&quot;&quot;&quot;</span>
+
+    <span class="c1"># def _constructor_expanddim(self):</span>
+    <span class="c1">#     super(AtmMap, self)._constructor_expanddim()</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AtmMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+<div class="viewcode-block" id="AtmMap.reduce"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AtmMap.reduce">[docs]</a>    <span class="k">def</span> <span class="nf">reduce</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Reduce level of the contactmap&quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">AtmMap</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AtmMap.copy"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AtmMap.copy">[docs]</a>    <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">df</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Map</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="k">return</span> <span class="n">AtmMap</span><span class="p">(</span>
+            <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">df</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">desc</span><span class="p">,</span>
+            <span class="n">sym</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sym</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">mtype</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dtype</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="AtmMap.create_index"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.AtmMap.create_index">[docs]</a>    <span class="k">def</span> <span class="nf">create_index</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div></div>
+
+
+<div class="viewcode-block" id="ProtMapCollection"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.ProtMapCollection">[docs]</a><span class="k">class</span> <span class="nc">ProtMapCollection</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Group all protein maps&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_allscoremap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_allcontactmap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_distmap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_scoremap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_contactmap</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">alldistmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level distance map.</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span>
+
+    <span class="nd">@alldistmap</span><span class="o">.</span><span class="n">setter</span>
+    <span class="k">def</span> <span class="nf">alldistmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resatmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level distance map setter. The only way is to give resatmmap object</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resatmap :</span>
+<span class="sd">            type resatmap: ResAtmMap</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span> <span class="o">=</span> <span class="n">resatmap</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">allcontactmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level contact map. If alldistmap exists, return the maplot</span>
+<span class="sd">        form</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span><span class="p">:</span>
+            <span class="c1"># settings.contactdef.config</span>
+            <span class="c1"># settings.main.scsc_min_file</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span><span class="o">.</span><span class="n">contact_map</span><span class="p">(</span><span class="n">contactdef</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span>
+                <span class="s2">&quot;contactdef&quot;</span><span class="p">],</span> <span class="n">scsc_min</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;scsc_min_file&quot;</span><span class="p">])</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_allcontactmap</span>
+
+    <span class="nd">@allcontactmap</span><span class="o">.</span><span class="n">setter</span>
+    <span class="k">def</span> <span class="nf">allcontactmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resatmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level contact map setter</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resatmap :</span>
+<span class="sd">            binary res atm map</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_allcontactmap</span> <span class="o">=</span> <span class="n">resatmap</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">allscoremap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level score map</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_allscoremap</span>
+
+    <span class="nd">@allscoremap</span><span class="o">.</span><span class="n">setter</span>
+    <span class="k">def</span> <span class="nf">allscoremap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resatmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Atom level score map setter</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resatmap :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_allscoremap</span> <span class="o">=</span> <span class="n">resatmap</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">distmap</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alldistmap</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="n">groupby</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span>
+                <span class="s2">&quot;groupby_method&quot;</span><span class="p">])</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_distmap</span>
+
+    <span class="nd">@distmap</span><span class="o">.</span><span class="n">setter</span>
+    <span class="k">def</span> <span class="nf">distmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resmap :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_distmap</span> <span class="o">=</span> <span class="n">resmap</span></div>
+
+
+<div class="viewcode-block" id="MapFilter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter">[docs]</a><span class="k">class</span> <span class="nc">MapFilter</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Filter maplot/distancemap</span>
+<span class="sd">        nd      : Network deconvolution</span>
+<span class="sd">        pos     : remove close contacts</span>
+<span class="sd">        cons    : remove contacts with highly conservated residues</span>
+<span class="sd">        cys-cys : unicity of ss contacts</span>
+<span class="sd">        ssclash : secondary structure conflict</span>
+
+<span class="sd">    Parameters</span>
+<span class="sd">    ----------</span>
+
+<span class="sd">    Returns</span>
+<span class="sd">    -------</span>
+
+<span class="sd">    </span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="n">filter_types</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;pos&quot;</span><span class="p">,</span> <span class="s2">&quot;cons&quot;</span><span class="p">,</span> <span class="s2">&quot;ssclash&quot;</span><span class="p">,</span> <span class="s2">&quot;cys&quot;</span><span class="p">)</span>
+    <span class="n">clash_dict</span> <span class="o">=</span> <span class="p">{</span>
+        <span class="s2">&quot;pos&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;clash&quot;</span><span class="p">:</span> <span class="s2">&quot;physical proximity&quot;</span><span class="p">,</span>
+            <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;sequence position&quot;</span><span class="p">},</span>
+        <span class="s2">&quot;cons&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;clash&quot;</span><span class="p">:</span> <span class="s2">&quot;888&quot;</span><span class="p">,</span>
+            <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;high conservation&quot;</span><span class="p">},</span>
+        <span class="s2">&quot;ssclash&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;clash&quot;</span><span class="p">:</span> <span class="s2">&quot;999&quot;</span><span class="p">,</span>
+            <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;secondary structure prediction conflict&quot;</span><span class="p">},</span>
+        <span class="s2">&quot;cys&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;clash&quot;</span><span class="p">:</span> <span class="s2">&quot;222&quot;</span><span class="p">,</span>
+            <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;disulfide bond unicity&quot;</span><span class="p">}}</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">,</span> <span class="n">nofilter</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">nofilter</span> <span class="o">=</span> <span class="n">nofilter</span>
+
+<div class="viewcode-block" id="MapFilter.nd_filter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.nd_filter">[docs]</a>    <span class="k">def</span> <span class="nf">nd_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapdict</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        mapdict :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: build ROC curve with number of top contacts as the parameter</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param mapdict:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;...Network deconvolution filter (alpha=</span><span class="si">%.2f</span><span class="s2">, beta=</span><span class="si">%.2f</span><span class="s2">)&quot;</span><span class="p">,</span>
+                 <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;nd_beta&quot;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;nd_alpha&quot;</span><span class="p">])</span>
+        <span class="n">scoremap</span> <span class="o">=</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">net_deconv</span><span class="p">(</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">as_matrix</span><span class="p">(),</span>
+                            <span class="n">beta</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;nd_beta&quot;</span><span class="p">],</span>
+                            <span class="n">alpha</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;nd_alpha&quot;</span><span class="p">]))</span>
+        <span class="c1"># TODO: MAJ score map avec matrice obtenue !!!</span>
+        <span class="c1"># !!!! Verifier que scoremap est bien maj et UTILISEE !!</span>
+        <span class="k">return</span> <span class="n">scoremap</span></div>
+
+<div class="viewcode-block" id="MapFilter.pos_filter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.pos_filter">[docs]</a>    <span class="k">def</span> <span class="nf">pos_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapdict</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Position filter on maplot</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            param mapdict: dict with maplot key</span>
+<span class="sd">        mapdict :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Liste les contacts proches</span>
+        <span class="n">clash_list</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash_list&quot;</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;...Position filter&quot;</span><span class="p">)</span>
+        <span class="n">close_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">contact_list</span> <span class="o">=</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contact_list</span><span class="p">()</span>
+
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">contact_list</span><span class="p">:</span>
+            <span class="n">gap</span> <span class="o">=</span> <span class="nb">abs</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">-</span> <span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+            <span class="k">if</span> <span class="n">gap</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;position_treshold&#39;</span><span class="p">]:</span>
+                <span class="k">if</span> <span class="n">clash_list</span> <span class="ow">and</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">clash_list</span><span class="p">:</span>
+                    <span class="k">continue</span>
+                <span class="n">close_list</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="n">close_list</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span></div>
+
+<div class="viewcode-block" id="MapFilter.cons_filter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.cons_filter">[docs]</a>    <span class="k">def</span> <span class="nf">cons_filter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapdict</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        mapdict :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Liste les contacts aves des residus fortement conserves</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param mapdict:</span>
+<span class="sd">        :param kwargs:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;...Conservation filter&quot;</span><span class="p">)</span>
+        <span class="n">sec_struct</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sec_struct&quot;</span><span class="p">)</span>
+        <span class="n">clash_list</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash_list&quot;</span><span class="p">)</span>
+        <span class="n">cons_pair</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">cons_res</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">contact_list</span> <span class="o">=</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contact_list</span><span class="p">()</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sec_struct</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
+                <span class="s2">&quot;No conservation information. Can&#39;t use related filter&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
+
+        <span class="k">if</span> <span class="n">sec_struct</span><span class="o">.</span><span class="n">filetype</span> <span class="o">!=</span> <span class="s2">&quot;indextableplus&quot;</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Conservation filter only works with indextableplus &quot;</span>
+                     <span class="s2">&quot;files !&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
+
+        <span class="c1"># parcours la liste de paires dans la matrice struct secondaire</span>
+        <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">reslist</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span><span class="p">):</span>
+            <span class="c1"># TODO: Initialize conservation score if other value than int</span>
+            <span class="n">cons_score</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">reslist</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span> <span class="k">if</span> <span class="n">reslist</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;-&quot;</span> <span class="k">else</span> <span class="mi">0</span>
+            <span class="k">if</span> <span class="n">cons_score</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;conservation_treshold&quot;</span><span class="p">]</span> \
+                    <span class="ow">and</span> <span class="n">reslist</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">!=</span> <span class="s1">&#39;C&#39;</span><span class="p">:</span>
+                <span class="n">cons_res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
+
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">contact_list</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">cons_res</span> <span class="ow">or</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">in</span> <span class="n">cons_res</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">clash_list</span> <span class="ow">and</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">clash_list</span><span class="p">:</span>
+                    <span class="c1"># If this clash already exist</span>
+                    <span class="k">continue</span>
+                <span class="n">cons_pair</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">contact</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Highly conserved residue list: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">cons_res</span><span class="p">)</span>
+        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="n">cons_pair</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span></div>
+
+<div class="viewcode-block" id="MapFilter.cys_filter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.cys_filter">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">cys_filter</span><span class="p">(</span><span class="n">mapdict</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        mapdict :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Si scoremap existe, selectionner les contacts cys-cys qui ont les</span>
+        <span class="c1"># meilleurs scores, fournit une liste des contacts disulfures qui</span>
+        <span class="c1"># possedent des scores plus faibles</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param mapdict:</span>
+<span class="sd">        :param kwargs:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;...Disulfure bridge unicity filter&quot;</span><span class="p">)</span>
+        <span class="n">clash_list</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash_list&quot;</span><span class="p">)</span>
+        <span class="n">unidisbridge_list</span> <span class="o">=</span> <span class="p">[]</span>  <span class="c1"># Liste les ponts disulfures uniques</span>
+        <span class="n">clashdisbridge_list</span> <span class="o">=</span> <span class="p">[]</span>  <span class="c1"># Liste les ponts disulfures incompatibles</span>
+        <span class="n">desc</span> <span class="o">=</span> <span class="p">[]</span>
+
+        <span class="k">if</span> <span class="n">mapdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scoremap&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="n">scoremap</span> <span class="o">=</span> <span class="n">mapdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scoremap&quot;</span><span class="p">)</span>
+            <span class="c1"># List of all cysteine</span>
+            <span class="n">cys_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">idx</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">scoremap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
+                        <span class="k">if</span> <span class="n">val</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">&#39;CYS&#39;</span><span class="p">)]</span>
+            <span class="n">dis_bridge_list</span> <span class="o">=</span> <span class="p">{</span><span class="n">ss</span><span class="p">:</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">iat</span><span class="p">[</span><span class="n">ss</span><span class="p">]</span> <span class="k">for</span> <span class="n">ss</span>
+                               <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">combinations</span><span class="p">(</span><span class="n">cys_list</span><span class="p">,</span> <span class="mi">2</span><span class="p">))}</span>
+            <span class="k">if</span> <span class="n">dis_bridge_list</span><span class="p">:</span>
+                <span class="c1"># Get list of all disulfure bridges sorted</span>
+                <span class="n">sorted_ss</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="nb">sorted</span><span class="p">(</span><span class="n">dis_bridge_list</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span>
+                                        <span class="n">key</span><span class="o">=</span><span class="n">operator</span><span class="o">.</span><span class="n">itemgetter</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
+                                        <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
+            <span class="k">for</span> <span class="n">dis_bridge</span> <span class="ow">in</span> <span class="n">sorted_ss</span><span class="p">:</span>
+                <span class="c1"># foreach disulfure bridge</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s1">&#39;Checking </span><span class="si">%s</span><span class="s1"> </span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">addtup</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">),</span>
+                          <span class="n">scoremap</span><span class="o">.</span><span class="n">iat</span><span class="p">[</span><span class="n">dis_bridge</span><span class="p">])</span>
+                <span class="k">if</span> <span class="n">dis_bridge</span> <span class="ow">in</span> <span class="n">clash_list</span><span class="p">:</span>
+                    <span class="c1"># given contact already removed with previous filters</span>
+                    <span class="k">continue</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="c1"># Check for each cys in dis_bridge if they aready exists</span>
+                    <span class="c1"># in unidisbridge_list</span>
+                    <span class="n">exdis</span> <span class="o">=</span> <span class="kc">None</span>
+                    <span class="k">if</span> <span class="n">unidisbridge_list</span><span class="p">:</span>
+                        <span class="k">for</span> <span class="n">cys</span> <span class="ow">in</span> <span class="n">dis_bridge</span><span class="p">:</span>
+                            <span class="k">for</span> <span class="n">unidis</span> <span class="ow">in</span> <span class="n">unidisbridge_list</span><span class="p">:</span>
+                                <span class="k">if</span> <span class="n">cys</span> <span class="ow">in</span> <span class="n">unidis</span><span class="p">:</span>
+                                    <span class="n">exdis</span> <span class="o">=</span> <span class="n">unidis</span>
+                                    <span class="k">break</span>
+                        <span class="k">if</span> <span class="n">exdis</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Ss bridge </span><span class="si">%s</span><span class="s2"> have at least one cys in &quot;</span>
+                                      <span class="s2">&quot;common with previous ss filtered (</span><span class="si">%s</span><span class="s2">). &quot;</span><span class="p">,</span>
+                                      <span class="n">addtup</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">),</span>
+                                      <span class="nb">map</span><span class="p">(</span><span class="n">addtup</span><span class="p">,</span> <span class="n">unidisbridge_list</span><span class="p">))</span>
+                            <span class="k">if</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">iat</span><span class="p">[</span><span class="n">dis_bridge</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">scoremap</span><span class="o">.</span><span class="n">iat</span><span class="p">[</span><span class="n">exdis</span><span class="p">]:</span>
+                                <span class="c1"># Better cys--cys contact</span>
+                                <span class="c1"># List cys-cys contacts that will be removed in</span>
+                                <span class="c1">#  unidisbridge_list</span>
+                                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> has better score than </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                                          <span class="n">addtup</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">),</span>
+                                          <span class="n">addtup</span><span class="p">(</span><span class="n">exdis</span><span class="p">))</span>
+                                <span class="n">remcys</span> <span class="o">=</span> <span class="p">(</span><span class="n">unidis</span> <span class="k">for</span> <span class="n">cys</span> <span class="ow">in</span> <span class="n">dis_bridge</span> <span class="k">for</span> <span class="n">unidis</span>
+                                          <span class="ow">in</span> <span class="n">unidisbridge_list</span> <span class="k">if</span> <span class="n">cys</span> <span class="ow">in</span> <span class="n">unidis</span><span class="p">)</span>
+                                <span class="k">for</span> <span class="n">dis</span> <span class="ow">in</span> <span class="n">remcys</span><span class="p">:</span>
+                                    <span class="c1"># PB si un des dis supprime est</span>
+                                    <span class="n">clashdisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis</span><span class="p">)</span>
+                                    <span class="n">clashdisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+                                    <span class="n">unidisbridge_list</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">dis</span><span class="p">)</span>
+                                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Added </span><span class="si">%s</span><span class="s2"> to clashlist </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                                              <span class="n">addtup</span><span class="p">(</span><span class="n">dis</span><span class="p">),</span>
+                                              <span class="nb">map</span><span class="p">(</span><span class="n">addtup</span><span class="p">,</span> <span class="n">clashdisbridge_list</span><span class="p">))</span>
+                                <span class="n">unidisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">)</span>
+                                <span class="k">continue</span>
+                            <span class="k">else</span><span class="p">:</span>
+                                <span class="n">clashdisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">)</span>
+                                <span class="n">clashdisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+                                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Added </span><span class="si">%s</span><span class="s2"> to ss clashlist </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                                          <span class="n">addtup</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">),</span>
+                                          <span class="nb">map</span><span class="p">(</span><span class="n">addtup</span><span class="p">,</span> <span class="n">clashdisbridge_list</span><span class="p">))</span>
+                                <span class="k">continue</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s1">&#39;Adding bridge </span><span class="si">%s</span><span class="s1"> to ss filtered list&#39;</span><span class="p">,</span> <span class="n">dis_bridge</span><span class="p">)</span>
+                    <span class="n">unidisbridge_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dis_bridge</span><span class="p">)</span>
+            <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="n">clashdisbridge_list</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="n">desc</span><span class="p">}</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># If no score given, return empty list</span>
+            <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span></div>
+
+<div class="viewcode-block" id="MapFilter.ssclash_filter"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.ssclash_filter">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">ssclash_filter</span><span class="p">(</span><span class="n">mapdict</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        mapdict :</span>
+<span class="sd">            param kwargs:</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+
+        <span class="k">def</span> <span class="nf">hum_contact</span><span class="p">(</span><span class="n">xy</span><span class="p">):</span>
+            <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">            </span>
+
+<span class="sd">            Parameters</span>
+<span class="sd">            ----------</span>
+<span class="sd">            xy :</span>
+<span class="sd">                return:</span>
+
+<span class="sd">            Returns</span>
+<span class="sd">            -------</span>
+
+<span class="sd">            </span>
+<span class="sd">            &quot;&quot;&quot;</span>
+            <span class="k">return</span> <span class="n">xy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">xy</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="mi">1</span>
+
+        <span class="c1"># TODO: better add clash list and sec_struct as object attribute</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;...Secondary structure clash filter&quot;</span><span class="p">)</span>
+        <span class="n">sec_struct</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sec_struct&quot;</span><span class="p">)</span>
+        <span class="n">clash_list</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash_list&quot;</span><span class="p">)</span>
+        <span class="n">ssclash_pair</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">desc_dict</span> <span class="o">=</span> <span class="p">{}</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">sec_struct</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;No secondary structure information. Can&#39;t use secondary&quot;</span>
+                        <span class="s2">&quot; structure filter&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
+
+        <span class="n">ss_matrix</span> <span class="o">=</span> <span class="n">sec_struct</span><span class="o">.</span><span class="n">ss_matrix</span>
+        <span class="n">ss_list</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">ss_matrix</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
+        <span class="c1"># contact_list from contact map start at 0 !!</span>
+        <span class="n">contact_list</span> <span class="o">=</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contact_list</span><span class="p">()</span>
+
+        <span class="n">ss_start_end</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">defaultdict</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">])</span>
+
+        <span class="c1"># TODO: deplacer construction du dic ss_start_end dans SsList</span>
+        <span class="k">for</span> <span class="n">res_ind</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">ss_matrix</span><span class="p">)):</span>
+            <span class="c1"># Construction du dict ss_start_end</span>
+            <span class="k">if</span> <span class="n">res_ind</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+                <span class="c1"># If first residue</span>
+                <span class="c1"># Save ss start humanidx related to res_ind</span>
+                <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span>
+                <span class="k">if</span> <span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span>
+                    <span class="c1"># If next res is not in the same ss</span>
+                    <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span>
+                    <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span>
+            <span class="k">elif</span> <span class="n">res_ind</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">ss_matrix</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="c1"># Si dernier res</span>
+                <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span>
+            <span class="k">elif</span> <span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]:</span>
+                <span class="c1"># If next res not in the same ss</span>
+                <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span>
+                <span class="n">ss_start_end</span><span class="p">[</span><span class="n">ss_matrix</span><span class="p">[</span><span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]][</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">res_ind</span> <span class="o">+</span> <span class="mi">1</span>
+
+        <span class="n">start_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">ss_start_end</span><span class="p">[</span><span class="n">elm</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">elm</span> <span class="ow">in</span> <span class="n">ss_start_end</span><span class="p">]</span>
+        <span class="n">end_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">ss_start_end</span><span class="p">[</span><span class="n">elm</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">elm</span> <span class="ow">in</span> <span class="n">ss_start_end</span><span class="p">]</span>
+
+        <span class="k">for</span> <span class="n">icontact</span><span class="p">,</span> <span class="n">contact</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">contact_list</span><span class="p">):</span>
+            <span class="c1"># For each res-res contact</span>
+            <span class="n">outcontact</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">hum_contact</span><span class="p">(</span><span class="n">contact</span><span class="p">))</span>
+            <span class="k">if</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">clash_list</span><span class="p">:</span>
+                <span class="k">continue</span>
+            <span class="n">resi</span> <span class="o">=</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>  <span class="c1"># Pos number (0...n-1)</span>
+            <span class="n">resj</span> <span class="o">=</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+            <span class="n">ssi</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resi</span><span class="p">]</span>
+            <span class="n">ssj</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resj</span><span class="p">]</span>
+
+            <span class="k">if</span> <span class="n">ssi</span> <span class="o">==</span> <span class="n">ssj</span> <span class="ow">and</span> <span class="p">(</span><span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="p">((</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;H&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)):</span>
+                <span class="c1"># If both residues are in same helix or strand</span>
+                <span class="n">desc</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">,</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                <span class="n">desc_dict</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span> <span class="o">=</span> <span class="n">desc</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Ss conflict for contact </span><span class="si">%d</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                          <span class="n">icontact</span><span class="p">,</span> <span class="n">outcontact</span><span class="p">,</span> <span class="n">desc</span><span class="p">)</span>
+                <span class="n">ssclash_pair</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">contact</span><span class="p">)</span>
+            <span class="c1"># ELIF encadre H ou E</span>
+            <span class="k">elif</span> <span class="n">ssi</span> <span class="o">!=</span> <span class="n">ssj</span><span class="p">:</span>
+                <span class="c1"># If both residues are not in the same ss</span>
+                <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">):</span>
+
+                    <span class="c1"># Search type of the bond (H-1 H, E-2 E, ...)</span>
+                    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">):</span>
+                        <span class="c1"># Test both sides</span>
+
+                        <span class="n">resi</span> <span class="o">=</span> <span class="n">contact</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
+                        <span class="n">resj</span> <span class="o">=</span> <span class="n">contact</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
+                        <span class="n">ssi</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resi</span><span class="p">]</span>
+                        <span class="n">ssj</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resj</span><span class="p">]</span>
+
+                        <span class="k">try</span><span class="p">:</span>
+                            <span class="n">ssi_pn</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resi</span> <span class="o">+</span> <span class="n">n</span><span class="p">]</span>
+                            <span class="n">ssi_mn</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resi</span> <span class="o">-</span> <span class="n">n</span><span class="p">]</span>
+                            <span class="n">ssj_pn</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resj</span> <span class="o">+</span> <span class="n">n</span><span class="p">]</span>
+                            <span class="n">ssj_mn</span> <span class="o">=</span> <span class="n">ss_list</span><span class="p">[</span><span class="n">resj</span> <span class="o">-</span> <span class="n">n</span><span class="p">]</span>
+                        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
+                            <span class="k">continue</span>
+
+                        <span class="c1"># (E-n, E) OR (H-n, H)</span>
+                        <span class="k">if</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resi</span> <span class="o">+</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">start_list</span> \
+                                <span class="ow">and</span> <span class="n">ssi_pn</span> <span class="o">==</span> <span class="n">ssj</span><span class="p">:</span>
+                            <span class="c1"># --i**[-----j-----]--- (n: **)</span>
+                            <span class="c1">#           E/H</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">-</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssi_pn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                            <span class="k">break</span>
+                        <span class="k">if</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resi</span> <span class="o">-</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">end_list</span> \
+                                <span class="ow">and</span> <span class="n">ssi_mn</span> <span class="o">==</span> <span class="n">ssj</span><span class="p">:</span>
+                            <span class="c1"># -----[-----j-----]**i--- (n: **)</span>
+                            <span class="c1">#           E/H</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">+</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssi_mn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                            <span class="k">break</span>
+                        <span class="k">if</span> <span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resj</span> <span class="o">+</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">start_list</span> \
+                                <span class="ow">and</span> <span class="n">ssj_pn</span> <span class="o">==</span> <span class="n">ssi</span><span class="p">:</span>
+                            <span class="c1"># --j**[-----i-----]--- (n: **)</span>
+                            <span class="c1">#           E/H</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">-</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssj_pn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span> <span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                            <span class="k">break</span>
+                        <span class="k">if</span> <span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resj</span> <span class="o">-</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">end_list</span> \
+                                <span class="ow">and</span> <span class="n">ssj_mn</span> <span class="o">==</span> <span class="n">ssi</span><span class="p">:</span>
+                            <span class="c1"># -----[-----i-----]**j--- (n: **)</span>
+                            <span class="c1">#           E/H</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">+</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssj_mn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span> <span class="n">ssi</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                            <span class="k">break</span>
+
+                        <span class="c1"># (E+n, E-n), (H+n, H-n)</span>
+                        <span class="k">if</span> <span class="n">ssi_mn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resi</span> <span class="o">-</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">end_list</span> \
+                                <span class="ow">and</span> <span class="n">resj</span> <span class="o">+</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">start_list</span> \
+                                <span class="ow">and</span> <span class="n">ssi_mn</span> <span class="o">==</span> <span class="n">ssj_pn</span><span class="p">:</span>
+                            <span class="c1"># --j**[-----H/E-----]**i-- (n: **)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">+</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">-</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssi_mn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span>
+                                                       <span class="n">ssj_pn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">)</span>
+                            <span class="k">break</span>
+                        <span class="k">if</span> <span class="n">ssi_pn</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H&quot;</span><span class="p">,</span> <span class="s2">&quot;E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="n">resi</span> <span class="o">+</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">start_list</span> \
+                                <span class="ow">and</span> <span class="n">resj</span> <span class="o">-</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">end_list</span> \
+                                <span class="ow">and</span> <span class="n">ssi_pn</span> <span class="o">==</span> <span class="n">ssj_mn</span><span class="p">:</span>
+                            <span class="c1"># --i**[-----H/E-----]**j-- (n: **)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">-</span><span class="si">%d</span><span class="s2">,</span><span class="si">%s</span><span class="s2">+</span><span class="si">%d</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ssi_pn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">,</span>
+                                                       <span class="n">ssj_mn</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">n</span><span class="p">)</span>
+                            <span class="k">break</span>
+
+                    <span class="k">if</span> <span class="n">ssclash</span><span class="p">:</span>
+                        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Ss clash for contact </span><span class="si">%d</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                                  <span class="n">icontact</span><span class="p">,</span> <span class="n">outcontact</span><span class="p">,</span> <span class="n">ssclash</span><span class="p">)</span>
+                        <span class="k">if</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-2,H&quot;</span><span class="p">,</span> <span class="s2">&quot;H+2,H&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="nb">abs</span><span class="p">(</span><span class="n">resi</span> <span class="o">-</span> <span class="n">resj</span><span class="p">)</span> <span class="o">==</span> <span class="mi">6</span><span class="p">:</span>
+                            <span class="c1"># Allow contact to the fifth residue in the</span>
+                            <span class="c1"># helix</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Found (H-2, H) for contact </span><span class="si">%s</span><span class="s2"> clash &quot;</span>
+                                      <span class="s2">&quot;but contact with fifth residue is &quot;</span>
+                                      <span class="s2">&quot;actually allowed&quot;</span><span class="p">,</span>
+                                      <span class="n">outcontact</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-3,H&quot;</span><span class="p">,</span> <span class="s2">&quot;H+3,H&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="nb">abs</span><span class="p">(</span><span class="n">resi</span> <span class="o">-</span> <span class="n">resj</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">12</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Found (H-3, H) for contact </span><span class="si">%s</span><span class="s2"> clash &quot;</span>
+                                      <span class="s2">&quot;but contact between 3rd and 10th &quot;</span>
+                                      <span class="s2">&quot;residues are actually allowed&quot;</span><span class="p">,</span>
+                                      <span class="n">outcontact</span><span class="p">)</span>
+                            <span class="c1"># Allow contact between 3rd residue and 10th</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-4,H&quot;</span><span class="p">,</span> <span class="s2">&quot;H+4,H&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;H-4,H are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-2,H+2&quot;</span><span class="p">,</span> <span class="s2">&quot;H+2,H-2&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;H-2,H+2 are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-3,H+3&quot;</span><span class="p">,</span> <span class="s2">&quot;H+3,H-3&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;H-3,H+3 are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;H-4,H+4&quot;</span><span class="p">,</span> <span class="s2">&quot;H+4,H-4&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;H-4,H+4 are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="o">==</span> <span class="s2">&quot;E-2,E+2&quot;</span><span class="p">:</span>
+                            <span class="n">strand</span> <span class="o">=</span> <span class="n">ssj</span> <span class="k">if</span> <span class="n">ssj</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;E&quot;</span> <span class="k">else</span> <span class="n">ssi</span>
+                            <span class="n">start</span> <span class="o">=</span> <span class="n">ss_start_end</span><span class="p">[</span><span class="n">strand</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
+                            <span class="n">end</span> <span class="o">=</span> <span class="n">ss_start_end</span><span class="p">[</span><span class="n">strand</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
+                            <span class="k">if</span> <span class="nb">abs</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">5</span><span class="p">:</span>
+                                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Found (E-2, E+2) for contact &quot;</span>
+                                          <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> clash but strand &quot;</span>
+                                          <span class="s2">&quot;is &lt; 5 residues&quot;</span><span class="p">,</span> <span class="n">outcontact</span><span class="p">)</span>
+                                <span class="c1"># Allow contact if strand &lt; 5 residues (gap &lt;8)</span>
+                                <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;E-3,E+3&quot;</span><span class="p">,</span> <span class="s2">&quot;E+3,E-3&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;E-3,E+3 are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;E-4,E+4&quot;</span><span class="p">,</span> <span class="s2">&quot;E+4,E-4&quot;</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;E-4,E+4 are actually allowed&quot;</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">elif</span> <span class="n">ssclash</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;E-4,E&quot;</span><span class="p">,</span> <span class="s2">&quot;E+4,E&quot;</span><span class="p">)</span> \
+                                <span class="ow">and</span> <span class="nb">abs</span><span class="p">(</span><span class="n">resi</span> <span class="o">-</span> <span class="n">resj</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">8</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Found (E-4, E) for contact </span><span class="si">%s</span><span class="s2"> clash &quot;</span>
+                                      <span class="s2">&quot;but contacts below 4th residue are &quot;</span>
+                                      <span class="s2">&quot;actually allowed&quot;</span><span class="p">,</span> <span class="n">outcontact</span><span class="p">)</span>
+                            <span class="n">ssclash</span> <span class="o">=</span> <span class="kc">None</span>
+                        <span class="k">if</span> <span class="n">ssclash</span><span class="p">:</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
+                                <span class="s2">&quot;Ss conflict for contact </span><span class="si">%d</span><span class="s2"> </span><span class="si">%s</span><span class="s2"> (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                                <span class="n">icontact</span><span class="p">,</span> <span class="n">outcontact</span><span class="p">,</span> <span class="n">ssclash</span><span class="p">)</span>
+                            <span class="n">desc_dict</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span> <span class="o">=</span> <span class="n">ssclash</span>
+                            <span class="n">ssclash_pair</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">contact</span><span class="p">)</span>
+                            <span class="k">break</span>
+        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;clash&#39;</span><span class="p">:</span> <span class="n">ssclash_pair</span><span class="p">,</span> <span class="s1">&#39;desc&#39;</span><span class="p">:</span> <span class="n">desc_dict</span><span class="p">}</span></div>
+
+    <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mapdict</span><span class="p">,</span> <span class="n">mtype</span><span class="p">,</span> <span class="n">contactlist</span><span class="p">,</span> <span class="n">inprot</span><span class="p">,</span>
+                 <span class="n">mapfilters</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">outprefix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">clashlist</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Filter contact map</span>
+<span class="sd">        :param mapdict: dict containing ResMap and ResAtmMap for contacts,</span>
+<span class="sd">        distances and scores</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">clash_list</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">desc_dict</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="n">clash_dict</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="n">mapfilters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;contactfilter&quot;</span><span class="p">)</span> <span class="k">if</span> <span class="n">mapfilters</span> <span class="ow">is</span> <span class="kc">None</span> \
+            <span class="k">else</span> <span class="n">mapfilters</span>
+
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s2">&quot;net_deconv&quot;</span><span class="p">]:</span>
+            <span class="c1"># TODO: maj scoremap ou maj mapcollection</span>
+            <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nd_filter</span><span class="p">(</span><span class="n">mapdict</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">mapfilters</span> <span class="o">==</span> <span class="s2">&quot;all&quot;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">nofilter</span><span class="p">:</span>
+            <span class="n">mapfilters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter_types</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">nofilter</span> <span class="ow">or</span> <span class="n">mapfilters</span> <span class="o">==</span> <span class="s2">&quot;none&quot;</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Filtering steps removed&quot;</span><span class="p">)</span>
+            <span class="n">mapfilters</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="k">elif</span> <span class="ow">not</span> <span class="n">mapfilters</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">nofilter</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;No filtering steps. Will only use default filter (closed &quot;</span>
+                     <span class="s2">&quot;contact filter)&quot;</span><span class="p">)</span>
+            <span class="n">mapfilters</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;pos&quot;</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">mapfilters</span><span class="p">)</span> <span class="o">==</span> <span class="nb">list</span><span class="p">:</span>
+                <span class="n">mapfilters</span> <span class="o">=</span> <span class="p">[</span><span class="n">elm</span> <span class="k">for</span> <span class="n">elm</span> <span class="ow">in</span> <span class="n">mapfilters</span> <span class="k">if</span> <span class="n">elm</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">filter_types</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">mapfilters</span> <span class="o">=</span> <span class="p">[</span><span class="n">mapfilters</span><span class="p">]</span>
+            <span class="k">if</span> <span class="s2">&quot;pos&quot;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapfilters</span><span class="p">:</span>
+                <span class="n">mapfilters</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s2">&quot;pos&quot;</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Filtering </span><span class="si">%s</span><span class="s2"> contact map&quot;</span><span class="p">,</span> <span class="n">mtype</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">flt</span> <span class="ow">in</span> <span class="n">mapfilters</span><span class="p">:</span>
+            <span class="c1"># /!\ cys unicity filter must  be the last filter !</span>
+            <span class="c1"># TODO: contacts_flt.out checking if given clash in coupling</span>
+            <span class="c1"># matrix are the same</span>
+            <span class="c1"># Filter on maplot for nd or contact_list</span>
+            <span class="n">kw</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;clash_list&quot;</span><span class="p">:</span> <span class="n">clash_list</span><span class="p">,</span>
+                  <span class="s2">&quot;sec_struct&quot;</span><span class="p">:</span> <span class="n">inprot</span><span class="o">.</span><span class="n">sec_struct</span><span class="p">}</span>
+            <span class="n">flt_res</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">_filter&quot;</span> <span class="o">%</span> <span class="n">flt</span><span class="p">)(</span><span class="n">mapdict</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">):</span>
+                <span class="n">clash_list</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">))</span>
+                <span class="n">hum_list</span> <span class="o">=</span> <span class="p">[(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">)]</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Removed </span><span class="si">%d</span><span class="s2"> contacts.&quot;</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">))</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                    <span class="n">textwrap</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="s1">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
+                        <span class="p">[</span><span class="s2">&quot;(</span><span class="si">%2d</span><span class="s2">, </span><span class="si">%2d</span><span class="s2">)&quot;</span> <span class="o">%</span> <span class="n">pair</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">hum_list</span><span class="p">]),</span>
+                        <span class="n">width</span><span class="o">=</span><span class="mi">80</span><span class="p">)))</span>
+            <span class="n">clash_dict</span><span class="p">[</span><span class="n">flt</span><span class="p">]</span> <span class="o">=</span> <span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;clash&quot;</span><span class="p">)</span>
+            <span class="k">if</span> <span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;desc&quot;</span><span class="p">):</span>
+                <span class="n">desc_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">flt_res</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;desc&quot;</span><span class="p">))</span>
+
+        <span class="c1"># write filter.out</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write_filtout</span><span class="p">(</span><span class="n">clash_dict</span><span class="p">,</span> <span class="n">desc_dict</span><span class="p">,</span> <span class="n">contactlist</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="n">outdir</span><span class="p">,</span>
+                           <span class="n">outprefix</span><span class="o">=</span><span class="n">outprefix</span> <span class="o">+</span> <span class="s1">&#39;.&#39;</span> <span class="o">+</span> <span class="n">mtype</span><span class="p">,</span> <span class="n">clashlist</span><span class="o">=</span><span class="n">clashlist</span><span class="p">)</span>
+
+        <span class="c1"># Contactmap always filtered</span>
+        <span class="c1"># TODO: could set a treshold instead of n_factor</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Setting contact number with treshold </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                 <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">))</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;all&quot;</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Factor set to all. All the contacts will be used !&quot;</span><span class="p">)</span>
+            <span class="n">nb_c</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contactset</span><span class="p">())</span>
+        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">),</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">)</span> \
+                <span class="ow">and</span> <span class="s2">&quot;%&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">):</span>
+            <span class="n">reg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;([0-9]+\.?[0-9]*)%&quot;</span><span class="p">)</span>
+            <span class="n">perc</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">))</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span>
+
+            <span class="n">nb_c</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">perc</span><span class="o">/</span><span class="mi">100</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contactset</span><span class="p">()))</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Factor set as </span><span class="si">%.2f</span><span class="s2"> percentage of all the contacts &quot;</span>
+                        <span class="s2">&quot;(random selection).&quot;</span><span class="p">,</span> <span class="n">perc</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">nb_c</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">*</span> <span class="nb">float</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;n_factor&quot;</span><span class="p">)))</span>
+            <span class="c1"># Number of selected contact</span>
+            <span class="c1"># If there isn&#39;t enough contacts in input contact map after filtering</span>
+            <span class="c1"># step, change nb_c</span>
+            <span class="n">nb_c</span> <span class="o">=</span> <span class="n">nb_c</span> <span class="k">if</span> <span class="n">nb_c</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contactset</span><span class="p">())</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span>
+                <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">contactset</span><span class="p">())</span>
+        <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;nb_c&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">nb_c</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update </span><span class="si">%s</span><span class="s2"> maplot&quot;</span><span class="p">,</span> <span class="n">mtype</span><span class="p">)</span>
+        <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">clash_list</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update </span><span class="si">%s</span><span class="s2"> scoremap&quot;</span><span class="p">,</span> <span class="n">mtype</span><span class="p">)</span>
+            <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">clash_list</span><span class="p">)</span>
+            <span class="c1"># Get nb_c top maps</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Select top </span><span class="si">%d</span><span class="s2"> contacts according to scoremap&quot;</span><span class="p">,</span> <span class="n">nb_c</span><span class="p">)</span>
+            <span class="c1"># TODO: deplacer cette partie dans l&#39;appel de maplot une fois</span>
+            <span class="c1">#  la classe mapcollections utilisee</span>
+            <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">topmap</span><span class="p">(</span>
+                <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">],</span> <span class="n">nb_c</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update </span><span class="si">%s</span><span class="s2"> distmap&quot;</span><span class="p">,</span> <span class="n">mtype</span><span class="p">)</span>
+            <span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">clash_list</span><span class="p">)</span>
+
+        <span class="k">return</span> <span class="n">mapdict</span>
+
+<div class="viewcode-block" id="MapFilter.write_filtout"><a class="viewcode-back" href="../../ariaec.html#ariaec.protmap.MapFilter.write_filtout">[docs]</a>    <span class="nd">@staticmethod</span>
+    <span class="k">def</span> <span class="nf">write_filtout</span><span class="p">(</span><span class="n">clash_dict</span><span class="p">,</span> <span class="n">desc_dict</span><span class="p">,</span> <span class="n">contactlist</span><span class="p">,</span> <span class="n">outdir</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span>
+                      <span class="n">outprefix</span><span class="o">=</span><span class="s2">&quot;protein&quot;</span><span class="p">,</span> <span class="n">clashlist</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">human_idx</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        clash_dict :</span>
+<span class="sd">            </span>
+<span class="sd">        desc_dict :</span>
+<span class="sd">            </span>
+<span class="sd">        contactlist :</span>
+<span class="sd">            </span>
+<span class="sd">        outdir :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+<span class="sd">        outprefix :</span>
+<span class="sd">            (Default value = &quot;protein&quot;)</span>
+<span class="sd">        clashlist :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        human_idx :</span>
+<span class="sd">            (Default value = True)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: utiliser self.clash_dict au lieu de meta_clash</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param clash_dict:</span>
+<span class="sd">        :param desc_dict:</span>
+<span class="sd">        :param contactlist:</span>
+<span class="sd">        :param outdir:</span>
+<span class="sd">        :param outprefix:</span>
+<span class="sd">        :param clashlist:</span>
+<span class="sd">        :param human_idx:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">meta_clash</span> <span class="o">=</span> <span class="p">{</span>
+            <span class="s2">&quot;cons&quot;</span><span class="p">:</span> <span class="p">{</span>
+                <span class="s2">&quot;flag&quot;</span><span class="p">:</span> <span class="mi">888</span><span class="p">,</span> <span class="s2">&quot;msg&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+                <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;high conservation&quot;</span><span class="p">},</span>
+            <span class="s2">&quot;cys&quot;</span><span class="p">:</span> <span class="p">{</span>
+                <span class="s2">&quot;flag&quot;</span><span class="p">:</span> <span class="mi">222</span><span class="p">,</span> <span class="s2">&quot;msg&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+                <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;disulfide bonds unicity&quot;</span><span class="p">},</span>
+            <span class="s2">&quot;ssclash&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;flag&quot;</span><span class="p">:</span> <span class="mi">999</span><span class="p">,</span> <span class="s2">&quot;msg&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+                        <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;secondary structure prediction conflict&quot;</span><span class="p">},</span>
+            <span class="s2">&quot;pos&quot;</span><span class="p">:</span> <span class="p">{</span>
+                <span class="s2">&quot;flag&quot;</span><span class="p">:</span> <span class="s2">&quot;physical proximity&quot;</span><span class="p">,</span> <span class="s2">&quot;msg&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+                <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;sequence position&quot;</span><span class="p">},</span>
+            <span class="s2">&quot;nd&quot;</span><span class="p">:</span> <span class="p">{</span>
+                <span class="s2">&quot;flag&quot;</span><span class="p">:</span> <span class="s2">&quot;deconvol&quot;</span><span class="p">,</span> <span class="s2">&quot;msg&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;warn&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
+                <span class="s2">&quot;desc&quot;</span><span class="p">:</span> <span class="s2">&quot;network deconvolution&quot;</span><span class="p">}</span>
+        <span class="p">}</span>
+        <span class="n">offset</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">human_idx</span> <span class="k">else</span> <span class="mi">0</span>
+
+        <span class="k">for</span> <span class="n">icontact</span><span class="p">,</span> <span class="n">contact</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">contactlist</span><span class="p">):</span>
+            <span class="n">clash</span> <span class="o">=</span> <span class="s2">&quot;0&quot;</span>
+            <span class="n">clash_t</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
+            <span class="n">raw_contact</span> <span class="o">=</span> <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">offset</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">clash_t</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">clash_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
+                <span class="k">if</span> <span class="n">clash_dict</span><span class="p">[</span><span class="n">clash_t</span><span class="p">]</span> <span class="ow">and</span> <span class="n">raw_contact</span> <span class="ow">in</span> <span class="n">clash_dict</span><span class="p">[</span><span class="n">clash_t</span><span class="p">]:</span>
+                    <span class="n">clash</span> <span class="o">=</span> <span class="n">meta_clash</span><span class="p">[</span><span class="n">clash_t</span><span class="p">][</span><span class="s2">&quot;flag&quot;</span><span class="p">]</span>
+                    <span class="n">meta_clash</span><span class="p">[</span><span class="n">clash_t</span><span class="p">][</span><span class="s2">&quot;msg&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">&quot;&quot;&quot;</span>
+<span class="si">{clash_type}</span><span class="s2"> flag at pair </span><span class="si">{pair_nb}</span><span class="s2"> : res </span><span class="si">{res1}</span><span class="s2"> and res </span><span class="si">{res2}</span><span class="s2"> </span><span class="si">{clash_desc}</span><span class="se">\</span>
+<span class="s2">&quot;&quot;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">clash_type</span><span class="o">=</span><span class="n">clash</span><span class="p">,</span> <span class="n">pair_nb</span><span class="o">=</span><span class="n">icontact</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                        <span class="n">clash_desc</span><span class="o">=</span><span class="n">desc_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">raw_contact</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span>
+                        <span class="n">res1</span><span class="o">=</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">res2</span><span class="o">=</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+                    <span class="k">break</span>
+            <span class="k">if</span> <span class="n">clashlist</span> <span class="ow">and</span> <span class="nb">str</span><span class="p">(</span><span class="n">clash</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">str</span><span class="p">(</span><span class="n">clashlist</span><span class="p">[</span><span class="n">icontact</span><span class="p">]):</span>
+                <span class="k">if</span> <span class="n">clash</span> <span class="o">==</span> <span class="s2">&quot;0&quot;</span><span class="p">:</span>
+                    <span class="n">op</span> <span class="o">=</span> <span class="s2">&quot;removed&quot;</span>
+                    <span class="n">ctype</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">clashlist</span><span class="p">[</span><span class="n">icontact</span><span class="p">])</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">op</span> <span class="o">=</span> <span class="s2">&quot;added&quot;</span>
+                    <span class="n">ctype</span> <span class="o">=</span> <span class="n">clash</span>
+                <span class="n">meta_clash</span><span class="p">[</span><span class="n">clash_t</span><span class="p">][</span><span class="s2">&quot;warn&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">/!\ Clash: </span><span class="si">{clash_desc}</span><span class="s2"> </span><span class="si">{clash}</span><span class="s2"> flag for contact &quot;</span> \
+                                               <span class="s2">&quot;</span><span class="si">{res_pos}</span><span class="s2"> (</span><span class="si">{res1}</span><span class="s2">, </span><span class="si">{res2}</span><span class="s2">)&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
+                    <span class="n">clash_desc</span><span class="o">=</span><span class="n">op</span><span class="p">,</span> <span class="n">clash</span><span class="o">=</span><span class="n">ctype</span><span class="p">,</span> <span class="n">res_pos</span><span class="o">=</span><span class="n">icontact</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                    <span class="n">res1</span><span class="o">=</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">res2</span><span class="o">=</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.filter.out&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outdir</span><span class="p">,</span> <span class="n">outprefix</span><span class="p">),</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">out</span><span class="p">:</span>
+            <span class="n">titleprint</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">progname</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s1">&#39;Contacts filter&#39;</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">flt</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;nd&quot;</span><span class="p">,</span> <span class="s2">&quot;pos&quot;</span><span class="p">,</span> <span class="s2">&quot;cons&quot;</span><span class="p">,</span> <span class="s2">&quot;ssclash&quot;</span><span class="p">,</span> <span class="s2">&quot;cys&quot;</span><span class="p">):</span>
+                <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span>
+
+<span class="si">{filter_desc}</span><span class="s1"></span>
+<span class="si">{hd}</span><span class="s1"></span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filter_desc</span><span class="o">=</span><span class="n">meta_clash</span><span class="p">[</span><span class="n">flt</span><span class="p">][</span><span class="s2">&quot;desc&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">capitalize</span><span class="p">(),</span>
+                    <span class="n">hd</span><span class="o">=</span><span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">meta_clash</span><span class="p">[</span><span class="n">flt</span><span class="p">][</span><span class="s2">&quot;desc&quot;</span><span class="p">])))</span>
+
+                <span class="k">if</span> <span class="n">meta_clash</span><span class="p">[</span><span class="n">flt</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;warn&quot;</span><span class="p">):</span>
+                    <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">meta_clash</span><span class="p">[</span><span class="n">flt</span><span class="p">][</span><span class="s2">&quot;warn&quot;</span><span class="p">])</span>
+                <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">meta_clash</span><span class="p">[</span><span class="n">flt</span><span class="p">][</span><span class="s2">&quot;msg&quot;</span><span class="p">])</span></div></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/reader.html b/examples-dev/olds/_build/html/_modules/ariaec/reader.html
new file mode 100644
index 0000000..9e4a218
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/reader.html
@@ -0,0 +1,1141 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.reader &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.reader</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.reader</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Reader objects</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">re</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">os.path</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">collections</span>
+<span class="kn">import</span> <span class="nn">pkg_resources</span> <span class="k">as</span> <span class="nn">pkgr</span>
+<span class="kn">import</span> <span class="nn">scipy.spatial.distance</span> <span class="k">as</span> <span class="nn">distance</span>
+<span class="kn">from</span> <span class="nn">Bio</span> <span class="k">import</span> <span class="n">pairwise2</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">sort_2dict</span>
+<span class="kn">from</span> <span class="nn">.protmap</span> <span class="k">import</span> <span class="p">(</span><span class="n">ResMap</span><span class="p">,</span> <span class="n">ResAtmMap</span><span class="p">)</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+<span class="c1"># TODO: check if Atom is still used ...</span>
+<span class="c1"># TODO: Should use conkit in the future</span>
+<span class="n">Atom</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">namedtuple</span><span class="p">(</span><span class="s2">&quot;Atom&quot;</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="s2">&quot;coords&quot;</span><span class="p">])</span>
+
+
+<div class="viewcode-block" id="RegexFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.RegexFile">[docs]</a><span class="k">class</span> <span class="nc">RegexFile</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;File which can be parsed with a regex&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filepath</span><span class="p">,</span> <span class="n">filetype</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">regex</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">sort</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">regex</span> <span class="o">=</span> <span class="n">regex</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">sort</span> <span class="o">=</span> <span class="n">sort</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">lines</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">=</span> <span class="n">filetype</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_filename</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="o">=</span> <span class="n">filepath</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_defaultpath</span> <span class="o">=</span> <span class="n">default</span> <span class="k">if</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_exists</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span> \
+            <span class="k">else</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_pkgfile</span> <span class="o">=</span> <span class="kc">False</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_checkpath</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_checkpath</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Check if filepath exists or is in package ressources&quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Checking if </span><span class="si">%s</span><span class="s2"> file exists&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">):</span>
+            <span class="c1"># File actually exists outside of the package</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;File exists.&quot;</span><span class="p">)</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="ow">and</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_exists</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span>
+                                                     <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">):</span>
+            <span class="c1"># File is in pkgr</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Use </span><span class="si">%s</span><span class="s2"> file from package ressources&quot;</span><span class="p">,</span>
+                      <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_pkgfile</span> <span class="o">=</span> <span class="kc">True</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_defaultpath</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Use default </span><span class="si">%s</span><span class="s2"> file&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_defaultpath</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_pkgfile</span> <span class="o">=</span> <span class="kc">True</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;File </span><span class="si">%s</span><span class="s2"> does not exists&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">filename</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Get basename of filepath&quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filename</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span>
+                <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filename</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">filepath</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;File path&quot;&quot;&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_filepath</span>
+
+<div class="viewcode-block" id="RegexFile.load"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.RegexFile.load">[docs]</a>    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Fill lines with dictionary. Each key is a line number in the given file</span>
+<span class="sd">        :return: None</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">lines_dict</span> <span class="o">=</span> <span class="p">{}</span>
+
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">regex</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Can&#39;t parse file </span><span class="si">%s</span><span class="s2"> without defined regex&quot;</span><span class="p">,</span>
+                      <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span>
+            <span class="k">return</span> <span class="kc">None</span>
+
+        <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pkgfile</span> \
+                <span class="k">else</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span> <span class="k">as</span> <span class="n">infile</span><span class="p">:</span>
+
+            <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">infile</span><span class="p">):</span>
+                <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                    <span class="n">lines_dict</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">match</span><span class="o">.</span><span class="n">groupdict</span><span class="p">()</span>
+
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span><span class="p">:</span>
+            <span class="n">lines_dict</span> <span class="o">=</span> <span class="n">sort_2dict</span><span class="p">(</span><span class="n">lines_dict</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span><span class="p">)</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">lines</span> <span class="o">=</span> <span class="n">lines_dict</span></div></div>
+
+
+<div class="viewcode-block" id="CulledPdbFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.CulledPdbFile">[docs]</a><span class="k">class</span> <span class="nc">CulledPdbFile</span><span class="p">(</span><span class="n">RegexFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Reader class for culled pdb list&quot;&quot;&quot;</span>
+    <span class="n">regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+        <span class="sa">r</span><span class="s2">&quot;^(?P&lt;pdb_id&gt;\w</span><span class="si">{4}</span><span class="s2">)&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;chain_id&gt;\w)\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;length&gt;\d+)\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;exp&gt;\w+)\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;resolution&gt;-?\d+\.\d+)\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;r_factor&gt;-?\d+\.\d+)\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;free_rvalue&gt;-?\d+\.\d+)\s*$&quot;</span><span class="p">)</span>
+    <span class="n">filetype</span> <span class="o">=</span> <span class="s1">&#39;cullpdb&#39;</span>
+    <span class="n">default</span> <span class="o">=</span> <span class="s1">&#39;data/cullpdb/160427/cullpdb_pc25_res1.6_R0.25_d160427_chains3743&#39;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;regex&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">regex</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;filetype&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;default&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">CulledPdbFile</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="TblDistFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.TblDistFile">[docs]</a><span class="k">class</span> <span class="nc">TblDistFile</span><span class="p">(</span><span class="n">RegexFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Reader class for TBL Distance restraint file&quot;&quot;&quot;</span>
+    <span class="n">regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+        <span class="sa">r</span><span class="s2">&quot;^\s*(?P&lt;restflag&gt;or|assign)\s+\(segid\s+</span><span class="se">\&quot;</span><span class="s2">(?P&lt;segid1&gt;[\s\w]+)&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;</span><span class="se">\&quot;</span><span class="s2">\s+and\s+resid\s+(?P&lt;resid1&gt;\d+)\s+and\s+name\s+(?P&lt;atm1&gt;\w+)&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;\)\s+\(segid\s+</span><span class="se">\&quot;</span><span class="s2">(?P&lt;segid2&gt;[\s\w]+)</span><span class="se">\&quot;</span><span class="s2">\s+and\s+resid\s+&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;resid2&gt;\d+)\s+and\s+name\s+(?P&lt;atm2&gt;\w+)\)\s*&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;dtarget&gt;\d+\.\d+)?\s*(?P&lt;dminus&gt;\d+\.\d+)?\s*(?P&lt;dplus&gt;\d+\.\d+)&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;?\s*(weight)?\s*(?P&lt;weight&gt;\d+\.\d+)?\s*!?\s*(spec=)?&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;listname&gt;\w+)?(,\s*no=)?(?P&lt;restno&gt;\d+)?(,\s*id=)?&quot;</span>
+        <span class="sa">r</span><span class="s2">&quot;(?P&lt;restid&gt;\d+)?(,\s*vol=)?(?P&lt;vol&gt;[\w.\-+]+)?$&quot;</span><span class="p">)</span>
+    <span class="n">filetype</span> <span class="o">=</span> <span class="s1">&#39;tbldist&#39;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;regex&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">regex</span>
+        <span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;filetype&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">TblDistFile</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="MapFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFile">[docs]</a><span class="k">class</span> <span class="nc">MapFile</span><span class="p">(</span><span class="n">RegexFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Abstract class related to all kind of protein maps&quot;&quot;&quot;</span>
+    <span class="c1"># List of 3tuples (&quot;regex_file&quot;, &quot;filetype&quot;, &quot;sort_field&quot;)</span>
+    <span class="c1"># sort_field allow sorting lines with values into this field</span>
+    <span class="c1"># TODO: wrong regex for native_full ?</span>
+    <span class="c1"># TODO: smarter dict ...</span>
+    <span class="n">types</span> <span class="o">=</span> <span class="p">{</span>
+        <span class="s2">&quot;plmdca&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res1_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;res2_nb&gt;\d+)\s+(?P&lt;res2_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;mi_score&gt;\d)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;plm_score&gt;-?\d+\.\d+)\s*$&quot;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;plm_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;plm&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res1_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;res2_nb&gt;\d+)\s+(?P&lt;res2_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;mi_score&gt;\d)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;plm_score&gt;-?\d+\.\d+)\s*$&quot;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;plm_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;plmev&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res1_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;res2_nb&gt;\d+)\s+(?P&lt;res2_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;mi_score&gt;\d)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;plm_score&gt;-?\d+\.\d+)\s*$&quot;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;plm_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;plmc&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;^(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res1_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;res2_nb&gt;\d+)\s+(?P&lt;res2_name&gt;\w)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;mi_score&gt;\d)\s+&quot;</span>
+                                <span class="sa">r</span><span class="s2">&quot;(?P&lt;plm_score&gt;-?\d+\.\d+)\s*$&quot;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;plm_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;evfold&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+),(?P&lt;res2_nb&gt;\d+),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+\.\d+e?-?\d*),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;placeholder&gt;\d),(?P&lt;res1_cons&gt;\d+),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res2_cons&gt;\d+),(?P&lt;ss_filter&gt;\d|\d</span><span class="si">{3}</span><span class="s1">),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;high_cons_filter&gt;\d|\d</span><span class="si">{3}</span><span class="s1">),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;cc_filter&gt;\d|\d</span><span class="si">{3}</span><span class="s1">),(?P&lt;res1_name&gt;\w),&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res2_name&gt;\w)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;pconsc&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+\.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;pconsc1&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+\.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;pconsc2&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+\.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;metapsicov_stg1&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) \d (?P&lt;res_dist&gt;-?\d+.?\d*) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;metapsicov_stg2&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) \d (?P&lt;res_dist&gt;-?\d+.?\d*) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;psicov&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+) (?P&lt;res2_nb&gt;\d+) \d (?P&lt;res_dist&gt;-?\d+.?\d*) &#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;ec_score&gt;-?\d+.\d+e?-?\d*)$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;ec_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;gremlin&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^(?P&lt;res1_nb&gt;\d+)\t(?P&lt;res2_nb&gt;\d+)\t&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res1_id&gt;\d+_[AC-IK-NP-TVWYZ])\t&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res2_id&gt;\d+_[AC-IK-NP-TVWYZ])\t&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;raw_score&gt;-?\d+\.\d+e?-?\d*)\t&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;scale_score&gt;-?\d+\.\d+e?-?\d*)\t&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;prob&gt;-?\d+\.\d+e?-?\d*)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;scale_score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;native&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+(&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;?P&lt;ca_ca&gt;\d+\.\d+)\s+(?P&lt;cb_cb&gt;\d+\.\d+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;sc_sc&gt;\d+\.\d+)\s+(?P&lt;valid&gt;\w+)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;native_full&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+(&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;?P&lt;ca_ca&gt;\d+\.\d+)\s+(?P&lt;cb_cb&gt;\d+\.\d+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;sc_sc&gt;\d+\.\d+)\s+(?P&lt;valid&gt;\w+)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;bbcontacts&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;\s*(?P&lt;identifier&gt;\w+)\s+(?P&lt;diversity&gt;-?\d+\.?\d*)&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;direction&gt;Parallel|Antiparallel)&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;viterbiscore&gt;-?\d+\.?\d*)&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;indexpred&gt;\d+)&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;state&gt;first|internal|last)&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;\s+(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;contactlist&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)[\s,;]+(?P&lt;res2_nb&gt;\d+)[\s,&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;;]*(?P&lt;con_flag&gt;\w*)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;metapsicovhb&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res_donor&gt;\d+)[\s,;]+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res_acceptor&gt;\d+)[\s,;]+\d[\s,;]+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;res_dist&gt;-?\d+.?\d*)[\s,;]+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;hbscore&gt;-?\d+\.?\d*)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;hbscore&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;default_1&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;resn1&gt;\w+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;resn2&gt;\w+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;score&gt;[\w\d.+\-]+)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;default_2&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;score&gt;[\w\d.+\-]+)&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="s2">&quot;score&quot;</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;default_3&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;resn1&gt;\w+)\s+&#39;</span>
+                <span class="sa">r</span><span class="s1">&#39;(?P&lt;resn2&gt;\w+)\s+&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;default_4&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span>
+                <span class="sa">r</span><span class="s1">&#39;^\s*(?P&lt;res1_nb&gt;\d+)\s+(?P&lt;res2_nb&gt;\d+)\s+&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">},</span>
+        <span class="s2">&quot;empty&quot;</span><span class="p">:</span> <span class="p">{</span>
+            <span class="s2">&quot;regex&quot;</span><span class="p">:</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^\s*$&#39;</span><span class="p">),</span>
+            <span class="s2">&quot;score_field&quot;</span><span class="p">:</span> <span class="kc">None</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+    <span class="n">check_type</span> <span class="o">=</span> <span class="kc">True</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param args:</span>
+<span class="sd">        :param kwargs:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">MapFile</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_type</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">regex</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_maptype</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;alldistmap&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+                        <span class="s2">&quot;allcontactmap&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+                        <span class="s2">&quot;distmap&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+                        <span class="s2">&quot;maplot&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
+                        <span class="s2">&quot;scoremap&quot;</span><span class="p">:</span> <span class="kc">None</span><span class="p">}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">clashlist</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">flaglist</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="c1"># self.maplot = None</span>
+        <span class="c1"># self.distmap = None</span>
+
+<div class="viewcode-block" id="MapFile.create_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFile.create_map">[docs]</a>    <span class="k">def</span> <span class="nf">create_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">flaglist</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
+                   <span class="n">path</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        path :</span>
+<span class="sd">            param protein: (Default value = &quot;&quot;)</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            param flaglist:</span>
+<span class="sd">        offset :</span>
+<span class="sd">            param sym: (Default value = 0)</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            return:</span>
+<span class="sd">        protein :</span>
+<span class="sd">            </span>
+<span class="sd">        flaglist :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        sym :</span>
+<span class="sd">            (Default value = True)</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;Class </span><span class="si">%s</span><span class="s2"> doesn&#39;t implement create_map&quot;</span> <span class="o">%</span>
+                                  <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="MapFile.update_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFile.update_map">[docs]</a>    <span class="k">def</span> <span class="nf">update_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resmap :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">&quot;Class </span><span class="si">%s</span><span class="s2"> doesn&#39;t implement update_map&quot;</span> <span class="o">%</span>
+                                  <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="MapFile.check_maptype"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFile.check_maptype">[docs]</a>    <span class="k">def</span> <span class="nf">check_maptype</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;:return:&quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Checking if file </span><span class="si">%s</span><span class="s2"> correspond to </span><span class="si">%s</span><span class="s2"> format&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">,</span>
+                 <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+        <span class="c1"># Check if given type is supported</span>
+        <span class="c1"># TODO: report this check into commands section</span>
+        <span class="n">defaults</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;default_1&quot;</span><span class="p">,</span> <span class="s2">&quot;default_2&quot;</span><span class="p">,</span> <span class="s2">&quot;default_3&quot;</span><span class="p">,</span> <span class="s2">&quot;default_4&quot;</span><span class="p">,</span> <span class="s2">&quot;empty&quot;</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">stat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span><span class="o">.</span><span class="n">st_size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;File </span><span class="si">%s</span><span class="s2"> is empty !&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span>
+            <span class="k">return</span> <span class="p">[</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="s2">&quot;empty&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;regex&quot;</span><span class="p">),</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="s2">&quot;empty&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;score_field&quot;</span><span class="p">)</span>
+            <span class="p">]</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span> <span class="k">as</span> <span class="n">infile</span><span class="p">:</span>
+            <span class="c1"># Check first and second line of file</span>
+            <span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">infile</span><span class="p">):</span>
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">:</span>
+                    <span class="n">match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;regex&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Format </span><span class="si">%s</span><span class="s2"> not supported !&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+                    <span class="n">match</span> <span class="o">=</span> <span class="kc">None</span>
+                <span class="k">if</span> <span class="n">match</span><span class="p">:</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Format type correct&quot;</span><span class="p">)</span>
+                    <span class="k">return</span> <span class="p">[</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;regex&quot;</span><span class="p">),</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;score_field&quot;</span><span class="p">)</span>
+                    <span class="p">]</span>
+                <span class="k">if</span> <span class="n">index</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Given type do not correspond, checking default&quot;</span>
+                                <span class="s2">&quot; format for contactlist or empty file...&quot;</span><span class="p">)</span>
+                    <span class="k">for</span> <span class="n">subformat</span> <span class="ow">in</span> <span class="n">defaults</span><span class="p">:</span>
+                        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">subformat</span><span class="p">)[</span><span class="s2">&quot;regex&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
+                            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Format type correct </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">subformat</span><span class="p">)</span>
+                            <span class="k">return</span> <span class="p">[</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">subformat</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;regex&quot;</span><span class="p">),</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span>
+                                <span class="bp">self</span><span class="o">.</span><span class="n">types</span><span class="p">[</span><span class="n">subformat</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;score_field&quot;</span><span class="p">)</span>
+                            <span class="p">]</span>
+                    <span class="c1"># Stop checking after second line</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Can&#39;t read </span><span class="si">%s</span><span class="s2"> file.&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+                    <span class="k">break</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Wrong format type given ...&quot;</span><span class="p">)</span>
+        <span class="k">return</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="mi">3</span></div>
+
+<div class="viewcode-block" id="MapFile.read"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFile.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">contactdef</span><span class="o">=</span><span class="mf">5.0</span><span class="p">,</span> <span class="n">groupby_method</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">,</span>
+             <span class="n">scsc</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein :</span>
+<span class="sd">            param contactdef: (Default value = None)</span>
+<span class="sd">        groupby_method :</span>
+<span class="sd">            param scsc: (Default value = &quot;min&quot;)</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            (Default value = 5.0)</span>
+<span class="sd">        scsc :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># res1_1l_code</span>
+        <span class="n">aaseq</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reading </span><span class="si">%s</span><span class="s2"> file&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span>
+            <span class="c1"># Read file with regex related to filetype</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Unrecognized file type&quot;</span><span class="p">)</span>
+            <span class="k">return</span> <span class="kc">None</span>
+
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading contact file&quot;</span><span class="p">)</span>
+        <span class="n">sym</span> <span class="o">=</span> <span class="kc">False</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;metapsicovhb&quot;</span> <span class="k">else</span> <span class="kc">True</span>
+        <span class="n">confields</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;res_donor&quot;</span><span class="p">,</span> <span class="s2">&quot;res_acceptor&quot;</span><span class="p">)</span> <span class="k">if</span> \
+            <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;metapsicovhb&quot;</span> <span class="k">else</span> <span class="p">(</span><span class="s1">&#39;res1_nb&#39;</span><span class="p">,</span> <span class="s1">&#39;res2_nb&#39;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">:</span>
+
+            <span class="c1"># If contact defined</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">confields</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">and</span> \
+                    <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">confields</span><span class="p">[</span><span class="mi">1</span><span class="p">]):</span>
+                <span class="n">conkeys</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">sorted</span><span class="p">([</span>
+                    <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">confields</span><span class="p">[</span><span class="mi">0</span><span class="p">])),</span>
+                    <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">confields</span><span class="p">[</span><span class="mi">1</span><span class="p">]))]))</span>
+
+                <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">conkeys</span><span class="p">)</span>
+
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sort</span><span class="p">)))</span>
+
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;contactlist&quot;</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">flaglist</span><span class="p">[</span><span class="n">conkeys</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;con_flag&quot;</span><span class="p">)</span>
+
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;metapsicovhb&quot;</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res_dist&quot;</span><span class="p">))</span>
+
+                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;evfold&quot;</span><span class="p">,</span> <span class="s2">&quot;plmdca&quot;</span><span class="p">,</span> <span class="s2">&quot;plm&quot;</span><span class="p">,</span> <span class="s2">&quot;plmev&quot;</span><span class="p">):</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">clashlist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span>
+                        <span class="p">(</span><span class="n">el</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="p">(</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ss_filter&quot;</span><span class="p">),</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;high_cons_filter&quot;</span><span class="p">),</span>
+                            <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cc_filter&quot;</span><span class="p">))</span> <span class="k">if</span> <span class="n">el</span> <span class="o">!=</span> <span class="s2">&quot;0&quot;</span><span class="p">),</span>
+                        <span class="s2">&quot;0&quot;</span><span class="p">))</span>
+                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res1_name&quot;</span><span class="p">)</span> <span class="ow">and</span> \
+                            <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res2_name&quot;</span><span class="p">):</span>
+                        <span class="n">aaseq</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res1_nb&quot;</span><span class="p">))]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span>
+                            <span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res1_name&quot;</span><span class="p">)</span>
+                        <span class="n">aaseq</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res2_nb&quot;</span><span class="p">))]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span>
+                            <span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;res2_name&quot;</span><span class="p">)</span>
+
+        <span class="k">if</span> <span class="n">aaseq</span><span class="p">:</span>
+            <span class="c1"># Align evfold amino acid sequence with sequence obtained from seq</span>
+            <span class="c1"># file</span>
+            <span class="nb">print</span><span class="p">(</span><span class="n">aaseq</span><span class="p">)</span>
+            <span class="n">seq</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span>
+                <span class="n">aaseq</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">aaseq</span> <span class="k">else</span> <span class="s1">&#39;*&#39;</span>
+                <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">max</span><span class="p">(</span><span class="n">aaseq</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)])</span>
+            <span class="c1"># With gap penalty set to -1, we should only have an alignment without</span>
+            <span class="c1"># gap since mismatch is the preferred way (with score set to 0)</span>
+            <span class="n">alignment</span> <span class="o">=</span> <span class="n">pairwise2</span><span class="o">.</span><span class="n">align</span><span class="o">.</span><span class="n">localxs</span><span class="p">(</span>
+                <span class="n">seq</span><span class="p">,</span> <span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
+                <span class="n">one_alignment_only</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">&#39;Alignment of amino acid sequence with contact file</span><span class="se">\n</span><span class="s1">&#39;</span>
+                     <span class="s1">&#39;</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">pairwise2</span><span class="o">.</span><span class="n">format_alignment</span><span class="p">(</span><span class="o">*</span><span class="n">alignment</span><span class="p">))</span>
+            <span class="n">shift</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^-*&#39;</span><span class="p">,</span> <span class="n">alignment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+            <span class="n">shift</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">shift</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="k">if</span> <span class="n">shift</span> <span class="k">else</span> <span class="mi">0</span>
+            <span class="k">if</span> <span class="n">shift</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Found a shift of </span><span class="si">%d</span><span class="s2"> residues in positions given&quot;</span>
+                            <span class="s2">&quot; within contact list&quot;</span><span class="p">,</span> <span class="n">shift</span><span class="p">)</span>
+
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Update index in contact list and remove unassigned &quot;</span>
+                         <span class="s2">&quot;contacts&quot;</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Old contact list</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span> <span class="o">=</span> <span class="p">[</span>
+                    <span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">shift</span><span class="p">,</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">shift</span><span class="p">)</span>
+                    <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span>
+                    <span class="p">]</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;New contact list</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Remove contacts outside sequence bonds&quot;</span><span class="p">)</span>
+
+        <span class="c1"># Checking for unassigned contacts</span>
+        <span class="n">validx</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">unascon</span> <span class="o">=</span> <span class="p">[</span><span class="n">contactidx</span>
+                   <span class="k">for</span> <span class="n">contactidx</span><span class="p">,</span> <span class="n">contact</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+                   <span class="k">if</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">validx</span> <span class="ow">or</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">validx</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Old contact list (</span><span class="si">%d</span><span class="s2"> contacts)</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                  <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">contact</span>
+                            <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">contact</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+                            <span class="k">if</span> <span class="n">idx</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">unascon</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;New contact list (</span><span class="si">%d</span><span class="s2"> contacts)</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
+                  <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">clashlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">clash</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">clash</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">clashlist</span><span class="p">)</span>
+                          <span class="k">if</span> <span class="n">idx</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">unascon</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">clashlist</span> <span class="k">else</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span> <span class="o">=</span> <span class="p">[</span><span class="n">dist</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">dist</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">distlist</span><span class="p">)</span>
+                         <span class="k">if</span> <span class="n">idx</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">unascon</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span> <span class="k">else</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span> <span class="o">=</span> <span class="p">[</span><span class="n">score</span> <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">score</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span><span class="p">)</span>
+                          <span class="k">if</span> <span class="n">idx</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">unascon</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span> <span class="k">else</span> <span class="p">[]</span>
+
+        <span class="bp">self</span><span class="o">.</span><span class="n">create_map</span><span class="p">(</span><span class="n">protein</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span>
+                        <span class="n">groupby_method</span><span class="o">=</span><span class="n">groupby_method</span><span class="p">,</span> <span class="n">scsc</span><span class="o">=</span><span class="n">scsc</span><span class="p">,</span>
+                        <span class="n">flaglist</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">flaglist</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="n">sym</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">filepath</span><span class="p">)</span></div></div>
+
+
+<div class="viewcode-block" id="ContactMapFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.ContactMapFile">[docs]</a><span class="k">class</span> <span class="nc">ContactMapFile</span><span class="p">(</span><span class="n">MapFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Contact map file</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filepath</span><span class="p">,</span> <span class="n">filetype</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+
+<span class="sd">        :param filepath:</span>
+<span class="sd">        :param filetype:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="n">filetype</span><span class="p">)</span>
+
+<div class="viewcode-block" id="ContactMapFile.update_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.ContactMapFile.update_map">[docs]</a>    <span class="k">def</span> <span class="nf">update_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resmap :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: swap dataframe factory here</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span></div>
+
+<div class="viewcode-block" id="ContactMapFile.create_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.ContactMapFile.create_map">[docs]</a>    <span class="k">def</span> <span class="nf">create_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initialize and fill Res - Res maps based on contactlist</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein :</span>
+<span class="sd">            </span>
+<span class="sd">        args :</span>
+<span class="sd">            </span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            </span>
+<span class="sd">        *args :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">offset</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">index</span><span class="p">)</span>  <span class="c1"># Should be 1 or upper (human_idx)</span>
+        <span class="n">idxnames</span> <span class="o">=</span> <span class="s2">&quot;residuex&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">!=</span> <span class="s2">&quot;metapsicovhb&quot;</span> <span class="k">else</span> <span class="s2">&quot;donor&quot;</span>
+        <span class="n">colnames</span> <span class="o">=</span> <span class="s2">&quot;residuey&quot;</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">!=</span> <span class="s2">&quot;metapsicovhb&quot;</span> <span class="k">else</span> <span class="s2">&quot;acceptor&quot;</span>
+        <span class="n">contactmap</span> <span class="o">=</span> <span class="n">ResMap</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s1">&#39;contact&#39;</span><span class="p">,</span>
+                            <span class="n">flaglist</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;flaglist&#39;</span><span class="p">],</span>
+                            <span class="n">seqidx</span><span class="o">=</span><span class="n">protein</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">idxnames</span><span class="o">=</span><span class="n">idxnames</span><span class="p">,</span>
+                            <span class="n">colnames</span><span class="o">=</span><span class="n">colnames</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;sym&#39;</span><span class="p">],</span>
+                            <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">))</span>
+        <span class="c1"># DataFrame containing ec scores</span>
+        <span class="n">scoremap</span> <span class="o">=</span> <span class="n">ResMap</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s1">&#39;score&#39;</span><span class="p">,</span>
+                          <span class="n">seqidx</span><span class="o">=</span><span class="n">protein</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">idxnames</span><span class="o">=</span><span class="n">idxnames</span><span class="p">,</span>
+                          <span class="n">colnames</span><span class="o">=</span><span class="n">colnames</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;sym&#39;</span><span class="p">],</span>
+                          <span class="n">path</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">),</span>
+                          <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span> <span class="k">else</span> <span class="kc">None</span>
+        <span class="n">distmap</span> <span class="o">=</span> <span class="n">ResMap</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s1">&#39;distance&#39;</span><span class="p">,</span>
+                         <span class="n">seqidx</span><span class="o">=</span><span class="n">protein</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">idxnames</span><span class="o">=</span><span class="n">idxnames</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;path&quot;</span><span class="p">),</span>
+                         <span class="n">colnames</span><span class="o">=</span><span class="n">colnames</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">&#39;sym&#39;</span><span class="p">],</span>
+                         <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span> <span class="o">==</span> <span class="s2">&quot;metapsicovhb&quot;</span> <span class="k">else</span> <span class="kc">None</span>
+
+        <span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="n">contact</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactlist</span><span class="p">):</span>
+            <span class="n">contact_id</span> <span class="o">=</span> <span class="n">idx</span> <span class="o">+</span> <span class="mi">1</span>
+            <span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span> <span class="o">=</span> <span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+            <span class="n">dist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distlist</span> <span class="k">else</span> <span class="kc">None</span>
+
+            <span class="c1"># Res id start from 0 in res-res map</span>
+            <span class="n">residx1</span> <span class="o">=</span> <span class="n">contactmap</span><span class="o">.</span><span class="n">index</span><span class="p">[</span><span class="n">resid1</span> <span class="o">-</span> <span class="n">offset</span><span class="p">]</span>
+            <span class="n">residx2</span> <span class="o">=</span> <span class="n">contactmap</span><span class="o">.</span><span class="n">index</span><span class="p">[</span><span class="n">resid2</span> <span class="o">-</span> <span class="n">offset</span><span class="p">]</span>
+
+            <span class="k">if</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">residx1</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="o">!=</span> <span class="n">resid1</span><span class="p">)</span> <span class="ow">or</span> \
+                    <span class="p">(</span><span class="n">resid2</span> <span class="o">!=</span> <span class="nb">int</span><span class="p">(</span><span class="n">residx2</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">])):</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Wrong resid humanidx (</span><span class="si">%d</span><span class="s2">, </span><span class="si">%d</span><span class="s2">) in contact (</span><span class="si">%d</span><span class="s2">) is &quot;</span>
+                          <span class="s2">&quot;not the same in resmap (</span><span class="si">%s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span>
+                          <span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span><span class="p">,</span> <span class="n">contact_id</span><span class="p">,</span>
+                          <span class="n">residx1</span><span class="p">,</span> <span class="n">residx2</span><span class="p">)</span>
+
+            <span class="n">contactmap</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">residx1</span><span class="p">,</span> <span class="n">residx2</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sort</span><span class="p">:</span>
+                <span class="n">scoremap</span><span class="o">.</span><span class="n">sort_list</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">resid1</span> <span class="o">-</span> <span class="n">offset</span><span class="p">,</span> <span class="n">resid2</span> <span class="o">-</span> <span class="n">offset</span><span class="p">))</span>
+                <span class="n">scoremap</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">residx1</span><span class="p">,</span> <span class="n">residx2</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scorelist</span><span class="p">[</span><span class="n">idx</span><span class="p">])</span>
+            <span class="k">if</span> <span class="n">distmap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                <span class="n">distmap</span><span class="o">.</span><span class="n">set_value</span><span class="p">(</span><span class="n">residx1</span><span class="p">,</span> <span class="n">residx2</span><span class="p">,</span> <span class="n">dist</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> contact map:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="n">contactmap</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">contactmap</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> score map:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="n">scoremap</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;scoremap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">scoremap</span>
+        <span class="k">if</span> <span class="n">distmap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">distmap</span></div></div>
+
+
+<div class="viewcode-block" id="PDBFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.PDBFile">[docs]</a><span class="k">class</span> <span class="nc">PDBFile</span><span class="p">(</span><span class="n">MapFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;PDB file&quot;&quot;&quot;</span>
+    <span class="n">pdbreg</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;^(?P&lt;record&gt;ATOM  |HETATM)(?P&lt;serial&gt;[\s\w]</span><span class="si">{5}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;\s(?P&lt;name&gt;[\s\w]</span><span class="si">{4}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;altLoc&gt;[\s\w])&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;resName&gt;\w</span><span class="si">{3}</span><span class="s1">)\s(?P&lt;chainID&gt;\w)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;resSeq&gt;[\s\w]</span><span class="si">{4}</span><span class="s1">)(?P&lt;iCode&gt;[\s\w])&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;\s</span><span class="si">{3}</span><span class="s1">(?P&lt;x&gt;[\s\d-]</span><span class="si">{4}</span><span class="s1">\.\d</span><span class="si">{3}</span><span class="s1">)(?P&lt;y&gt;[\s\d-]</span><span class="si">{4}</span><span class="s1">\.\d</span><span class="si">{3}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;z&gt;[\s\d-]</span><span class="si">{4}</span><span class="s1">\.\d</span><span class="si">{3}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;occupancy&gt;[\s\d-]</span><span class="si">{3}</span><span class="s1">\.\d</span><span class="si">{2}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;tempFactor&gt;[\s\d-]</span><span class="si">{3}</span><span class="s1">\.\d</span><span class="si">{2}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;\s</span><span class="si">{10}</span><span class="s1">(?P&lt;element&gt;[\s\w]</span><span class="si">{2}</span><span class="s1">)&#39;</span>
+                        <span class="sa">r</span><span class="s1">&#39;(?P&lt;charge&gt;[\s\w]</span><span class="si">{2}</span><span class="s1">)&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="c1"># TODO: use PDB object in aria</span>
+        <span class="c1"># TODO: write dataframe in a separated file</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">check_type</span> <span class="o">=</span> <span class="kc">False</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">PDBFile</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">regex</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pdbreg</span><span class="p">,</span> <span class="n">filetype</span><span class="o">=</span><span class="s2">&quot;pdb&quot;</span><span class="p">,</span>
+                                      <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+
+<div class="viewcode-block" id="PDBFile.create_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.PDBFile.create_map">[docs]</a>    <span class="k">def</span> <span class="nf">create_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">protein</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="n">groupby_method</span><span class="o">=</span><span class="s2">&quot;min&quot;</span><span class="p">,</span> <span class="n">scsc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                   <span class="n">flaglist</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        protein :</span>
+<span class="sd">        contactdef:</span>
+<span class="sd">        groupby_method :</span>
+<span class="sd">            (Default value = &quot;min&quot;)</span>
+<span class="sd">        scsc: </span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        flaglist :</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        sym: </span>
+<span class="sd">            (Default value = True)</span>
+<span class="sd">        path :</span>
+<span class="sd">            (Default value = &quot;&quot;)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">resmap</span> <span class="o">=</span> <span class="n">ResAtmMap</span><span class="p">(</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">mtype</span><span class="o">=</span><span class="s1">&#39;distance&#39;</span><span class="p">,</span>
+                           <span class="n">flaglist</span><span class="o">=</span><span class="n">flaglist</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
+                           <span class="n">seqidx</span><span class="o">=</span><span class="n">protein</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">filetype</span><span class="p">)</span>
+        <span class="c1"># noinspection PyTypeChecker</span>
+        <span class="n">resmap</span><span class="p">[:]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">update_map</span><span class="p">(</span><span class="n">resmap</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="n">sym</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;pdb distance map:</span><span class="se">\n</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">resmap</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;alldistmap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">resmap</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">resmap</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="n">groupby</span><span class="o">=</span><span class="n">groupby_method</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;allcontactmap&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">resmap</span><span class="o">.</span><span class="n">contact_map</span><span class="p">(</span>
+            <span class="n">contactdef</span><span class="o">=</span><span class="n">contactdef</span><span class="p">,</span> <span class="n">scsc_min</span><span class="o">=</span><span class="n">scsc</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mapdict</span><span class="p">[</span><span class="s2">&quot;allcontactmap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">reduce</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="PDBFile.update_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.PDBFile.update_map">[docs]</a>    <span class="k">def</span> <span class="nf">update_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resmap</span><span class="p">,</span> <span class="n">sym</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resmap :</span>
+<span class="sd">            param sym:</span>
+<span class="sd">        sym :</span>
+<span class="sd">            (Default value = True)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Map only on heavy atoms</span>
+        <span class="c1"># TODO: check if same sequence in pdb file</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Updating distance map with pdb file&quot;</span><span class="p">)</span>
+        <span class="n">newmap</span> <span class="o">=</span> <span class="n">resmap</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+        <span class="n">heavylist</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">error_list</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
+        <span class="k">for</span> <span class="n">atom</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">resmap</span><span class="o">.</span><span class="n">heavy_reg</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atom</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()):</span>
+                <span class="n">heavylist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">atom</span><span class="p">)</span>
+
+        <span class="c1"># For each heavy atom</span>
+        <span class="k">for</span> <span class="n">x</span><span class="p">,</span> <span class="n">atomx</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">heavylist</span><span class="p">):</span>
+            <span class="k">for</span> <span class="n">atomy</span> <span class="ow">in</span> <span class="n">heavylist</span><span class="p">[</span><span class="n">x</span><span class="p">:]:</span>
+                <span class="c1"># TODO: Check first residue number in pdb file</span>
+                <span class="n">indx</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;resSeq&#39;</span><span class="p">]),</span>
+                                    <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;resName&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()),</span> \
+                       <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+                <span class="n">indy</span> <span class="o">=</span> <span class="s2">&quot;</span><span class="si">%03d</span><span class="s2">-</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;resSeq&#39;</span><span class="p">]),</span>
+                                    <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;resName&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()),</span> \
+                       <span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
+                <span class="n">coordx</span> <span class="o">=</span> <span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;x&#39;</span><span class="p">]),</span>
+                          <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;y&#39;</span><span class="p">]),</span>
+                          <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomx</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">]))</span>
+                <span class="n">coordy</span> <span class="o">=</span> <span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;x&#39;</span><span class="p">]),</span>
+                          <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;y&#39;</span><span class="p">]),</span>
+                          <span class="nb">float</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lines</span><span class="p">[</span><span class="n">atomy</span><span class="p">][</span><span class="s1">&#39;z&#39;</span><span class="p">]))</span>
+
+                <span class="n">dist</span> <span class="o">=</span> <span class="n">distance</span><span class="o">.</span><span class="n">euclidean</span><span class="p">(</span><span class="n">coordx</span><span class="p">,</span> <span class="n">coordy</span><span class="p">)</span>
+                <span class="k">if</span> <span class="n">indx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">resmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="s2">&quot;residuex&quot;</span><span class="p">))</span>\
+                        <span class="ow">and</span> <span class="n">indy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">resmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="s2">&quot;residuex&quot;</span><span class="p">)):</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Update distance value (</span><span class="si">%s</span><span class="s2">, </span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">indx</span><span class="p">,</span> <span class="n">indy</span><span class="p">)</span>
+                    <span class="n">newmap</span><span class="o">.</span><span class="n">at</span><span class="p">[</span><span class="n">indx</span><span class="p">,</span> <span class="n">indy</span><span class="p">]</span> <span class="o">=</span> <span class="n">dist</span>
+                    <span class="k">if</span> <span class="n">sym</span><span class="p">:</span>
+                        <span class="c1"># If symmetric matrix</span>
+                        <span class="n">newmap</span><span class="o">.</span><span class="n">at</span><span class="p">[</span><span class="n">indy</span><span class="p">,</span> <span class="n">indx</span><span class="p">]</span> <span class="o">=</span> <span class="n">dist</span>
+                <span class="k">elif</span> <span class="n">indx</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">resmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="s2">&quot;residuex&quot;</span><span class="p">)):</span>
+                    <span class="n">error_list</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">indx</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                <span class="k">elif</span> <span class="n">indy</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">resmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="s2">&quot;residuex&quot;</span><span class="p">)):</span>
+                    <span class="n">error_list</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">indy</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+        <span class="k">if</span> <span class="n">error_list</span><span class="p">:</span>
+            <span class="c1"># Listing related humanidx in the initial df</span>
+            <span class="n">idxlist</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">resmap</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">get_level_values</span><span class="p">(</span><span class="s2">&quot;residuex&quot;</span><span class="p">))</span>
+            <span class="n">erridx</span> <span class="o">=</span> <span class="p">[</span><span class="n">idx</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">error_list</span><span class="p">)]</span>
+            <span class="n">missidx</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">([</span><span class="n">idx</span> <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="n">idxlist</span>
+                                <span class="k">if</span> <span class="n">idx</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="n">erridx</span><span class="p">]))</span>
+            <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="n">missidx</span><span class="p">:</span>
+                <span class="n">newmap</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+                <span class="k">if</span> <span class="n">sym</span><span class="p">:</span>
+                    <span class="n">newmap</span><span class="o">.</span><span class="n">loc</span><span class="p">[:][</span><span class="n">idx</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Can&#39;t update pdb distance map for pos in pdb file &quot;</span>
+                      <span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> with </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">error_list</span><span class="p">),</span> <span class="n">missidx</span><span class="p">)</span>
+        <span class="k">return</span> <span class="n">newmap</span></div></div>
+
+
+<div class="viewcode-block" id="DistanceMapFile"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.DistanceMapFile">[docs]</a><span class="k">class</span> <span class="nc">DistanceMapFile</span><span class="p">(</span><span class="n">MapFile</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Distance matrix file&quot;&quot;&quot;</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filepath</span><span class="p">,</span> <span class="n">filetype</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">MapFile</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="n">filetype</span><span class="p">)</span>
+        <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+
+<div class="viewcode-block" id="DistanceMapFile.create_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.DistanceMapFile.create_map">[docs]</a>    <span class="k">def</span> <span class="nf">create_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">aa_seq</span><span class="p">,</span> <span class="n">contactdef</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        aa_seq :</span>
+<span class="sd">            param contactdef:</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            return:</span>
+<span class="sd">        contactdef :</span>
+<span class="sd">            </span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div>
+
+    <span class="c1"># Native dist</span>
+<div class="viewcode-block" id="DistanceMapFile.update_map"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.DistanceMapFile.update_map">[docs]</a>    <span class="k">def</span> <span class="nf">update_map</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resmap</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        resmap :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">pass</span></div></div>
+        <span class="c1"># Construit map avec la liste de residus +  infos de distance du fichier</span>
+        <span class="c1"># return DistanceMap</span>
+
+
+<div class="viewcode-block" id="MapFileListReader"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFileListReader">[docs]</a><span class="k">class</span> <span class="nc">MapFileListReader</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Reader class for Map files&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cont_def</span><span class="o">=</span><span class="mf">5.0</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        cont_def: float, optional</span>
+<span class="sd">            Contact threshold used to filter native contacts (if reference</span>
+<span class="sd">            structure given)</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">maps</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">contactdef</span> <span class="o">=</span> <span class="n">cont_def</span>
+
+<div class="viewcode-block" id="MapFileListReader.clear"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFileListReader.clear">[docs]</a>    <span class="k">def</span> <span class="nf">clear</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Initiatize object from scratch object&quot;&quot;&quot;</span>
+        <span class="c1"># TODO: Init supprime bien les fichiers du cache ?</span>
+        <span class="bp">self</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">contactdef</span><span class="p">)</span></div>
+
+    <span class="k">def</span> <span class="nf">_add_maps</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">maps</span><span class="p">,</span> <span class="n">maptypes</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Add Map file to the mapfile reader</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        maps : :obj: `list` of :obj: `str`</span>
+<span class="sd">            List of Map file paths</span>
+<span class="sd">        maptypes : :obj: `list` of :obj: `str`, optional</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">maps</span> <span class="o">=</span> <span class="p">[</span><span class="n">maps</span><span class="p">]</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">maps</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">list</span> <span class="k">else</span> <span class="n">maps</span>
+        <span class="n">maptypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">maptypes</span><span class="p">]</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span>
+            <span class="n">maptypes</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">list</span> <span class="k">else</span> <span class="n">maptypes</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="n">maptypes</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">maps</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">maptypes</span><span class="p">):</span>
+            <span class="n">maptypes</span> <span class="o">=</span> <span class="p">[</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">_</span><span class="p">)[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">maps</span><span class="p">]</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Reader focused on file(s) </span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">maps</span><span class="p">,</span>
+                 <span class="n">maptypes</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">filepath</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">maps</span><span class="p">):</span>
+            <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">filepath</span><span class="p">):</span>
+                <span class="c1"># TODO: check_type functionstr</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Adding </span><span class="si">%s</span><span class="s2"> file to watchlist&quot;</span><span class="p">,</span> <span class="n">maptypes</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
+                <span class="k">if</span> <span class="p">(</span><span class="n">maptypes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;pdb&quot;</span> <span class="ow">and</span>
+                        <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filepath</span><span class="p">)[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">==</span> <span class="s2">&quot;pdb&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
+                    <span class="n">maptypes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">&quot;distfile&quot;</span> <span class="ow">and</span>
+                        <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">filepath</span><span class="p">)[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span> <span class="o">==</span> <span class="s2">&quot;pdb&quot;</span><span class="p">):</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">maps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">PDBFile</span><span class="p">(</span><span class="n">filepath</span><span class="p">))</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">maps</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ContactMapFile</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span>
+                                                    <span class="n">maptypes</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span>
+                <span class="c1"># else:</span>
+                <span class="c1">#     self.maps.append(DistanceMapFile(filepath,</span>
+                <span class="c1">#                                          maptypes[i]))</span>
+                <span class="c1"># TODO: DistanceMapFile condition</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">maps</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">regex</span><span class="p">:</span>
+                    <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Can&#39;t read </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">filepath</span><span class="p">)</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">maps</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
+
+<div class="viewcode-block" id="MapFileListReader.read"><a class="viewcode-back" href="../../ariaec.html#ariaec.reader.MapFileListReader.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">maps</span><span class="p">,</span> <span class="n">maptypes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">protein</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">scsc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Read contact map files. The generated maps will be accessible in</span>
+<span class="sd">        `self.maps`</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        maps : :obj: `list` of :obj: `str`</span>
+<span class="sd">            List of Map file paths</span>
+<span class="sd">        maptypes : :obj: `list` of :obj: `str`, optional</span>
+<span class="sd">            List of Map file types (Default value = None)</span>
+<span class="sd">        protein : ariaec.protein.Protein object or None, optional</span>
+<span class="sd">            (Default value = None)</span>
+<span class="sd">        scsc : dict, optional</span>
+<span class="sd">            Optional dictionary used for Atom Map reduction by selecting only</span>
+<span class="sd">            one atom in the side chain. (Default value = None)</span>
+<span class="sd">        kwargs :</span>
+<span class="sd">            Optional arguments used for MapFile readers</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_add_maps</span><span class="p">(</span><span class="n">maps</span><span class="p">,</span> <span class="n">maptypes</span><span class="o">=</span><span class="n">maptypes</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">fo</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">maps</span><span class="p">:</span>
+            <span class="n">fo</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">protein</span><span class="o">=</span><span class="n">protein</span><span class="p">,</span> <span class="n">contactdef</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">contactdef</span><span class="p">,</span>
+                    <span class="n">scsc</span><span class="o">=</span><span class="n">scsc</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/settings.html b/examples-dev/olds/_build/html/_modules/ariaec/settings.html
new file mode 100644
index 0000000..6091331
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/settings.html
@@ -0,0 +1,543 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.settings &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.settings</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.settings</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                                Settings section</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+<span class="kn">import</span> <span class="nn">pickle</span>
+<span class="kn">import</span> <span class="nn">collections</span>
+<span class="c1"># noinspection PyCompatibility</span>
+<span class="kn">from</span> <span class="nn">ConfigParser</span> <span class="k">import</span> <span class="n">ConfigParser</span>
+<span class="kn">import</span> <span class="nn">pkg_resources</span> <span class="k">as</span> <span class="nn">pkgr</span>
+
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">format_dict</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="Setting"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.Setting">[docs]</a><span class="k">class</span> <span class="nc">Setting</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Main setting object with args and config section&quot;&quot;&quot;</span>
+
+    <span class="c1"># TODO: merge config and args</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">defaultdict</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">defaultdict</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">item</span><span class="p">]</span>
+        <span class="k">elif</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="n">item</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="n">item</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="s2">&quot;Setting object</span><span class="se">\n</span><span class="s2">    config: </span><span class="si">%s</span><span class="se">\n</span><span class="s2">    args  : </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+                                                                   <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span></div>
+
+
+<div class="viewcode-block" id="Settings"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.Settings">[docs]</a><span class="k">class</span> <span class="nc">Settings</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Group settings with each section corresponding to a Setting object&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sections</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_sections</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">sections</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">configfile</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+        <span class="k">for</span> <span class="n">section</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sections</span><span class="p">:</span>
+            <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">,</span> <span class="n">Setting</span><span class="p">())</span>
+
+<div class="viewcode-block" id="Settings.load_config"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.Settings.load_config">[docs]</a>    <span class="k">def</span> <span class="nf">load_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">configpath</span><span class="p">,</span> <span class="n">pkg</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Use ConfigParser module to load config sections</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        pkg :</span>
+<span class="sd">            file is inside the package (Default value = False)</span>
+<span class="sd">        configpath :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">configpath</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">configfile</span> <span class="o">=</span> <span class="n">configpath</span>
+        <span class="k">elif</span> <span class="ow">not</span> <span class="n">pkg</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Configuration file not found (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">configpath</span><span class="p">)</span>
+            <span class="k">return</span> <span class="kc">None</span>
+        <span class="c1"># config = SafeConfigParser(allow_no_value=True)</span>
+        <span class="n">config</span> <span class="o">=</span> <span class="n">ConfigParser</span><span class="p">(</span><span class="n">allow_no_value</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+        <span class="k">if</span> <span class="n">pkg</span><span class="p">:</span>
+            <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">configpath</span><span class="p">)</span> <span class="k">as</span> <span class="n">conf</span><span class="p">:</span>
+                <span class="n">config</span><span class="o">.</span><span class="n">readfp</span><span class="p">(</span><span class="n">conf</span><span class="p">)</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">config</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">configpath</span><span class="p">)</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">section</span> <span class="ow">in</span> <span class="n">config</span><span class="o">.</span><span class="n">sections</span><span class="p">():</span>
+            <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">):</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Formatting items of </span><span class="si">%s</span><span class="s2"> section&quot;</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span>
+                <span class="n">tmp</span> <span class="o">=</span> <span class="n">format_dict</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">items</span><span class="p">(</span><span class="n">section</span><span class="p">)))</span>
+                <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">tmp</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> config updated&quot;</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">.</span><span class="si">%s</span><span class="s2"> : </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">section</span><span class="p">,</span>
+                          <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">))</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;Unknow config section </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span></div>
+
+<div class="viewcode-block" id="Settings.write_config"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.Settings.write_config">[docs]</a>    <span class="k">def</span> <span class="nf">write_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write config of all sections into another file</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        filename :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing .ini file (</span><span class="si">%s</span><span class="s2">)&quot;</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
+        <span class="n">config</span> <span class="o">=</span> <span class="n">ConfigParser</span><span class="p">(</span><span class="n">allow_no_value</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+        <span class="n">iniout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s2">&quot;w&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">section</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sections</span><span class="p">:</span>
+            <span class="n">config</span><span class="o">.</span><span class="n">add_section</span><span class="p">(</span><span class="n">section</span><span class="p">)</span>
+            <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">):</span>
+                <span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
+                    <span class="n">config</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">section</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">opt</span><span class="p">),</span>
+                               <span class="nb">str</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">opt</span><span class="p">)))</span>
+        <span class="n">config</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">iniout</span><span class="p">)</span></div>
+
+    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="s2">&quot;&lt;Settings object&gt;</span><span class="se">\n</span><span class="s2">    sections: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sections</span></div>
+
+
+<span class="c1"># TODO: AriaEcSettings should probably be an astract class.</span>
+<div class="viewcode-block" id="AriaEcSettings"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.AriaEcSettings">[docs]</a><span class="k">class</span> <span class="nc">AriaEcSettings</span><span class="p">(</span><span class="n">Settings</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">    Settings object for ariaec</span>
+<span class="sd">    @DynamicAttrs</span>
+<span class="sd">    &quot;&quot;&quot;</span>
+    <span class="c1"># ss_dist = os.path.join(os.path.dirname(os.path.realpath(__file__)),</span>
+    <span class="c1">#                        &#39;conf/ss_dist.txt&#39;)</span>
+    <span class="c1"># TODO: move these constant variable in objects which can read these file !!</span>
+    <span class="c1"># TODO: Baseclass inspired from this class and ariabase class. All</span>
+    <span class="c1"># objects in this package should extend the base object</span>
+    <span class="n">ARIAPROJ_TEMPLATE</span> <span class="o">=</span> <span class="s1">&#39;templates/aria_project_v2.3.0.xml&#39;</span>
+    <span class="n">SS_DIST</span> <span class="o">=</span> <span class="s1">&#39;data/ss_dist.txt&#39;</span>
+    <span class="n">SCSC_MIN</span> <span class="o">=</span> <span class="s1">&#39;data/scsc_min.p&#39;</span>
+    <span class="n">INTERLOWERBOUNDS</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/lowerbounds.inter.p&#39;</span>
+    <span class="n">INTERTARGET</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/targetdists.inter.p&#39;</span>
+    <span class="n">INTERUPPERBOUNDS</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/upperbounds.inter.p&#39;</span>
+    <span class="n">INTRALOWERBOUNDS</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/lowerbounds.intra.p&#39;</span>
+    <span class="n">INTRATARGET</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/targetdists.intra.p&#39;</span>
+    <span class="n">INTRAUPPERBOUNDS</span> <span class="o">=</span> <span class="s1">&#39;data/pdbdists/upperbounds.intra.p&#39;</span>
+    <span class="c1"># TODO: If aria installed in site-packages, use topallhdg file from aria !</span>
+    <span class="n">TOPO</span> <span class="o">=</span> <span class="s1">&#39;data/topallhdg5.3.pro&#39;</span>
+    <span class="c1"># TODO: Should define sections in one object, actually we have to define</span>
+    <span class="c1"># sections in settings and also command objects ...</span>
+    <span class="n">SECTIONS</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;main&quot;</span><span class="p">,</span> <span class="s2">&quot;setup&quot;</span><span class="p">,</span> <span class="s2">&quot;maplot&quot;</span><span class="p">,</span> <span class="s2">&quot;bbconv&quot;</span><span class="p">,</span> <span class="s2">&quot;contactdef&quot;</span><span class="p">,</span>
+                <span class="s2">&quot;pdbqual&quot;</span><span class="p">,</span> <span class="s2">&quot;pdbdist&quot;</span><span class="p">,</span> <span class="s2">&quot;analysis&quot;</span><span class="p">,</span> <span class="s2">&quot;tbl2xml&quot;</span><span class="p">,</span> <span class="s2">&quot;pdbstat&quot;</span><span class="p">)</span>
+    <span class="c1"># TODO: options in main section should be accessible from all sections ! DO</span>
+    <span class="c1">#  not use this a other section as it is done actually</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Initiate settings with name related to a command</span>
+<span class="sd">        :param name:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AriaEcSettings</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SECTIONS</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_scsc_min</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_ssdist</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">_template</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
+
+    <span class="k">def</span> <span class="nf">_up_infra</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot; &quot;&quot;&quot;</span>
+        <span class="k">for</span> <span class="n">dirpath</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;set </span><span class="si">%s</span><span class="s2"> dir: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">dirpath</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span>
+                                                              <span class="n">dirpath</span><span class="p">))</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span><span class="p">[</span><span class="n">dirpath</span><span class="p">]</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">outdir</span><span class="p">,</span> <span class="n">dirpath</span><span class="p">)</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">infra</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Infrastructure for a specific command</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;setup&quot;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;xml&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;tbl&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="s2">&quot;etc&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">}</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_up_infra</span><span class="p">()</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;maplot&quot;</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;graphics&quot;</span><span class="p">:</span> <span class="s2">&quot;&quot;</span><span class="p">}</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_up_infra</span><span class="p">()</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_infra</span>
+
+    <span class="nd">@infra</span><span class="o">.</span><span class="n">setter</span>
+    <span class="k">def</span> <span class="nf">infra</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Change infra root</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        root :</span>
+<span class="sd">            return:</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outdir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_up_infra</span><span class="p">()</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">ssdist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get distance file for secondary structures in the package or in config</span>
+<span class="sd">        file</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ssdist</span><span class="p">:</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="p">[</span><span class="s2">&quot;ss_dist_file&quot;</span><span class="p">]</span> <span class="ow">and</span> \
+                    <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="s2">&quot;ss_dist_file&quot;</span><span class="p">]):</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_ssdist</span> <span class="o">=</span> <span class="bp">self</span><span class="p">[</span><span class="s2">&quot;ss_dist_file&quot;</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_ssdist</span> <span class="o">=</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SS_DIST</span><span class="p">)</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ssdist</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">template</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get template files in config file or in the package</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_template</span><span class="p">:</span>
+            <span class="n">templatepath</span> <span class="o">=</span> <span class="s2">&quot;templates/aria_project_v</span><span class="si">%s</span><span class="s2">.xml&quot;</span> <span class="o">%</span> \
+                           <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="s2">&quot;ariaproject_template&quot;</span><span class="p">])</span>
+            <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">pkgr</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">templatepath</span><span class="p">)):</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_template</span> <span class="o">=</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">templatepath</span><span class="p">)</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">LOG</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Template version for aria project (</span><span class="si">%s</span><span class="s2">) is not &quot;</span>
+                          <span class="s2">&quot;supported&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="p">[</span><span class="s2">&quot;ariaproject_template&quot;</span><span class="p">])</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_template</span> <span class="o">=</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span>
+                                                        <span class="bp">self</span><span class="o">.</span><span class="n">ARIAPROJ_TEMPLATE</span><span class="p">)</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_template</span>
+
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">scsc_min</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Get contact index for side chains in package or config file</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scsc_min</span><span class="p">:</span>
+            <span class="k">try</span><span class="p">:</span>
+                <span class="c1"># Read scsc_min_file given in config.ini</span>
+                <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="p">[</span><span class="s2">&quot;scsc_min_file&quot;</span><span class="p">])</span> <span class="k">as</span> <span class="n">scsc</span><span class="p">:</span>
+                    <span class="n">scsc_min</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">scsc</span><span class="p">)</span>
+            <span class="k">except</span> <span class="p">(</span><span class="ne">IOError</span><span class="p">,</span> <span class="ne">KeyError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">):</span>
+                <span class="c1"># If file can&#39;t be open or given key is invalid, load default</span>
+                <span class="c1"># package file</span>
+                <span class="k">with</span> <span class="n">pkgr</span><span class="o">.</span><span class="n">resource_stream</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SCSC_MIN</span><span class="p">)</span> <span class="k">as</span> <span class="n">scsc</span><span class="p">:</span>
+                    <span class="n">scsc_min</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">scsc</span><span class="p">)</span>
+            <span class="n">scsc_min</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
+                <span class="p">(</span><span class="n">aa1</span><span class="p">,</span> <span class="nb">dict</span><span class="p">((</span><span class="n">aa2</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">atm_pair</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;, &#39;</span><span class="p">)))</span>
+                           <span class="k">for</span> <span class="n">aa2</span><span class="p">,</span> <span class="n">atm_pair</span> <span class="ow">in</span> <span class="n">atm_pairs</span><span class="o">.</span><span class="n">items</span><span class="p">()))</span>
+                <span class="k">for</span> <span class="n">aa1</span><span class="p">,</span> <span class="n">atm_pairs</span> <span class="ow">in</span> <span class="n">scsc_min</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">_scsc_min</span> <span class="o">=</span> <span class="n">scsc_min</span>
+            <span class="k">return</span> <span class="n">scsc_min</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scsc_min</span>
+
+<div class="viewcode-block" id="AriaEcSettings.make_infra"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.AriaEcSettings.make_infra">[docs]</a>    <span class="k">def</span> <span class="nf">make_infra</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;Generate infrastructure&quot;&quot;&quot;</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Making output directories&quot;</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">direct</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Create </span><span class="si">%s</span><span class="s2"> directory&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="n">direct</span><span class="p">])</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="n">direct</span><span class="p">]):</span>
+                <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">infra</span><span class="p">[</span><span class="n">direct</span><span class="p">]))</span></div>
+
+<div class="viewcode-block" id="AriaEcSettings.load_config"><a class="viewcode-back" href="../../ariaec.html#ariaec.settings.AriaEcSettings.load_config">[docs]</a>    <span class="k">def</span> <span class="nf">load_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">configpath</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        </span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        configpath :</span>
+<span class="sd">            param kwargs:</span>
+<span class="sd">        **kwargs :</span>
+<span class="sd">            </span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="nb">super</span><span class="p">(</span><span class="n">AriaEcSettings</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">load_config</span><span class="p">(</span><span class="n">configpath</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+    <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">item</span><span class="p">):</span>
+        <span class="k">for</span> <span class="n">section</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sections</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
+                <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">item</span><span class="p">]</span>
+            <span class="k">elif</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
+                <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section</span><span class="p">)</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="n">item</span><span class="p">]</span></div>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples-dev/olds/_build/html/_modules/ariaec/setup.html b/examples-dev/olds/_build/html/_modules/ariaec/setup.html
new file mode 100644
index 0000000..31b0401
--- /dev/null
+++ b/examples-dev/olds/_build/html/_modules/ariaec/setup.html
@@ -0,0 +1,541 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>ariaec.setup &mdash; AriaEc 0.2 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="../../genindex.html"/>
+        <link rel="search" title="Search" href="../../search.html"/>
+    <link rel="top" title="AriaEc 0.2 documentation" href="../../index.html"/>
+        <link rel="up" title="Module code" href="../index.html"/> 
+
+  
+  <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../../index.html" class="icon icon-home"> AriaEc
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.2
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">AriaEc</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> &raquo;</li>
+        
+          <li><a href="../index.html">Module code</a> &raquo;</li>
+        
+      <li>ariaec.setup</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <h1>Source code for ariaec.setup</h1><div class="highlight"><pre>
+<span></span><span class="c1"># coding=utf-8</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">                            Input/Output aria_ec scripts</span>
+<span class="sd">&quot;&quot;&quot;</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span><span class="p">,</span> <span class="n">division</span><span class="p">,</span> <span class="n">print_function</span>
+
+<span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">json</span>
+<span class="kn">import</span> <span class="nn">logging</span>
+
+<span class="kn">from</span> <span class="nn">.protein</span> <span class="k">import</span> <span class="n">Protein</span>
+<span class="kn">from</span> <span class="nn">.reader</span> <span class="k">import</span> <span class="n">MapFileListReader</span>
+<span class="kn">from</span> <span class="nn">.common</span> <span class="k">import</span> <span class="n">get_filename</span>
+<span class="kn">from</span> <span class="nn">.protmap</span> <span class="k">import</span> <span class="n">MapFilter</span>
+<span class="kn">from</span> <span class="nn">.converter</span> <span class="k">import</span> <span class="n">AriaEcXMLConverter</span>
+
+<span class="c1"># TODO: S&#39;inspirer de pandas/__init__.py pour les dependances</span>
+
+<span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="AriaEcSetup"><a class="viewcode-back" href="../../ariaec.html#ariaec.setup.AriaEcSetup">[docs]</a><span class="k">class</span> <span class="nc">AriaEcSetup</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="sd">&quot;&quot;&quot;Aria Ec Setup protocol&quot;&quot;&quot;</span>
+
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        :param settings:</span>
+<span class="sd">        :return:</span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># TODO: check_type settings (AriaEcSettings)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span> <span class="o">=</span> <span class="n">settings</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span> <span class="o">=</span> <span class="n">Protein</span><span class="p">(</span><span class="n">settings</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reader</span> <span class="o">=</span> <span class="n">MapFileListReader</span><span class="p">(</span><span class="n">cont_def</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">contactdef</span><span class="o">.</span><span class="n">config</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span> <span class="o">=</span> <span class="p">{}</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">targetmaps</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">hbmaps</span> <span class="o">=</span> <span class="kc">None</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">filter</span> <span class="o">=</span> <span class="n">MapFilter</span><span class="p">(</span>
+            <span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+            <span class="n">nofilter</span><span class="o">=</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;no_filter&quot;</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">converter</span> <span class="o">=</span> <span class="n">AriaEcXMLConverter</span><span class="p">(</span><span class="n">settings</span><span class="p">)</span>
+
+<div class="viewcode-block" id="AriaEcSetup.run"><a class="viewcode-back" href="../../ariaec.html#ariaec.setup.AriaEcSetup.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        main method</span>
+<span class="sd">        :return:</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Check input</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Settings:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
+                                             <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Args:</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
+                                         <span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">make_infra</span><span class="p">()</span>
+        <span class="c1"># -------------------------------------------------------------------- #</span>
+        <span class="c1"># ----------------------------- Input -------------------------------- #</span>
+        <span class="c1"># -------------------------------------------------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="n">get_filename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span>
+        <span class="c1"># ------------------------- Load sequence ---------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_aa_sequence</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;seq&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
+        <span class="c1"># -------------- Load secondary structure prediction ----------------- #</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">set_sec_struct</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;sspred&quot;</span><span class="p">,</span>
+                                                                     <span class="kc">None</span><span class="p">),</span>
+                                        <span class="n">ssdist_filename</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">ssdist</span><span class="p">,</span>
+                                        <span class="n">ssidx</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                                            <span class="s2">&quot;ssidx&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">))</span>
+        <span class="c1"># -------------------------------------------------------------------- #</span>
+        <span class="c1"># ---------------------------- Processing ---------------------------- #</span>
+        <span class="c1"># -------------------------------------------------------------------- #</span>
+        <span class="c1"># TODO: write submatrix in a file</span>
+        <span class="c1"># TODO: change read method in reader to __call__</span>
+        <span class="c1"># -------------------------- contact maps ---------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;infiles&quot;</span><span class="p">),</span>
+                         <span class="n">maptypes</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+                             <span class="s2">&quot;contact_types&quot;</span><span class="p">),</span>
+                         <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                         <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+                             <span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                         <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+        <span class="k">for</span> <span class="n">mapfile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">maps</span><span class="p">:</span>
+            <span class="c1"># fo need a maplot in order to wite XML dist restraints</span>
+            <span class="c1"># TODO: filter pour toutes les map de mapdict !! (fonction remove</span>
+            <span class="c1">#  s&#39;applique sur l&#39;humanidx contenant les residus)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">mapfile</span><span class="o">.</span><span class="n">mapdict</span><span class="p">,</span> <span class="n">mapfile</span><span class="o">.</span><span class="n">filetype</span><span class="p">,</span> <span class="n">mapfile</span><span class="o">.</span><span class="n">contactlist</span><span class="p">,</span>
+                        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span> <span class="n">clashlist</span><span class="o">=</span><span class="n">mapfile</span><span class="o">.</span><span class="n">clashlist</span><span class="p">,</span>
+                        <span class="n">outprefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span>
+                        <span class="n">outdir</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">))</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">mapfile</span><span class="o">.</span><span class="n">filetype</span><span class="p">]</span> <span class="o">=</span> <span class="n">mapfile</span><span class="o">.</span><span class="n">mapdict</span>
+
+            <span class="k">if</span> <span class="n">mapfile</span><span class="o">.</span><span class="n">filetype</span> <span class="o">!=</span> <span class="s2">&quot;pdb&quot;</span> <span class="ow">and</span> <span class="s2">&quot;pdb&quot;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">:</span>
+                <span class="n">mapfile</span><span class="o">.</span><span class="n">maplot</span><span class="o">.</span><span class="n">compareplot</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="s2">&quot;pdb&quot;</span><span class="p">])</span>
+
+        <span class="c1"># ---------------------------- target map ---------------------------- #</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distfile&quot;</span><span class="p">)</span> <span class="ow">and</span> \
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distance_type&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="s2">&quot;distfile&quot;</span><span class="p">:</span>
+            <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Loading target distance file&quot;</span><span class="p">)</span>
+            <span class="c1"># Read distance file</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distfile&quot;</span><span class="p">),</span>
+                <span class="n">maptypes</span><span class="o">=</span><span class="s2">&quot;distfile&quot;</span><span class="p">,</span>
+                <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">targetmaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">targetdistmaps</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span> <span class="n">distfile</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">maps</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="c1"># Default targetmaps using config parameters</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">targetmaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">targetdistmaps</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span>
+
+        <span class="c1"># ---------------------------- ref map ----------------------------- #</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ref&quot;</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;ref&quot;</span><span class="p">),</span>
+                <span class="n">maptypes</span><span class="o">=</span><span class="s2">&quot;pdb&quot;</span><span class="p">,</span>
+                <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">maps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">mapdict</span>
+
+        <span class="c1"># ---------------------------- hbond map ----------------------------- #</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;hb&quot;</span><span class="p">)</span> <span class="ow">and</span> \
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;longrange_hb&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;hb&quot;</span><span class="p">),</span>
+                <span class="n">maptypes</span><span class="o">=</span><span class="s2">&quot;metapsicovhb&quot;</span><span class="p">,</span>
+                <span class="n">protein</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span>
+                <span class="n">groupby_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;groupby_method&#39;</span><span class="p">],</span>
+                <span class="n">scsc</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">scsc_min</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">hbmaps</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reader</span><span class="o">.</span><span class="n">maps</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">mapdict</span>
+        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;longrange_hb&quot;</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
+            <span class="c1"># Create HBMAP with naive metapsicov method</span>
+            <span class="c1"># Consider as hbond ec predicted between beta strand</span>
+            <span class="k">raise</span> <span class="ne">NotImplementedError</span>
+
+        <span class="c1"># -------------------------------------------------------------------- #</span>
+        <span class="c1"># ------------------------------ Output ------------------------------ #</span>
+
+        <span class="c1"># ----------------------------- SEQ file ----------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">write_seq</span><span class="p">(</span>
+            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span>
+                         <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span> <span class="o">+</span> <span class="s2">&quot;.seq&quot;</span><span class="p">))</span>
+        <span class="c1"># Load aria molecule object from seq file and convert it into xml format</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Load molecule file and convert it into xml format&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">read_seq</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">seqfile_path</span><span class="p">)</span>
+        <span class="c1"># --------------------------- TBL restraints ------------------------- #</span>
+        <span class="c1"># Setting contact number limit for hbmap</span>
+        <span class="n">n_hb</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">)</span> <span class="o">*</span>
+                   <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nf_longrange_hb&quot;</span><span class="p">))</span>
+        <span class="n">LOG</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Writing tbl files ...&quot;</span><span class="p">)</span>
+        <span class="n">tbl_files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">write_tbl_restraints</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">,</span> <span class="n">hbmap</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">hbmaps</span><span class="p">,</span> <span class="n">n_hb</span><span class="o">=</span><span class="n">n_hb</span><span class="p">)</span>
+
+        <span class="c1"># --------------------------- XML restraints ------------------------- #</span>
+        <span class="c1"># Setting contact number limit for map restraints (native, ec, ...)</span>
+
+        <span class="n">dist_files</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">write_maplist_restraints</span><span class="p">(</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">targetmaps</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+
+        <span class="c1"># --------------------------- XML SEQ file --------------------------- #</span>
+        <span class="n">xmlseq_file</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">write_xmlseq</span><span class="p">()</span>
+
+        <span class="c1"># ---------------------- ARIA XML project file ----------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">converter</span><span class="o">.</span><span class="n">write_ariaproject</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">template</span><span class="p">,</span>
+                                         <span class="n">xmlseq_file</span><span class="p">,</span> <span class="n">dist_files</span><span class="p">,</span> <span class="n">tbl_files</span><span class="p">,</span>
+                                         <span class="n">desclist</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+        <span class="c1"># -------------------------------- etc ------------------------------- #</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">write_optional_files</span><span class="p">()</span></div>
+
+<div class="viewcode-block" id="AriaEcSetup.write_optional_files"><a class="viewcode-back" href="../../ariaec.html#ariaec.setup.AriaEcSetup.write_optional_files">[docs]</a>    <span class="k">def</span> <span class="nf">write_optional_files</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write filtered contacts &amp; distance maps (.csv)</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="c1"># Indextableplus file (submatrix)</span>
+        <span class="c1"># Contacts_refined.out</span>
+        <span class="k">for</span> <span class="n">maptype</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">maptype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;maplot&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">write_contacts</span><span class="p">(</span>
+                <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span> <span class="n">maptype</span><span class="p">,</span> <span class="s2">&quot;filtered&quot;</span><span class="p">)),</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">),</span> <span class="n">scoremap</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span>
+                    <span class="n">maptype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;scoremap&quot;</span><span class="p">))</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">maptype</span><span class="p">][</span><span class="s2">&quot;alldistmap&quot;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">maptype</span><span class="p">][</span><span class="s2">&quot;alldistmap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span>
+                    <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.distmap.csv&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">),</span>
+                                           <span class="n">maptype</span><span class="p">))</span>
+            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span class="n">_write_contacts</span><span class="p">(</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">allresmap</span><span class="p">[</span><span class="n">maptype</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;filteredlist&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">protein</span><span class="o">.</span><span class="n">aa_sequence</span><span class="o">.</span><span class="n">sequence</span><span class="p">,</span>
+                    <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span>
+                    <span class="s2">&quot;_&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span> <span class="n">maptype</span><span class="p">,</span> <span class="s2">&quot;filtered&quot;</span><span class="p">)),</span>
+                    <span class="n">ref</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="p">[</span><span class="s2">&quot;maplot&quot;</span><span class="p">],</span>
+                    <span class="n">distmap</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="p">[</span><span class="s2">&quot;distmap&quot;</span><span class="p">])</span>
+        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="p">[</span><span class="s2">&quot;alldistmap&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span>
+                <span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">_</span><span class="si">%s</span><span class="s2">.distmap.csv&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">infra</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;etc&quot;</span><span class="p">),</span>
+                                          <span class="bp">self</span><span class="o">.</span><span class="n">outprefix</span><span class="p">,</span>
+                                          <span class="bp">self</span><span class="o">.</span><span class="n">refmaps</span><span class="o">.</span><span class="n">filetype</span><span class="p">))</span></div>
+
+    <span class="k">def</span> <span class="nf">_write_contacts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contacts_list</span><span class="p">,</span> <span class="n">seq</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">nc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
+                        <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">ref</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">distmap</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="sd">&quot;&quot;&quot;</span>
+<span class="sd">        Write contacts from contact_list (sorted !)</span>
+
+<span class="sd">        Parameters</span>
+<span class="sd">        ----------</span>
+<span class="sd">        contacts_list :</span>
+<span class="sd">            param seq:</span>
+<span class="sd">        out :</span>
+<span class="sd">            param prefix:</span>
+<span class="sd">        nc :</span>
+<span class="sd">            param append: (Default value = None)</span>
+<span class="sd">        ref :</span>
+<span class="sd">            return: (Default value = None)</span>
+<span class="sd">        seq :</span>
+<span class="sd">            </span>
+<span class="sd">        prefix :</span>
+<span class="sd">            </span>
+<span class="sd">        append :</span>
+<span class="sd">            (Default value = False)</span>
+<span class="sd">        distmap :</span>
+<span class="sd">            (Default value = None)</span>
+
+<span class="sd">        Returns</span>
+<span class="sd">        -------</span>
+
+<span class="sd">        </span>
+<span class="sd">        &quot;&quot;&quot;</span>
+        <span class="n">mapy</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="n">tp_count</span> <span class="o">=</span> <span class="mi">0</span>
+        <span class="n">filemode</span> <span class="o">=</span> <span class="s1">&#39;a&#39;</span> <span class="k">if</span> <span class="n">append</span> <span class="k">else</span> <span class="s1">&#39;w&#39;</span>
+        <span class="n">dist_desc</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">TP/FP</span><span class="se">\t</span><span class="s1">dist</span><span class="si">%s</span><span class="s1">(ref)&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">settings</span><span class="o">.</span><span class="n">setup</span><span class="o">.</span><span class="n">config</span><span class="p">[</span>
+            <span class="s2">&quot;groupby_method&quot;</span><span class="p">]</span> <span class="k">if</span> \
+            <span class="n">distmap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> \
+            <span class="k">else</span> <span class="s1">&#39;&#39;</span>
+        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">/</span><span class="si">%s</span><span class="s2">.contacts.txt&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">prefix</span><span class="p">),</span> <span class="n">filemode</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
+            <span class="k">if</span> <span class="ow">not</span> <span class="n">append</span><span class="p">:</span>
+                <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span>
+                    <span class="sd">&#39;&#39;&#39;# resid1\tresid2\tres1\tres2%s\n&#39;&#39;&#39;</span> <span class="o">%</span> <span class="n">dist_desc</span><span class="p">)</span>
+
+            <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">contacts_list</span><span class="p">,</span> <span class="s1">&#39;keys&#39;</span><span class="p">):</span>
+                <span class="n">contacts</span> <span class="o">=</span> <span class="n">contacts_list</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">nc</span> <span class="k">else</span> \
+                    <span class="n">contacts_list</span><span class="o">.</span><span class="n">keys</span><span class="p">()[:</span><span class="n">nc</span><span class="p">]</span>
+                <span class="n">d_type</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="c1"># Check if contacts is 2-tuple</span>
+                <span class="k">if</span> <span class="kc">False</span> <span class="ow">in</span> <span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">item</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">contacts_list</span><span class="p">]:</span>
+                    <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s1">&#39;Contact list must be 2-tuple !&#39;</span><span class="p">)</span>
+                <span class="n">contacts</span> <span class="o">=</span> <span class="n">contacts_list</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">nc</span> <span class="k">else</span> <span class="n">contacts_list</span><span class="p">[:</span><span class="n">nc</span><span class="p">]</span>
+                <span class="n">d_type</span> <span class="o">=</span> <span class="kc">False</span>
+
+            <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Contact list </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">contacts</span><span class="p">)</span>
+            <span class="k">for</span> <span class="n">contact</span> <span class="ow">in</span> <span class="n">contacts</span><span class="p">:</span>
+
+                <span class="k">if</span> <span class="n">d_type</span><span class="p">:</span>
+                    <span class="c1"># If dictionary</span>
+                    <span class="n">resid1</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">contacts_list</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;res1_nb&#39;</span><span class="p">))</span>
+                    <span class="n">resid2</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">contacts_list</span><span class="p">[</span><span class="n">contact</span><span class="p">]</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s1">&#39;res2_nb&#39;</span><span class="p">))</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">resid1</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+                    <span class="n">resid2</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">contact</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+
+                <span class="n">LOG</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Contact </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">contact</span><span class="p">))</span>
+                <span class="k">if</span> <span class="n">distmap</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                    <span class="n">dist</span> <span class="o">=</span> <span class="n">distmap</span><span class="o">.</span><span class="n">ix</span><span class="p">[(</span><span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span><span class="p">)]</span>
+                <span class="k">else</span><span class="p">:</span>
+                    <span class="n">dist</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;dist&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="s1">&#39;atoms&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">}</span>
+
+                <span class="k">if</span> <span class="p">(</span><span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapy</span><span class="p">:</span>
+                    <span class="n">mapy</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span><span class="p">))</span>
+                    <span class="k">if</span> <span class="n">ref</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+                        <span class="k">if</span> <span class="n">ref</span><span class="o">.</span><span class="n">ix</span><span class="p">[(</span><span class="n">resid1</span><span class="p">,</span> <span class="n">resid2</span><span class="p">)]:</span>
+                            <span class="n">asses</span> <span class="o">=</span> <span class="s1">&#39;TP&#39;</span>
+                            <span class="n">tp_count</span> <span class="o">+=</span> <span class="mi">1</span>
+                        <span class="k">else</span><span class="p">:</span>
+                            <span class="n">asses</span> <span class="o">=</span> <span class="s1">&#39;FP&#39;</span>
+                        <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span>
+                            <span class="s2">&quot;</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">resid1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                                                          <span class="n">resid2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                                                          <span class="n">seq</span><span class="p">[</span><span class="n">resid1</span><span class="p">],</span>
+                                                          <span class="n">seq</span><span class="p">[</span><span class="n">resid2</span><span class="p">],</span> <span class="n">asses</span><span class="p">,</span>
+                                                          <span class="n">dist</span><span class="p">))</span>
+                    <span class="k">else</span><span class="p">:</span>
+                        <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\t</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">resid1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                                                            <span class="n">resid2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
+                                                            <span class="n">seq</span><span class="p">[</span><span class="n">resid1</span><span class="p">],</span>
+                                                            <span class="n">seq</span><span class="p">[</span><span class="n">resid2</span><span class="p">]))</span>
+
+            <span class="n">ptp</span> <span class="o">=</span> <span class="p">(</span><span class="n">tp_count</span> <span class="o">/</span> <span class="nb">float</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">contacts</span><span class="p">)))</span> <span class="o">*</span> <span class="mf">100.0</span> <span class="k">if</span> <span class="n">ref</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> \
+                <span class="kc">None</span>
+            <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;&#39;</span>
+<span class="s1"># TP number : </span><span class="si">{tp}</span><span class="s1"> (</span><span class="si">{ptp:.2f}</span><span class="s1"> %)</span>
+<span class="s1"># Number of contacts : </span><span class="si">{nc}</span><span class="s1"></span>
+<span class="s1">&#39;&#39;&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">tp</span><span class="o">=</span><span class="n">tp_count</span><span class="p">,</span> <span class="n">ptp</span><span class="o">=</span><span class="n">ptp</span><span class="p">,</span> <span class="n">nc</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">contacts</span><span class="p">)))</span></div>
+
+
+<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
+    <span class="c1"># Test AriaEcCommand object</span>
+    <span class="kn">from</span> <span class="nn">.settings</span> <span class="k">import</span> <span class="n">AriaEcSettings</span>
+
+    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
+    <span class="n">LOG</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;Setup&quot;</span><span class="p">)</span>
+    <span class="n">AriaEcSettings</span><span class="p">(</span><span class="s1">&#39;setup&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">load_config</span><span class="p">(</span><span class="s1">&#39;config.ini&#39;</span><span class="p">)</span>
+</pre></div>
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'../../',
+            VERSION:'0.2',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="../../_static/jquery.js"></script>
+      <script type="text/javascript" src="../../_static/underscore.js"></script>
+      <script type="text/javascript" src="../../_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/genindex.html b/examples-dev/olds/_build/html/_modules/index.html
similarity index 60%
rename from docs/_build/html/genindex.html
rename to examples-dev/olds/_build/html/_modules/index.html
index 127f52a..2fa5593 100644
--- a/docs/_build/html/genindex.html
+++ b/examples-dev/olds/_build/html/_modules/index.html
@@ -1,6 +1,5 @@
 
 
-
 <!DOCTYPE html>
 <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
@@ -9,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Index &mdash; ARIA 4 documentation</title>
+  <title>Overview: module code &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -27,20 +26,19 @@
 
   
   
-    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   
 
   
 
   
         <link rel="index" title="Index"
-              href="#"/>
-        <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
+              href="../genindex.html"/>
+        <link rel="search" title="Search" href="../search.html"/>
+    <link rel="top" title="Aria-EC 0.3 documentation" href="../index.html"/> 
 
   
-  <script src="_static/js/modernizr.min.js"></script>
+  <script src="../_static/js/modernizr.min.js"></script>
 
 </head>
 
@@ -56,7 +54,7 @@
           
 
           
-            <a href="index.html" class="icon icon-home"> ARIA
+            <a href="../index.html" class="icon icon-home"> Aria-EC
           
 
           
@@ -66,14 +64,14 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
 
           
 <div role="search">
-  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
     <input type="text" name="q" placeholder="Search docs" />
     <input type="hidden" name="check_keywords" value="yes" />
     <input type="hidden" name="area" value="default" />
@@ -104,7 +102,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
+          <a href="../index.html">Aria-EC</a>
         
       </nav>
 
@@ -132,9 +130,9 @@
 
   <ul class="wy-breadcrumbs">
     
-      <li><a href="index.html">Docs</a> &raquo;</li>
+      <li><a href="../index.html">Docs</a> &raquo;</li>
         
-      <li>Index</li>
+      <li>Overview: module code</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -151,13 +149,20 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-
-<h1 id="index">Index</h1>
-
-<div class="genindex-jumpbox">
- 
-</div>
-
+  <h1>All modules for which code is available</h1>
+<ul><li><a href="aria/conbox/analysis.html">aria.conbox.analysis</a></li>
+<li><a href="aria/conbox/commands.html">aria.conbox.commands</a></li>
+<li><a href="aria/conbox/converter.html">aria.conbox.converter</a></li>
+<li><a href="aria/conbox/maplot.html">aria.conbox.maplot</a></li>
+<li><a href="aria/conbox/ndconv.html">aria.conbox.ndconv</a></li>
+<li><a href="aria/conbox/pdbdist.html">aria.conbox.pdbdist</a></li>
+<li><a href="aria/conbox/pdbqual.html">aria.conbox.pdbqual</a></li>
+<li><a href="aria/conbox/protein.html">aria.conbox.protein</a></li>
+<li><a href="aria/conbox/protmap.html">aria.conbox.protmap</a></li>
+<li><a href="aria/conbox/reader.html">aria.conbox.reader</a></li>
+<li><a href="aria/conbox/settings.html">aria.conbox.settings</a></li>
+<li><a href="aria/conbox/setup.html">aria.conbox.setup</a></li>
+</ul>
 
            </div>
            <div class="articleComments">
@@ -171,7 +176,7 @@
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -192,24 +197,24 @@
 
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
-            URL_ROOT:'./',
-            VERSION:'4',
+            URL_ROOT:'../',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
             SOURCELINK_SUFFIX: '.txt'
         };
     </script>
-      <script type="text/javascript" src="_static/jquery.js"></script>
-      <script type="text/javascript" src="_static/underscore.js"></script>
-      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="../_static/jquery.js"></script>
+      <script type="text/javascript" src="../_static/underscore.js"></script>
+      <script type="text/javascript" src="../_static/doctools.js"></script>
       <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
 
   
 
   
   
-    <script type="text/javascript" src="_static/js/theme.js"></script>
+    <script type="text/javascript" src="../_static/js/theme.js"></script>
   
 
   
diff --git a/examples-dev/olds/_build/html/_sources/ariaec.rst.txt b/examples-dev/olds/_build/html/_sources/ariaec.rst.txt
new file mode 100644
index 0000000..20f786d
--- /dev/null
+++ b/examples-dev/olds/_build/html/_sources/ariaec.rst.txt
@@ -0,0 +1,123 @@
+aria.conbox package
+===================
+
+Subpackages
+-----------
+
+.. toctree::
+
+Submodules
+----------
+
+aria.conbox.analysis module
+---------------------------
+
+.. automodule:: aria.conbox.analysis
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.base module
+-----------------------
+
+.. automodule:: aria.conbox.base
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.commands module
+---------------------------
+
+.. automodule:: aria.conbox.commands
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.converter module
+----------------------------
+
+.. automodule:: aria.conbox.converter
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.maplot module
+-------------------------
+
+.. automodule:: aria.conbox.maplot
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.ndconv module
+-------------------------
+
+.. automodule:: aria.conbox.ndconv
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.pdbdist module
+--------------------------
+
+.. automodule:: aria.conbox.pdbdist
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.pdbqual module
+--------------------------
+
+.. automodule:: aria.conbox.pdbqual
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.protein module
+--------------------------
+
+.. automodule:: aria.conbox.protein
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.protmap module
+--------------------------
+
+.. automodule:: aria.conbox.protmap
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.reader module
+-------------------------
+
+.. automodule:: aria.conbox.reader
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.settings module
+---------------------------
+
+.. automodule:: aria.conbox.settings
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.setup module
+------------------------
+
+.. automodule:: aria.conbox.setup
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+
+Module contents
+---------------
+
+.. automodule:: aria.conbox
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/examples-dev/olds/_build/html/_sources/ariaec.test.rst.txt b/examples-dev/olds/_build/html/_sources/ariaec.test.rst.txt
new file mode 100644
index 0000000..8813337
--- /dev/null
+++ b/examples-dev/olds/_build/html/_sources/ariaec.test.rst.txt
@@ -0,0 +1,10 @@
+ariaec.test package
+===================
+
+Module contents
+---------------
+
+.. automodule:: ariaec.test
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/docs/_build/html/_sources/index.rst.txt b/examples-dev/olds/_build/html/_sources/index.rst.txt
similarity index 61%
rename from docs/_build/html/_sources/index.rst.txt
rename to examples-dev/olds/_build/html/_sources/index.rst.txt
index b737aaf..c213df6 100644
--- a/docs/_build/html/_sources/index.rst.txt
+++ b/examples-dev/olds/_build/html/_sources/index.rst.txt
@@ -1,10 +1,10 @@
-.. ARIAEC documentation master file, created by
-   sphinx-quickstart on Mon Oct 23 16:10:18 2017.
+.. AriaEc documentation master file, created by
+   sphinx-quickstart on Fri Apr 21 16:27:42 2017.
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
-Welcome to ARIAEC's documentation!
-==================================
+Welcome to Aria-EC's documentation!
+===================================
 
 .. toctree::
    :maxdepth: 2
diff --git a/docs/_build/html/_sources/modules.rst.txt b/examples-dev/olds/_build/html/_sources/modules.rst.txt
similarity index 100%
rename from docs/_build/html/_sources/modules.rst.txt
rename to examples-dev/olds/_build/html/_sources/modules.rst.txt
diff --git a/docs/_build/html/_static/ajax-loader.gif b/examples-dev/olds/_build/html/_static/ajax-loader.gif
similarity index 100%
rename from docs/_build/html/_static/ajax-loader.gif
rename to examples-dev/olds/_build/html/_static/ajax-loader.gif
diff --git a/docs/_build/html/_static/basic.css b/examples-dev/olds/_build/html/_static/basic.css
similarity index 98%
rename from docs/_build/html/_static/basic.css
rename to examples-dev/olds/_build/html/_static/basic.css
index 6f40830..6df76b0 100644
--- a/docs/_build/html/_static/basic.css
+++ b/examples-dev/olds/_build/html/_static/basic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -445,14 +445,10 @@ dd {
     margin-left: 30px;
 }
 
-dt:target, span.highlighted {
+dt:target, .highlighted {
     background-color: #fbe54e;
 }
 
-rect.highlighted {
-    fill: #fbe54e;
-}
-
 dl.glossary dt {
     font-weight: bold;
     font-size: 1.1em;
diff --git a/docs/_build/html/_static/comment-bright.png b/examples-dev/olds/_build/html/_static/comment-bright.png
similarity index 100%
rename from docs/_build/html/_static/comment-bright.png
rename to examples-dev/olds/_build/html/_static/comment-bright.png
diff --git a/docs/_build/html/_static/comment-close.png b/examples-dev/olds/_build/html/_static/comment-close.png
similarity index 100%
rename from docs/_build/html/_static/comment-close.png
rename to examples-dev/olds/_build/html/_static/comment-close.png
diff --git a/docs/_build/html/_static/comment.png b/examples-dev/olds/_build/html/_static/comment.png
similarity index 100%
rename from docs/_build/html/_static/comment.png
rename to examples-dev/olds/_build/html/_static/comment.png
diff --git a/docs/_build/html/_static/css/badge_only.css b/examples-dev/olds/_build/html/_static/css/badge_only.css
similarity index 100%
rename from docs/_build/html/_static/css/badge_only.css
rename to examples-dev/olds/_build/html/_static/css/badge_only.css
diff --git a/docs/_build/html/_static/css/theme.css b/examples-dev/olds/_build/html/_static/css/theme.css
similarity index 100%
rename from docs/_build/html/_static/css/theme.css
rename to examples-dev/olds/_build/html/_static/css/theme.css
diff --git a/docs/_build/html/_static/doctools.js b/examples-dev/olds/_build/html/_static/doctools.js
similarity index 82%
rename from docs/_build/html/_static/doctools.js
rename to examples-dev/olds/_build/html/_static/doctools.js
index 0c15c00..5654977 100644
--- a/docs/_build/html/_static/doctools.js
+++ b/examples-dev/olds/_build/html/_static/doctools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -45,7 +45,7 @@ jQuery.urlencode = encodeURIComponent;
  * it will always return arrays of strings for the value parts.
  */
 jQuery.getQueryParameters = function(s) {
-  if (typeof s === 'undefined')
+  if (typeof s == 'undefined')
     s = document.location.search;
   var parts = s.substr(s.indexOf('?') + 1).split('&');
   var result = {};
@@ -66,53 +66,29 @@ jQuery.getQueryParameters = function(s) {
  * span elements with the given class name.
  */
 jQuery.fn.highlightText = function(text, className) {
-  function highlight(node, addItems) {
-    if (node.nodeType === 3) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
       var val = node.nodeValue;
       var pos = val.toLowerCase().indexOf(text);
       if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span;
-        var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
-        if (isInSVG) {
-          span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
-        } else {
-          span = document.createElement("span");
-          span.className = className;
-        }
+        var span = document.createElement("span");
+        span.className = className;
         span.appendChild(document.createTextNode(val.substr(pos, text.length)));
         node.parentNode.insertBefore(span, node.parentNode.insertBefore(
           document.createTextNode(val.substr(pos + text.length)),
           node.nextSibling));
         node.nodeValue = val.substr(0, pos);
-        if (isInSVG) {
-          var bbox = span.getBBox();
-          var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
-       	  rect.x.baseVal.value = bbox.x;
-          rect.y.baseVal.value = bbox.y;
-          rect.width.baseVal.value = bbox.width;
-          rect.height.baseVal.value = bbox.height;
-          rect.setAttribute('class', className);
-          var parentOfText = node.parentNode.parentNode;
-          addItems.push({
-              "parent": node.parentNode,
-              "target": rect});
-        }
       }
     }
     else if (!jQuery(node).is("button, select, textarea")) {
       jQuery.each(node.childNodes, function() {
-        highlight(this, addItems);
+        highlight(this);
       });
     }
   }
-  var addItems = [];
-  var result = this.each(function() {
-    highlight(this, addItems);
+  return this.each(function() {
+    highlight(this);
   });
-  for (var i = 0; i < addItems.length; ++i) {
-    jQuery(addItems[i].parent).before(addItems[i].target);
-  }
-  return result;
 };
 
 /*
@@ -155,21 +131,21 @@ var Documentation = {
    * i18n support
    */
   TRANSLATIONS : {},
-  PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
   LOCALE : 'unknown',
 
   // gettext and ngettext don't access this so that the functions
   // can safely bound to a different name (_ = Documentation.gettext)
   gettext : function(string) {
     var translated = Documentation.TRANSLATIONS[string];
-    if (typeof translated === 'undefined')
+    if (typeof translated == 'undefined')
       return string;
-    return (typeof translated === 'string') ? translated : translated[0];
+    return (typeof translated == 'string') ? translated : translated[0];
   },
 
   ngettext : function(singular, plural, n) {
     var translated = Documentation.TRANSLATIONS[singular];
-    if (typeof translated === 'undefined')
+    if (typeof translated == 'undefined')
       return (n == 1) ? singular : plural;
     return translated[Documentation.PLURALEXPR(n)];
   },
@@ -204,7 +180,7 @@ var Documentation = {
    * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
    */
   fixFirefoxAnchorBug : function() {
-    if (document.location.hash && $.browser.mozilla)
+    if (document.location.hash)
       window.setTimeout(function() {
         document.location.href += '';
       }, 10);
@@ -240,7 +216,7 @@ var Documentation = {
       var src = $(this).attr('src');
       var idnum = $(this).attr('id').substr(7);
       $('tr.cg-' + idnum).toggle();
-      if (src.substr(-9) === 'minus.png')
+      if (src.substr(-9) == 'minus.png')
         $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
       else
         $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
@@ -272,7 +248,7 @@ var Documentation = {
     var path = document.location.pathname;
     var parts = path.split(/\//);
     $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
-      if (this === '..')
+      if (this == '..')
         parts.pop();
     });
     var url = parts.join('/');
diff --git a/docs/_build/html/_static/down-pressed.png b/examples-dev/olds/_build/html/_static/down-pressed.png
similarity index 100%
rename from docs/_build/html/_static/down-pressed.png
rename to examples-dev/olds/_build/html/_static/down-pressed.png
diff --git a/docs/_build/html/_static/down.png b/examples-dev/olds/_build/html/_static/down.png
similarity index 100%
rename from docs/_build/html/_static/down.png
rename to examples-dev/olds/_build/html/_static/down.png
diff --git a/docs/_build/html/_static/file.png b/examples-dev/olds/_build/html/_static/file.png
similarity index 100%
rename from docs/_build/html/_static/file.png
rename to examples-dev/olds/_build/html/_static/file.png
diff --git a/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf b/examples-dev/olds/_build/html/_static/fonts/Inconsolata-Bold.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/Inconsolata-Bold.ttf
rename to examples-dev/olds/_build/html/_static/fonts/Inconsolata-Bold.ttf
diff --git a/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf b/examples-dev/olds/_build/html/_static/fonts/Inconsolata-Regular.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/Inconsolata-Regular.ttf
rename to examples-dev/olds/_build/html/_static/fonts/Inconsolata-Regular.ttf
diff --git a/docs/_build/html/_static/fonts/Lato-Bold.ttf b/examples-dev/olds/_build/html/_static/fonts/Lato-Bold.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/Lato-Bold.ttf
rename to examples-dev/olds/_build/html/_static/fonts/Lato-Bold.ttf
diff --git a/docs/_build/html/_static/fonts/Lato-Regular.ttf b/examples-dev/olds/_build/html/_static/fonts/Lato-Regular.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/Lato-Regular.ttf
rename to examples-dev/olds/_build/html/_static/fonts/Lato-Regular.ttf
diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf b/examples-dev/olds/_build/html/_static/fonts/RobotoSlab-Bold.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf
rename to examples-dev/olds/_build/html/_static/fonts/RobotoSlab-Bold.ttf
diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf b/examples-dev/olds/_build/html/_static/fonts/RobotoSlab-Regular.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf
rename to examples-dev/olds/_build/html/_static/fonts/RobotoSlab-Regular.ttf
diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.eot b/examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.eot
similarity index 100%
rename from docs/_build/html/_static/fonts/fontawesome-webfont.eot
rename to examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.eot
diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.svg b/examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.svg
similarity index 100%
rename from docs/_build/html/_static/fonts/fontawesome-webfont.svg
rename to examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.svg
diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.ttf b/examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from docs/_build/html/_static/fonts/fontawesome-webfont.ttf
rename to examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.ttf
diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.woff b/examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.woff
similarity index 100%
rename from docs/_build/html/_static/fonts/fontawesome-webfont.woff
rename to examples-dev/olds/_build/html/_static/fonts/fontawesome-webfont.woff
diff --git a/docs/_build/html/_static/jquery-3.1.0.js b/examples-dev/olds/_build/html/_static/jquery-3.1.0.js
similarity index 100%
rename from docs/_build/html/_static/jquery-3.1.0.js
rename to examples-dev/olds/_build/html/_static/jquery-3.1.0.js
diff --git a/docs/_build/html/_static/jquery.js b/examples-dev/olds/_build/html/_static/jquery.js
similarity index 100%
rename from docs/_build/html/_static/jquery.js
rename to examples-dev/olds/_build/html/_static/jquery.js
diff --git a/docs/_build/html/_static/js/modernizr.min.js b/examples-dev/olds/_build/html/_static/js/modernizr.min.js
similarity index 100%
rename from docs/_build/html/_static/js/modernizr.min.js
rename to examples-dev/olds/_build/html/_static/js/modernizr.min.js
diff --git a/docs/_build/html/_static/js/theme.js b/examples-dev/olds/_build/html/_static/js/theme.js
similarity index 100%
rename from docs/_build/html/_static/js/theme.js
rename to examples-dev/olds/_build/html/_static/js/theme.js
diff --git a/docs/_build/html/_static/minus.png b/examples-dev/olds/_build/html/_static/minus.png
similarity index 100%
rename from docs/_build/html/_static/minus.png
rename to examples-dev/olds/_build/html/_static/minus.png
diff --git a/docs/_build/html/_static/plus.png b/examples-dev/olds/_build/html/_static/plus.png
similarity index 100%
rename from docs/_build/html/_static/plus.png
rename to examples-dev/olds/_build/html/_static/plus.png
diff --git a/docs/_build/html/_static/pygments.css b/examples-dev/olds/_build/html/_static/pygments.css
similarity index 100%
rename from docs/_build/html/_static/pygments.css
rename to examples-dev/olds/_build/html/_static/pygments.css
diff --git a/docs/_build/html/_static/searchtools.js b/examples-dev/olds/_build/html/_static/searchtools.js
similarity index 99%
rename from docs/_build/html/_static/searchtools.js
rename to examples-dev/olds/_build/html/_static/searchtools.js
index 41b8336..c821573 100644
--- a/docs/_build/html/_static/searchtools.js
+++ b/examples-dev/olds/_build/html/_static/searchtools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -540,9 +540,6 @@ var Search = {
           });
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
           var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
-          if (suffix === undefined) {
-            suffix = '.txt';
-          }
           $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
                   dataType: "text",
                   complete: function(jqxhr, textstatus) {
diff --git a/docs/_build/html/_static/underscore-1.3.1.js b/examples-dev/olds/_build/html/_static/underscore-1.3.1.js
similarity index 100%
rename from docs/_build/html/_static/underscore-1.3.1.js
rename to examples-dev/olds/_build/html/_static/underscore-1.3.1.js
diff --git a/docs/_build/html/_static/underscore.js b/examples-dev/olds/_build/html/_static/underscore.js
similarity index 100%
rename from docs/_build/html/_static/underscore.js
rename to examples-dev/olds/_build/html/_static/underscore.js
diff --git a/docs/_build/html/_static/up-pressed.png b/examples-dev/olds/_build/html/_static/up-pressed.png
similarity index 100%
rename from docs/_build/html/_static/up-pressed.png
rename to examples-dev/olds/_build/html/_static/up-pressed.png
diff --git a/docs/_build/html/_static/up.png b/examples-dev/olds/_build/html/_static/up.png
similarity index 100%
rename from docs/_build/html/_static/up.png
rename to examples-dev/olds/_build/html/_static/up.png
diff --git a/docs/_build/html/_static/websupport.js b/examples-dev/olds/_build/html/_static/websupport.js
similarity index 99%
rename from docs/_build/html/_static/websupport.js
rename to examples-dev/olds/_build/html/_static/websupport.js
index 79b18e3..53f6a45 100644
--- a/docs/_build/html/_static/websupport.js
+++ b/examples-dev/olds/_build/html/_static/websupport.js
@@ -4,7 +4,7 @@
  *
  * sphinx.websupport utilities for all documentation.
  *
- * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/examples-dev/olds/_build/html/ariaec.html b/examples-dev/olds/_build/html/ariaec.html
new file mode 100644
index 0000000..0a80067
--- /dev/null
+++ b/examples-dev/olds/_build/html/ariaec.html
@@ -0,0 +1,2953 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>aria.conbox package &mdash; Aria-EC 0.3 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="genindex.html"/>
+        <link rel="search" title="Search" href="search.html"/>
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/> 
+
+  
+  <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="index.html" class="icon icon-home"> Aria-EC
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.3
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">aria.conbox package</a><ul>
+<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
+<li><a class="reference internal" href="#submodules">Submodules</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.analysis">aria.conbox.analysis module</a></li>
+<li><a class="reference internal" href="#aria-conbox-base-module">aria.conbox.base module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.commands">aria.conbox.commands module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.converter">aria.conbox.converter module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.maplot">aria.conbox.maplot module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.ndconv">aria.conbox.ndconv module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.pdbdist">aria.conbox.pdbdist module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.pdbqual">aria.conbox.pdbqual module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.protein">aria.conbox.protein module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.protmap">aria.conbox.protmap module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.reader">aria.conbox.reader module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.settings">aria.conbox.settings module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox.setup">aria.conbox.setup module</a></li>
+<li><a class="reference internal" href="#module-aria.conbox">Module contents</a></li>
+</ul>
+</li>
+</ul>
+</div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">Aria-EC</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+      <li>aria.conbox package</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="_sources/ariaec.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="aria-conbox-package">
+<h1>aria.conbox package<a class="headerlink" href="#aria-conbox-package" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="subpackages">
+<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+</div>
+</div>
+<div class="section" id="submodules">
+<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
+</div>
+<div class="section" id="module-aria.conbox.analysis">
+<span id="aria-conbox-analysis-module"></span><h2>aria.conbox.analysis module<a class="headerlink" href="#module-aria.conbox.analysis" title="Permalink to this headline">¶</a></h2>
+<p>Created on 4/7/17</p>
+<p>&#64;author: fallain</p>
+<dl class="class">
+<dt id="aria.conbox.analysis.EnsembleAnalysis">
+<em class="property">class </em><code class="descclassname">aria.conbox.analysis.</code><code class="descname">EnsembleAnalysis</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/analysis.html#EnsembleAnalysis"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.analysis.EnsembleAnalysis" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>ARIA extended ensemble analysis</p>
+<dl class="staticmethod">
+<dt id="aria.conbox.analysis.EnsembleAnalysis.pca_projection">
+<em class="property">static </em><code class="descname">pca_projection</code><span class="sig-paren">(</span><em>ensemble</em>, <em>molecule</em>, <em>infos</em>, <em>atmask='CA'</em>, <em>title='3D PCA projection on backbone coordinates'</em>, <em>outfile=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/analysis.html#EnsembleAnalysis.pca_projection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.analysis.EnsembleAnalysis.pca_projection" title="Permalink to this definition">¶</a></dt>
+<dd><p>PCA projection of ensemble coordinates</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>ensemble</strong> – </li>
+<li><strong>molecule</strong> – </li>
+<li><strong>infos</strong> – </li>
+<li><strong>atmask</strong> – (Default value = “CA”)</li>
+<li><strong>title</strong> – </li>
+<li><strong>outfile</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.analysis.EnsembleAnalysis.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/analysis.html#EnsembleAnalysis.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.analysis.EnsembleAnalysis.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>Execute Ensemble analysis</p>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.analysis.EnsembleAnalysis.violation_analysis">
+<em class="property">static </em><code class="descname">violation_analysis</code><span class="sig-paren">(</span><em>project</em>, <em>iteration_id</em>, <em>restraints</em>, <em>ensemble</em>, <em>out_file</em>, <em>dists_ref=None</em>, <em>headerflag=True</em>, <em>clusteridx=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/analysis.html#EnsembleAnalysis.violation_analysis"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.analysis.EnsembleAnalysis.violation_analysis" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>clusteridx</strong> – </li>
+<li><strong>project</strong> (<em>aria.Project.Project object</em>) – </li>
+<li><strong>iteration_id</strong> – </li>
+<li><strong>restraints</strong> – </li>
+<li><strong>ensemble</strong> – </li>
+<li><strong>out_file</strong> – </li>
+<li><strong>dists_ref</strong> – Reference distances (Default value = None)</li>
+<li><strong>headerflag</strong> – (Default value = True)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="function">
+<dt id="aria.conbox.analysis.colscatter">
+<code class="descclassname">aria.conbox.analysis.</code><code class="descname">colscatter</code><span class="sig-paren">(</span><em>X</em>, <em>axe</em>, <em>colors</em>, <em>ndim=2</em>, <em>axtitle=''</em>, <em>xlabel='x'</em>, <em>ylabel='y'</em>, <em>zlabel='z'</em>, <em>legend_prefix=''</em>, <em>others=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/analysis.html#colscatter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.analysis.colscatter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Scatter plot with palette colors</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>X</strong> – </li>
+<li><strong>axe</strong> – </li>
+<li><strong>colors</strong> – </li>
+<li><strong>ndim</strong> – (Default value = 2)</li>
+<li><strong>axtitle</strong> – (Default value = “”)</li>
+<li><strong>xlabel</strong> – (Default value = “x”)</li>
+<li><strong>ylabel</strong> – (Default value = “y”)</li>
+<li><strong>zlabel</strong> – (Default value = “z”)</li>
+<li><strong>legend_prefix</strong> – (Default value = “”)</li>
+<li><strong>others</strong> – (Default value = False)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</div>
+<div class="section" id="aria-conbox-base-module">
+<h2>aria.conbox.base module<a class="headerlink" href="#aria-conbox-base-module" title="Permalink to this headline">¶</a></h2>
+</div>
+<div class="section" id="module-aria.conbox.commands">
+<span id="aria-conbox-commands-module"></span><h2>aria.conbox.commands module<a class="headerlink" href="#module-aria.conbox.commands" title="Permalink to this headline">¶</a></h2>
+<p>ARIA Evolutive Contact toolbox</p>
+<dl class="class">
+<dt id="aria.conbox.commands.AriaEcCommands">
+<em class="property">class </em><code class="descclassname">aria.conbox.commands.</code><code class="descname">AriaEcCommands</code><span class="sig-paren">(</span><em>custom_logging=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Argparse interface for aria_ec</p>
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.analysis">
+<code class="descname">analysis</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.analysis"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.analysis" title="Permalink to this definition">¶</a></dt>
+<dd><p>Extended ensemble analysis of distance restraints</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.bbconv">
+<code class="descname">bbconv</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.bbconv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.bbconv" title="Permalink to this definition">¶</a></dt>
+<dd><p>bbcontacts converter call</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.commands.AriaEcCommands.command_list">
+<code class="descname">command_list</code><em class="property"> = ('setup', 'bbconv', 'maplot', 'pdbqual', 'analysis', 'tbl2xml', 'pdbdist', 'pdbstat')</em><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.command_list" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.commands.AriaEcCommands.contact_types">
+<code class="descname">contact_types</code><em class="property"> = ('evfold', 'plmev', 'plm', 'plmdca', 'plmc', 'bbcontacts', 'pconsc', 'pconsc1', 'pconsc2', 'psicov', 'metapsicovhb', 'metapsicov_stg1', 'metapsicov_stg2', 'gremlin', 'pdb', 'native', 'native_full', 'contactlist')</em><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.contact_types" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.create_settings">
+<code class="descname">create_settings</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.create_settings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.create_settings" title="Permalink to this definition">¶</a></dt>
+<dd><p>Create settings relative to args.command</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.commands.AriaEcCommands.default_confile">
+<code class="descname">default_confile</code><em class="property"> = 'conf/config.ini'</em><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.default_confile" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.commands.AriaEcCommands.desc_list">
+<code class="descname">desc_list</code><em class="property"> = (u'Setup ARIA infrastructure with contact maps translated into ARIA restraints', u'Convert a contact map in bbcontact format', u'Contactmap visualization tool', u'Quality tool for pdb file(s)', u'Extended ARIA ensemble analysis on a specific iteration ', u'XML converter for tbl distance restraint', u'Extract distance distribution from culled list of pdb files', u'Analyze distance distribution with GMM, ...')</em><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.desc_list" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.maplot">
+<code class="descname">maplot</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.maplot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.maplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>instantiate AriaEcContactmap with AriaSettings</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.pdbdist">
+<code class="descname">pdbdist</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.pdbdist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.pdbdist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Extract pdb distance distributions</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.pdbqual">
+<code class="descname">pdbqual</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.pdbqual"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.pdbqual" title="Permalink to this definition">¶</a></dt>
+<dd><p>Quality run subcommand</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.pdbstat">
+<code class="descname">pdbstat</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.pdbstat"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.pdbstat" title="Permalink to this definition">¶</a></dt>
+<dd><p>Analyse pdb distance distribution</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>call method relative to args.command</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.setup">
+<code class="descname">setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.setup" title="Permalink to this definition">¶</a></dt>
+<dd><p>Setup call</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.commands.AriaEcCommands.tbl2xml">
+<code class="descname">tbl2xml</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#AriaEcCommands.tbl2xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.AriaEcCommands.tbl2xml" title="Permalink to this definition">¶</a></dt>
+<dd><p>tbl2xml command</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.commands.ReadableFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.commands.</code><code class="descname">ReadableFile</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#ReadableFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.ReadableFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">argparse.Action</span></code></p>
+<p>Class used with argparse action to check if a file is readable</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="aria.conbox.commands.check_file">
+<code class="descclassname">aria.conbox.commands.</code><code class="descname">check_file</code><span class="sig-paren">(</span><em>prospective_file</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#check_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.check_file" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>prospective_file</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="function">
+<dt id="aria.conbox.commands.main">
+<code class="descclassname">aria.conbox.commands.</code><code class="descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/commands.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.commands.main" title="Permalink to this definition">¶</a></dt>
+<dd><p>Launch ariaec command interface</p>
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.converter">
+<span id="aria-conbox-converter-module"></span><h2>aria.conbox.converter module<a class="headerlink" href="#module-aria.conbox.converter" title="Permalink to this headline">¶</a></h2>
+<p>Input/Output aria_ec scripts</p>
+<dl class="class">
+<dt id="aria.conbox.converter.AriaEcBbConverter">
+<em class="property">class </em><code class="descclassname">aria.conbox.converter.</code><code class="descname">AriaEcBbConverter</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcBbConverter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcBbConverter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Bbcontacts convert main class</p>
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaEcBbConverter.compute_diversityvalue">
+<em class="property">static </em><code class="descname">compute_diversityvalue</code><span class="sig-paren">(</span><em>msa</em>, <em>seqlen</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcBbConverter.compute_diversityvalue"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcBbConverter.compute_diversityvalue" title="Permalink to this definition">¶</a></dt>
+<dd><blockquote>
+<div><p>Compute bbcontacts diversity value</p>
+<dl class="docutils">
+<dt>msa <span class="classifier-delimiter">:</span> <span class="classifier"><cite>str</cite></span></dt>
+<dd>multiple sequence alignment file path</dd>
+<dt>seqlen <span class="classifier-delimiter">:</span> <span class="classifier"><cite>int</cite></span></dt>
+<dd>protein sequence length</dd>
+</dl>
+<p>diversity_score : <cite>float</cite></p>
+<blockquote>
+<div><p>Diversity score correspond to the square root of the multiple
+sequence alignment length (<span class="math">\(m\)</span>) over the length of the protein
+sequence (<span class="math">\(l\)</span>)</p>
+<div class="math">
+\[Divscore =\]</div>
+</div></blockquote>
+</div></blockquote>
+<p>rac{sqrt{m}}{l}</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcBbConverter.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcBbConverter.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcBbConverter.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>BBConverter command</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.converter.AriaEcXMLConverter">
+<em class="property">class </em><code class="descclassname">aria.conbox.converter.</code><code class="descname">AriaEcXMLConverter</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.converter.AriaXMLConverter" title="aria.conbox.converter.AriaXMLConverter"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.converter.AriaXMLConverter</span></code></a></p>
+<p>XML converter ariaec to aria</p>
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.atm_list">
+<code class="descname">atm_list</code><span class="sig-paren">(</span><em>idx1</em>, <em>res1</em>, <em>idx2</em>, <em>res2</em>, <em>list_type='min'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.atm_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.atm_list" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>idx1</strong> – </li>
+<li><strong>res1</strong> – </li>
+<li><strong>idx2</strong> – </li>
+<li><strong>res2</strong> – </li>
+<li><strong>list_type</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.atm_product">
+<code class="descname">atm_product</code><span class="sig-paren">(</span><em>idx1</em>, <em>res1</em>, <em>idx2</em>, <em>res2</em>, <em>list_type='min'</em>, <em>adr_flag=False</em>, <em>product_type='allvsall'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.atm_product"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.atm_product" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>product_type</strong> – </li>
+<li><strong>adr_flag</strong> – </li>
+<li><strong>idx1</strong> – </li>
+<li><strong>res1</strong> – </li>
+<li><strong>idx2</strong> – </li>
+<li><strong>res2</strong> – </li>
+<li><strong>list_type</strong> – type of atoms in the product (Default value = “min”)</li>
+<li><strong>res1</strong> – </li>
+<li><strong>res2</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.get_dist">
+<code class="descname">get_dist</code><span class="sig-paren">(</span><em>distmap</em>, <em>contribs</em>, <em>defaultdist</em>, <em>protein</em>, <em>groupby=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.get_dist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.get_dist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get target distance from distance map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>distmap</strong> – </li>
+<li><strong>contribs</strong> – </li>
+<li><strong>defaultdist</strong> – </li>
+<li><strong>protein</strong> – </li>
+<li><strong>groupby</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.neighcontact">
+<em class="property">static </em><code class="descname">neighcontact</code><span class="sig-paren">(</span><em>contact</em>, <em>maxidx</em>, <em>offset=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.neighcontact"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.neighcontact" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contact</strong> (<em>tuple object</em>) – </li>
+<li><strong>maxidx</strong> (<em>int</em>) – </li>
+<li><strong>offset</strong> (<em>int</em>) – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.neighcontacts">
+<em class="property">static </em><code class="descname">neighcontacts</code><span class="sig-paren">(</span><em>contacts</em>, <em>maxidx</em>, <em>offset=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.neighcontacts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.neighcontacts" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contacts</strong> (<em>list of tuple</em>) – </li>
+<li><strong>maxidx</strong> (<em>int</em>) – Maximum index value in pairs</li>
+<li><strong>offset</strong> (<em>int</em>) – If indexes in pairs start by 0 or 0 + offset</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.run_tbl2xml">
+<code class="descname">run_tbl2xml</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.run_tbl2xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.run_tbl2xml" title="Permalink to this definition">¶</a></dt>
+<dd><p>Main command to convert tbl file(s) in ARIA XML Format</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.targetdistmaps">
+<code class="descname">targetdistmaps</code><span class="sig-paren">(</span><em>sequence</em>, <em>distfile=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.targetdistmaps"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.targetdistmaps" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>distfile</strong> – param groupby: (Default value = None)</li>
+<li><strong>sequence</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.tbl2xml">
+<em class="property">static </em><code class="descname">tbl2xml</code><span class="sig-paren">(</span><em>outdir_path</em>, <em>molecule_path</em>, <em>tbl_paths</em>, <em>list_name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.tbl2xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.tbl2xml" title="Permalink to this definition">¶</a></dt>
+<dd><p>Read cns distance restraints in TBL format and convert them into ARIA
+XML format</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>outdir_path</strong> (<em>str</em>) – Path where ARIA XML files are saved</li>
+<li><strong>molecule_path</strong> (<em>str</em>) – Path of molecule file in ARIA XML format</li>
+<li><strong>tbl_paths</strong> (<em>list of str</em>) – List of distance restraints paths</li>
+<li><strong>list_name</strong> (<em>str</em>) – Name of spec in tbl file which will be converted into XML format</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>xml_paths</strong> – List of distance restraints in ARIA XML format</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">str</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.write_ariaproject">
+<code class="descname">write_ariaproject</code><span class="sig-paren">(</span><em>aria_template</em>, <em>seqfile</em>, <em>dist_files</em>, <em>tbl_files</em>, <em>desclist=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.write_ariaproject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.write_ariaproject" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate ariaproject.xml file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>aria_template</strong> (<em>str</em>) – ariaproject.xml template path</li>
+<li><strong>seqfile</strong> (<em>str</em>) – path of molecule sequence in SEQ format</li>
+<li><strong>dist_files</strong> (<em>list of str</em>) – List of distance restraint files in ARIA XML format</li>
+<li><strong>tbl_files</strong> (<em>dict</em>) – Distance restraint files in CNS TBL format</li>
+<li><strong>desclist</strong> (<em>list of str</em>) – List of data descriptor for the actual run (Default value = None).</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"></p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">None</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.write_map_restraint">
+<code class="descname">write_map_restraint</code><span class="sig-paren">(</span><em>protein</em>, <em>contactmap</em>, <em>nb_c</em>, <em>targetdists</em>, <em>scoremap=None</em>, <em>listname=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.write_map_restraint"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.write_map_restraint" title="Permalink to this definition">¶</a></dt>
+<dd><p>Translate maplot in ARIA XML restraint</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protein</strong> – </li>
+<li><strong>listname</strong> – param contactmap: ResAtmMap for a protein (Default value = “”)</li>
+<li><strong>nb_c</strong> – Number of restraints selected</li>
+<li><strong>targetdists</strong> (<em>dict</em>) – ResAtmMap for each atom for each amino acid</li>
+<li><strong>scoremap</strong> – sorted list of contacts (Default value = None)</li>
+<li><strong>contactmap</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.write_maplist_restraints">
+<code class="descname">write_maplist_restraints</code><span class="sig-paren">(</span><em>maplist</em>, <em>targetmaps</em>, <em>protein</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.write_maplist_restraints"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.write_maplist_restraints" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate ARIA XML restraints from maplist</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>maplist</strong> (<em>list of ResAtmMap</em><em> or </em><em>ResMap object</em>) – </li>
+<li><strong>targetmaps</strong> (<em>dict</em>) – </li>
+<li><strong>protein</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaEcXMLConverter.write_tbl_restraints">
+<code class="descname">write_tbl_restraints</code><span class="sig-paren">(</span><em>protein</em>, <em>hbmap=None</em>, <em>n_hb=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaEcXMLConverter.write_tbl_restraints"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaEcXMLConverter.write_tbl_restraints" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write tbl restraints</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>protein</strong> – </li>
+<li><strong>hbmap</strong> – Extra hbond map (eg: metapsicov hbonds) (Default value = None)</li>
+<li><strong>n_hb</strong> – </li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">{‘hbond’: hb_file, ‘dihed’: dihed_file, ‘ssdist’: ssdist_file}</p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">dict</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.converter.AriaXMLConverter">
+<em class="property">class </em><code class="descclassname">aria.conbox.converter.</code><code class="descname">AriaXMLConverter</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">aria.core.conversion.Converter</span></code>, <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>XML converter for aria files</p>
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaXMLConverter.deff">
+<em class="property">static </em><code class="descname">deff</code><span class="sig-paren">(</span><em>atm_dists</em>, <em>dpow=6</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.deff"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.deff" title="Permalink to this definition">¶</a></dt>
+<dd><p>Compute aria effective distance from input distances</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>atm_dists</strong> (<em>list</em>) – list of atm-atm distances</li>
+<li><strong>dpow</strong> (<em>int</em>) – effective distance exponant (Default value = 6)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.converter.AriaXMLConverter.molecule">
+<code class="descname">molecule</code><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.molecule" title="Permalink to this definition">¶</a></dt>
+<dd><p>aria.Molecule.Molecule object or None. If a structure has been loaded,
+use it to update the molecule</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaXMLConverter.read_pdb">
+<code class="descname">read_pdb</code><span class="sig-paren">(</span><em>pdbpath</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.read_pdb"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.read_pdb" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>pdbpath</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaXMLConverter.read_seq">
+<code class="descname">read_seq</code><span class="sig-paren">(</span><em>seqpath</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.read_seq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.read_seq" title="Permalink to this definition">¶</a></dt>
+<dd><p>Load aria Molecule object from seq file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>seqpath</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaXMLConverter.upd_mol">
+<em class="property">static </em><code class="descname">upd_mol</code><span class="sig-paren">(</span><em>molecule</em>, <em>structure</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.upd_mol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.upd_mol" title="Permalink to this definition">¶</a></dt>
+<dd><p>Update molecule object according to pdb structure</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>molecule</strong> – </li>
+<li><strong>structure</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaXMLConverter.write_dihedral_tbl">
+<em class="property">static </em><code class="descname">write_dihedral_tbl</code><span class="sig-paren">(</span><em>secstructs</em>, <em>outfile</em>, <em>knrj=0.5</em>, <em>exp=2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.write_dihedral_tbl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.write_dihedral_tbl" title="Permalink to this definition">¶</a></dt>
+<dd><p>Build dihedral angle restraints (phi, psi) in tbl format</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>secstructs</strong> – </li>
+<li><strong>outfile</strong> – </li>
+<li><strong>knrj</strong> – (Default value = 0.5)</li>
+<li><strong>exp</strong> – (Default value = 2)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaXMLConverter.write_dist_xml">
+<em class="property">static </em><code class="descname">write_dist_xml</code><span class="sig-paren">(</span><em>dist_restraints</em>, <em>outfile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.write_dist_xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.write_dist_xml" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write aria distance restraint xml file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>dist_restraints</strong> – </li>
+<li><strong>outfile</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaXMLConverter.write_hb_tbl">
+<code class="descname">write_hb_tbl</code><span class="sig-paren">(</span><em>protein</em>, <em>outfile</em>, <em>hbmap=None</em>, <em>dminus=0.0</em>, <em>dplus=0.5</em>, <em>n_hb=None</em>, <em>lr_type='main'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.write_hb_tbl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.write_hb_tbl" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protein</strong> – param outfile:</li>
+<li><strong>hbmap</strong> – param dminus: (Default value = None)</li>
+<li><strong>dplus</strong> – param n_hb: (Default value = 0.5)</li>
+<li><strong>lr_type</strong> – return: (Default value = ‘main’)</li>
+<li><strong>outfile</strong> – </li>
+<li><strong>dminus</strong> – (Default value = 0.0)</li>
+<li><strong>n_hb</strong> – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.converter.AriaXMLConverter.write_ssdist_tbl">
+<em class="property">static </em><code class="descname">write_ssdist_tbl</code><span class="sig-paren">(</span><em>sec_struct</em>, <em>ss_dist</em>, <em>outfile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.write_ssdist_tbl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.write_ssdist_tbl" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>sec_struct</strong> – </li>
+<li><strong>ss_dist</strong> – </li>
+<li><strong>outfile</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.converter.AriaXMLConverter.write_xmlseq">
+<code class="descname">write_xmlseq</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/converter.html#AriaXMLConverter.write_xmlseq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.converter.AriaXMLConverter.write_xmlseq" title="Permalink to this definition">¶</a></dt>
+<dd><p>Use aria xml pickler to generate xml molecule file</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.maplot">
+<span id="aria-conbox-maplot-module"></span><h2>aria.conbox.maplot module<a class="headerlink" href="#module-aria.conbox.maplot" title="Permalink to this headline">¶</a></h2>
+<p>Input/Output aria_ec scripts</p>
+<dl class="class">
+<dt id="aria.conbox.maplot.AriaEcContactMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.maplot.</code><code class="descname">AriaEcContactMap</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/maplot.html#AriaEcContactMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.maplot.AriaEcContactMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Contact maplot class</p>
+<dl class="method">
+<dt id="aria.conbox.maplot.AriaEcContactMap.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/maplot.html#AriaEcContactMap.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.maplot.AriaEcContactMap.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>Contact map analysis command</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.ndconv">
+<span id="aria-conbox-ndconv-module"></span><h2>aria.conbox.ndconv module<a class="headerlink" href="#module-aria.conbox.ndconv" title="Permalink to this headline">¶</a></h2>
+<p>Network deconvolution tool</p>
+<dl class="function">
+<dt id="aria.conbox.ndconv.net_deconv">
+<code class="descclassname">aria.conbox.ndconv.</code><code class="descname">net_deconv</code><span class="sig-paren">(</span><em>npmat</em>, <em>beta=0.99</em>, <em>alpha=1</em>, <em>control=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/ndconv.html#net_deconv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.ndconv.net_deconv" title="Permalink to this definition">¶</a></dt>
+<dd><p>This is a python implementation/translation of network deconvolution by
+MIT-KELLIS LAB</p>
+<blockquote>
+<div><p>LICENSE: MIT-KELLIS LAB</p>
+<dl class="docutils">
+<dt>AUTHORS:</dt>
+<dd>Algorithm was programmed by Soheil Feizi.
+Paper authors are S. Feizi, D. Marbach,  M. Medard and M. Kellis</dd>
+</dl>
+</div></blockquote>
+<p>Python implementation: Gideon Rosenthal</p>
+<p class="rubric">References</p>
+<dl class="docutils">
+<dt>For more details, see the following paper:</dt>
+<dd>Network Deconvolution as a General Method to Distinguish
+Direct Dependencies over Networks
+By: Soheil Feizi, Daniel Marbach,  Muriel Medard and Manolis Kellis
+Nature Biotechnology</dd>
+</dl>
+<blockquote>
+<div>ND.m: network deconvolution</div></blockquote>
+<p>DESCRIPTION:</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>USAGE:</dt>
+<dd>mat_nd = ND(npmat)
+mat_nd = ND(npmat,beta)
+mat_nd = ND(npmat,beta,alpha,control)</dd>
+</dl>
+</div></blockquote>
+<p>INPUT ARGUMENTS:</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>npmat</strong> – Input matrix, if it is a square matrix, the program assumes
+it is a relevance matrix where npmat(i,j) represents the
+similarity content between nodes i and j. Elements of
+matrix should be non-negative.
+optional parameters:</li>
+<li><strong>beta</strong> – Scaling parameter, the program maps the largest absolute
+eigenvalue of the direct dependency matrix to beta. It
+should be between 0 and 1. (Default value = 0.99)</li>
+<li><strong>alpha</strong> – fraction of edges of the observed dependency matrix to be
+kept in deconvolution process. (Default value = 1)</li>
+<li><strong>control</strong> – if 0, displaying direct weights for observed
+interactions, if 1, displaying direct weights for both
+observed and
+non-observed interactions.
+OUTPUT ARGUMENTS:
+mat_nd        Output deconvolved matrix (direct dependency matrix). Its
+components
+represent direct edge weights of observed interactions.
+Choosing top direct interactions (a cut-off) depends on
+the application and
+is not implemented in this code.
+To apply ND on regulatory networks, follow steps explained in
+Supplementary notes
+1.4.1 and 2.1 and 2.3 of the paper.
+In this implementation, input matrices are made symmetric.
+<strong>**********************************************************************</strong>
+loading scaling and thresholding parameters (Default value = 0)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.pdbdist">
+<span id="aria-conbox-pdbdist-module"></span><h2>aria.conbox.pdbdist module<a class="headerlink" href="#module-aria.conbox.pdbdist" title="Permalink to this headline">¶</a></h2>
+<p>PDB distance distribution generation</p>
+<dl class="class">
+<dt id="aria.conbox.pdbdist.PDBDist">
+<em class="property">class </em><code class="descclassname">aria.conbox.pdbdist.</code><code class="descname">PDBDist</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbdist.html#PDBDist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbdist.PDBDist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Extract pdb distance distribution from culled list of pdb files provided by
+PICSES server [G. Wang and R. L. Dunbrack, Jr. PISCES: a protein sequence
+culling server. Bioinformatics, 19:1589-1591, 2003.] with Bio.PDB tools
+[Hamelryck, T., Manderick, B. (2003) PDB pdbparser and structure class
+implemented in Python. Bioinformatics 19: 2308–2310]</p>
+<dl class="staticmethod">
+<dt id="aria.conbox.pdbdist.PDBDist.get_proteinblocks">
+<em class="property">static </em><code class="descname">get_proteinblocks</code><span class="sig-paren">(</span><em>pdb</em>, <em>chain</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbdist.html#PDBDist.get_proteinblocks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbdist.PDBDist.get_proteinblocks" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get Protein Block assignment index for chain with pbxplore</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>pdb</strong> (<em>pdb file path</em>) – </li>
+<li><strong>chain</strong> (<em>str</em>) – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.pdbdist.PDBDist.get_secstructs">
+<em class="property">static </em><code class="descname">get_secstructs</code><span class="sig-paren">(</span><em>backbone</em>, <em>dssp_dict</em>, <em>chain</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbdist.html#PDBDist.get_secstructs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbdist.PDBDist.get_secstructs" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return related secondary structure dictionary for each backbone residue</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>backbone</strong> – List of bacbkone residues</li>
+<li><strong>dssp_dict</strong> – </li>
+<li><strong>chain</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.pdbdist.PDBDist.pdbdists">
+<code class="descname">pdbdists</code><span class="sig-paren">(</span><em>pdb</em>, <em>pdbid</em>, <em>chain</em>, <em>pair_list='all'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbdist.html#PDBDist.pdbdists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbdist.PDBDist.pdbdists" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get distance matrix from pdb file and write distances into output file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>pdb</strong> (<em>str</em>) – Path of pdb file</li>
+<li><strong>pdbid</strong> (<em>str</em>) – PDB id</li>
+<li><strong>chain</strong> (<em>str</em>) – Chain id</li>
+<li><strong>pair_list</strong> (<em>{'all'</em><em>, </em><em>'min'</em><em>, </em><em>'heavy'}</em>) – Defining if we generate a distance distribution for a minimal set
+of atom pairs, heavy pairs or all atom pairs (Default value = “all”)</li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"><strong>dists</strong></p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">obj:</th><td class="field-body"><cite>list</cite> of :obj: <cite>OrderedDict</cite></td>
+</tr>
+</tbody>
+</table>
+</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.pdbdist.PDBDist.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbdist.html#PDBDist.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbdist.PDBDist.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>main method</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.pdbqual">
+<span id="aria-conbox-pdbqual-module"></span><h2>aria.conbox.pdbqual module<a class="headerlink" href="#module-aria.conbox.pdbqual" title="Permalink to this headline">¶</a></h2>
+<p>Created on 9/5/16
+&#64;author: fallain</p>
+<p>Derived from qual.py script by Dr. Benjamin Bardiaux</p>
+<dl class="class">
+<dt id="aria.conbox.pdbqual.AriaEcPdbqual">
+<em class="property">class </em><code class="descclassname">aria.conbox.pdbqual.</code><code class="descname">AriaEcPdbqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbqual.html#AriaEcPdbqual"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbqual.AriaEcPdbqual" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">aria.conbox.common.CommandProtocol</span></code></p>
+<p>Quality pdb tool</p>
+<dl class="method">
+<dt id="aria.conbox.pdbqual.AriaEcPdbqual.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/pdbqual.html#AriaEcPdbqual.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.pdbqual.AriaEcPdbqual.run" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.protein">
+<span id="aria-conbox-protein-module"></span><h2>aria.conbox.protein module<a class="headerlink" href="#module-aria.conbox.protein" title="Permalink to this headline">¶</a></h2>
+<p>Secondary structure list</p>
+<dl class="class">
+<dt id="aria.conbox.protein.AminoAcidSequence">
+<em class="property">class </em><code class="descclassname">aria.conbox.protein.</code><code class="descname">AminoAcidSequence</code><span class="sig-paren">(</span><em>topologyfile</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#AminoAcidSequence"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">aria.core.legacy.SequenceList.SequenceList</span></code>, <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Amino acid sequence</p>
+<dl class="attribute">
+<dt id="aria.conbox.protein.AminoAcidSequence.end_reg">
+<code class="descname">end_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.end_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.AminoAcidSequence.humanidx">
+<code class="descname">humanidx</code><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.humanidx" title="Permalink to this definition">¶</a></dt>
+<dd><p><em>return</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.AminoAcidSequence.read">
+<code class="descname">read</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#AminoAcidSequence.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.read" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.AminoAcidSequence.readtopo">
+<code class="descname">readtopo</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#AminoAcidSequence.readtopo"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.readtopo" title="Permalink to this definition">¶</a></dt>
+<dd><p>Parse topology file for amino acids
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.AminoAcidSequence.restatement_reg">
+<code class="descname">restatement_reg</code><em class="property"> = {u'dihedral': &lt;_sre.SRE_Pattern object at 0x4ced770&gt;, u'acce': &lt;_sre.SRE_Pattern object&gt;, u'improper': &lt;_sre.SRE_Pattern object at 0x4c62630&gt;, u'atom': &lt;_sre.SRE_Pattern object at 0x4d63060&gt;, u'dono': &lt;_sre.SRE_Pattern object&gt;, u'bond': &lt;_sre.SRE_Pattern object&gt;}</em><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.restatement_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.AminoAcidSequence.startres_reg">
+<code class="descname">startres_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.startres_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.AminoAcidSequence.topology">
+<code class="descname">topology</code><a class="headerlink" href="#aria.conbox.protein.AminoAcidSequence.topology" title="Permalink to this definition">¶</a></dt>
+<dd><p>Topology dict with 3l code as dict key
+:return:</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protein.Protein">
+<em class="property">class </em><code class="descclassname">aria.conbox.protein.</code><code class="descname">Protein</code><span class="sig-paren">(</span><em>sett</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#Protein"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.Protein" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Protein class</p>
+<dl class="method">
+<dt id="aria.conbox.protein.Protein.set_aa_sequence">
+<code class="descname">set_aa_sequence</code><span class="sig-paren">(</span><em>filename</em>, <em>ssidx=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#Protein.set_aa_sequence"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.Protein.set_aa_sequence" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>filename</strong> – param ssidx:</li>
+<li><strong>ssidx</strong> – (Default value = False)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.Protein.set_sec_struct">
+<code class="descname">set_sec_struct</code><span class="sig-paren">(</span><em>filename</em>, <em>ssdist_filename=u''</em>, <em>ssidx=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#Protein.set_sec_struct"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.Protein.set_sec_struct" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>filename</strong> – param ssdist_filename:</li>
+<li><strong>ssidx</strong> – return: (Default value = False)</li>
+<li><strong>ssdist_filename</strong> – (Default value = ‘’)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.protein.Protein.sync_index">
+<em class="property">static </em><code class="descname">sync_index</code><span class="sig-paren">(</span><em>index1</em>, <em>index2</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#Protein.sync_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.Protein.sync_index" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return humanidx with upper min from existing humanidx</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>index1</strong> – param index2:</li>
+<li><strong>index2</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.Protein.topology">
+<code class="descname">topology</code><a class="headerlink" href="#aria.conbox.protein.Protein.topology" title="Permalink to this definition">¶</a></dt>
+<dd><p><em>return</em></p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.Protein.write_seq">
+<code class="descname">write_seq</code><span class="sig-paren">(</span><em>outfile</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#Protein.write_seq"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.Protein.write_seq" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>outfile</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protein.SsList">
+<em class="property">class </em><code class="descclassname">aria.conbox.protein.</code><code class="descname">SsList</code><span class="sig-paren">(</span><em>sett</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Reader for secondary prediction structure files</p>
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.check_filetype">
+<code class="descname">check_filetype</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.check_filetype"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.check_filetype" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.index">
+<code class="descname">index</code><a class="headerlink" href="#aria.conbox.protein.SsList.index" title="Permalink to this definition">¶</a></dt>
+<dd><p><em>return</em></p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.indxplus_reg">
+<code class="descname">indxplus_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object at 0x4d527b0&gt;</em><a class="headerlink" href="#aria.conbox.protein.SsList.indxplus_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.psipred2_reg">
+<code class="descname">psipred2_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protein.SsList.psipred2_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.psipred3_reg">
+<code class="descname">psipred3_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object at 0x4d52fd0&gt;</em><a class="headerlink" href="#aria.conbox.protein.SsList.psipred3_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.psipred_reg">
+<code class="descname">psipred_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protein.SsList.psipred_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.read">
+<code class="descname">read</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.read" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.read_indextableplus">
+<code class="descname">read_indextableplus</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.read_indextableplus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.read_indextableplus" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.read_psipred">
+<code class="descname">read_psipred</code><span class="sig-paren">(</span><em>filename</em>, <em>ss2=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.read_psipred"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.read_psipred" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.read_ssdist">
+<code class="descname">read_ssdist</code><span class="sig-paren">(</span><em>ssdistpath=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.read_ssdist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.read_ssdist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Read average dist file generated using PDB</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>ssdistpath</strong> – return: (Default value = None)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.seq_sublist">
+<code class="descname">seq_sublist</code><span class="sig-paren">(</span><em>sequence</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.seq_sublist"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.seq_sublist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Check and  adjust sslist with given sequence</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>sequence</strong> – input amino acid sequence (one letter format)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.sequence">
+<code class="descname">sequence</code><a class="headerlink" href="#aria.conbox.protein.SsList.sequence" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protein.SsList.ss_dist_reg">
+<code class="descname">ss_dist_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protein.SsList.ss_dist_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protein.SsList.write_ssfasta">
+<code class="descname">write_ssfasta</code><span class="sig-paren">(</span><em>filename</em>, <em>desc=u'pdbid'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protein.html#SsList.write_ssfasta"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protein.SsList.write_ssfasta" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>filename</strong> – param desc:</li>
+<li><strong>desc</strong> – (Default value = “pdbid”)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.protmap">
+<span id="aria-conbox-protmap-module"></span><h2>aria.conbox.protmap module<a class="headerlink" href="#module-aria.conbox.protmap" title="Permalink to this headline">¶</a></h2>
+<p>ARIA Evolutionary Constraints Tools</p>
+<dl class="class">
+<dt id="aria.conbox.protmap.AaAtmMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">AaAtmMap</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaAtmMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaAtmMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.AaMap" title="aria.conbox.protmap.AaMap"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.AaMap</span></code></a></p>
+<p>Amino acid map with atom levels</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.AaAtmMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>scsc_min=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaAtmMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaAtmMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contactdef</strong> – </li>
+<li><strong>scsc_min</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaAtmMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaAtmMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaAtmMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>kwargs</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaAtmMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaAtmMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaAtmMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaAtmMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>atom_types='min'</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaAtmMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaAtmMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><p>Update Aa index with atoms</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.AaMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">AaMap</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.ProteinMap" title="aria.conbox.protmap.ProteinMap"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.ProteinMap</span></code></a></p>
+<p>Amino Acid Distance Matrix</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.AaMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>scsc_min=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contactdef</strong> – </li>
+<li><strong>scsc_min</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>kwargs</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AaMap.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AaMap.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AaMap.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><p>Reduce level of the contactmap</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.AaMap.sequence">
+<code class="descname">sequence</code><a class="headerlink" href="#aria.conbox.protmap.AaMap.sequence" title="Permalink to this definition">¶</a></dt>
+<dd><p>returns: String containing all amino acid 1L code
+:rtype: str</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.AtmMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">AtmMap</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AtmMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AtmMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.Map" title="aria.conbox.protmap.Map"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.Map</span></code></a></p>
+<p>Atom Distance Matrix</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.AtmMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AtmMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AtmMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>kwargs</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AtmMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AtmMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AtmMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.AtmMap.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#AtmMap.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.AtmMap.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><p>Reduce level of the contactmap</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.Map">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">Map</code><span class="sig-paren">(</span><em>index=None</em>, <em>columns=None</em>, <em>mtype='distance'</em>, <em>duplicate_levels=False</em>, <em>data=None</em>, <em>dtype=None</em>, <em>sym=True</em>, <em>desc=''</em>, <em>path=''</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">pandas.core.frame.DataFrame</span></code></p>
+<p>Distance/contact matrix</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.check_type">
+<code class="descname">check_type</code><span class="sig-paren">(</span><em>mtype</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.check_type"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.check_type" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mtype</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.copy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Copy the current map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>**kwargs</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.Map.mtype_choices">
+<code class="descname">mtype_choices</code><em class="property"> = {'distance': &lt;type 'float'&gt;, 'contact': &lt;type 'bool'&gt;, 'score': &lt;type 'float'&gt;}</em><a class="headerlink" href="#aria.conbox.protmap.Map.mtype_choices" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><p>Low complexcity dataframe</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.remove">
+<code class="descname">remove</code><span class="sig-paren">(</span><em>rm_list</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.remove" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>rm_list</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.set_value">
+<code class="descname">set_value</code><span class="sig-paren">(</span><em>index</em>, <em>col</em>, <em>value</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.set_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.set_value" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>index</strong> – param col:</li>
+<li><strong>value</strong> – param kwargs:</li>
+<li><strong>col</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.sortedset">
+<code class="descname">sortedset</code><span class="sig-paren">(</span><em>human_idx=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.sortedset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.sortedset" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>human_idx</strong> – (Default value = False)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.subfill">
+<code class="descname">subfill</code><span class="sig-paren">(</span><em>pairdict</em>, <em>level=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.subfill"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.subfill" title="Permalink to this definition">¶</a></dt>
+<dd><p>Fill map with dict giving</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>pairdict</strong> – param level:</li>
+<li><strong>level</strong> – (Default value = 0)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.to_series">
+<code class="descname">to_series</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.to_series"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.to_series" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return panda series related to lower triangle values</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.topmap">
+<code class="descname">topmap</code><span class="sig-paren">(</span><em>scoremap</em>, <em>nb_topcontact</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.topmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.topmap" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>scoremap</strong> – param nb_topcontact:</li>
+<li><strong>nb_topcontact</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.Map.update">
+<code class="descname">update</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#Map.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.Map.update" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>args</strong> – param kwargs:</li>
+<li><strong>*args</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.MapFilter">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">MapFilter</code><span class="sig-paren">(</span><em>settings</em>, <em>nofilter=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<dl class="docutils">
+<dt>Filter maplot/distancemap</dt>
+<dd>nd      : Network deconvolution
+pos     : remove close contacts
+cons    : remove contacts with highly conservated residues
+cys-cys : unicity of ss contacts
+ssclash : secondary structure conflict</dd>
+</dl>
+<dl class="attribute">
+<dt id="aria.conbox.protmap.MapFilter.clash_dict">
+<code class="descname">clash_dict</code><em class="property"> = {'cys': {'clash': '222', 'desc': 'disulfide bond unicity'}, 'cons': {'clash': '888', 'desc': 'high conservation'}, 'pos': {'clash': 'physical proximity', 'desc': 'sequence position'}, 'ssclash': {'clash': '999', 'desc': 'secondary structure prediction conflict'}}</em><a class="headerlink" href="#aria.conbox.protmap.MapFilter.clash_dict" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.MapFilter.cons_filter">
+<code class="descname">cons_filter</code><span class="sig-paren">(</span><em>mapdict</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.cons_filter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.cons_filter" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>mapdict</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.protmap.MapFilter.cys_filter">
+<em class="property">static </em><code class="descname">cys_filter</code><span class="sig-paren">(</span><em>mapdict</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.cys_filter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.cys_filter" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>mapdict</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.MapFilter.filter_types">
+<code class="descname">filter_types</code><em class="property"> = ('pos', 'cons', 'ssclash', 'cys')</em><a class="headerlink" href="#aria.conbox.protmap.MapFilter.filter_types" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.MapFilter.nd_filter">
+<code class="descname">nd_filter</code><span class="sig-paren">(</span><em>mapdict</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.nd_filter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.nd_filter" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>mapdict</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.MapFilter.pos_filter">
+<code class="descname">pos_filter</code><span class="sig-paren">(</span><em>mapdict</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.pos_filter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.pos_filter" title="Permalink to this definition">¶</a></dt>
+<dd><p>Position filter on maplot</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>kwargs</strong> – param mapdict: dict with maplot key</li>
+<li><strong>mapdict</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.protmap.MapFilter.ssclash_filter">
+<em class="property">static </em><code class="descname">ssclash_filter</code><span class="sig-paren">(</span><em>mapdict</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.ssclash_filter"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.ssclash_filter" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>mapdict</strong> – param kwargs:</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.protmap.MapFilter.write_filtout">
+<em class="property">static </em><code class="descname">write_filtout</code><span class="sig-paren">(</span><em>clash_dict</em>, <em>desc_dict</em>, <em>contactlist</em>, <em>outdir=''</em>, <em>outprefix='protein'</em>, <em>clashlist=None</em>, <em>human_idx=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#MapFilter.write_filtout"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.MapFilter.write_filtout" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>clash_dict</strong> – </li>
+<li><strong>desc_dict</strong> – </li>
+<li><strong>contactlist</strong> – </li>
+<li><strong>outdir</strong> – (Default value = “”)</li>
+<li><strong>outprefix</strong> – (Default value = “protein”)</li>
+<li><strong>clashlist</strong> – (Default value = None)</li>
+<li><strong>human_idx</strong> – (Default value = True)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.ProtMapCollection">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">ProtMapCollection</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProtMapCollection"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProtMapCollection" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Group all protein maps</p>
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProtMapCollection.allcontactmap">
+<code class="descname">allcontactmap</code><a class="headerlink" href="#aria.conbox.protmap.ProtMapCollection.allcontactmap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Atom level contact map. If alldistmap exists, return the maplot
+form
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProtMapCollection.alldistmap">
+<code class="descname">alldistmap</code><a class="headerlink" href="#aria.conbox.protmap.ProtMapCollection.alldistmap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Atom level distance map.
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProtMapCollection.allscoremap">
+<code class="descname">allscoremap</code><a class="headerlink" href="#aria.conbox.protmap.ProtMapCollection.allscoremap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Atom level score map
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProtMapCollection.distmap">
+<code class="descname">distmap</code><a class="headerlink" href="#aria.conbox.protmap.ProtMapCollection.distmap" title="Permalink to this definition">¶</a></dt>
+<dd><p><em>return</em></p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.ProteinMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">ProteinMap</code><span class="sig-paren">(</span><em>sequence</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.Map" title="aria.conbox.protmap.Map"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.Map</span></code></a></p>
+<p>Abstract class for protein contact map objects</p>
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProteinMap.all_reg">
+<code class="descname">all_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.all_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="staticmethod">
+<dt id="aria.conbox.protmap.ProteinMap.classification_metrics">
+<em class="property">static </em><code class="descname">classification_metrics</code><span class="sig-paren">(</span><em>y_true</em>, <em>y_pred</em>, <em>y_scores=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.classification_metrics"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.classification_metrics" title="Permalink to this definition">¶</a></dt>
+<dd><p>Compute classification metrics</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>y_true</strong> (<em>numpy array of true values</em>) – </li>
+<li><strong>y_pred</strong> (<em>numpy array of predicted values</em>) – </li>
+<li><strong>y_scores</strong> (<em>numpy array of prediction scores</em>) – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.compare_contactmap">
+<code class="descname">compare_contactmap</code><span class="sig-paren">(</span><em>cmpmap</em>, <em>contactlist</em>, <em>outprefix</em>, <em>outdir=''</em>, <em>distmap=None</em>, <em>human_idx=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.compare_contactmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.compare_contactmap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Compare 2 contact map and plot differences</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>cmpmap</strong> – param contactlist:</li>
+<li><strong>outprefix</strong> – param outdir:</li>
+<li><strong>distmap</strong> – param human_idx: (Default value = None)</li>
+<li><strong>contactlist</strong> – </li>
+<li><strong>outdir</strong> – (Default value = “”)</li>
+<li><strong>human_idx</strong> – (Default value = True)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.compareplot">
+<code class="descname">compareplot</code><span class="sig-paren">(</span><em>protmap</em>, <em>save_fig=True</em>, <em>alpha=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.compareplot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.compareplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Compare 2 contact map and plot differences</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protmap</strong> – param save_fig:</li>
+<li><strong>alpha</strong> – param kwargs: (Default value = None)</li>
+<li><strong>save_fig</strong> – (Default value = True)</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.contact_list">
+<code class="descname">contact_list</code><span class="sig-paren">(</span><em>human_idx=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.contact_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.contact_list" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return contact list</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>human_idx</strong> – return: (Default value = False)</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">list</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>scsc_min=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate contact map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contactdef</strong> – param scsc_min:</li>
+<li><strong>scsc_min</strong> – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.contactset">
+<code class="descname">contactset</code><span class="sig-paren">(</span><em>human_idx=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.contactset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.contactset" title="Permalink to this definition">¶</a></dt>
+<dd><p>Remove duplicate in contact_list</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>human_idx</strong> – return: (Default value = False)</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">list</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Copy dataframe and related attributes of the map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>**kwargs</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate heatmap</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>sequence</strong> – </li>
+<li><strong>kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProteinMap.distance_method">
+<code class="descname">distance_method</code><em class="property"> = 'euclidean'</em><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.distance_method" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProteinMap.heavy_reg">
+<code class="descname">heavy_reg</code><em class="property"> = &lt;_sre.SRE_Pattern object&gt;</em><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.heavy_reg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProteinMap.maplot">
+<code class="descname">maplot</code><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.maplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Contact map plot
+:return:</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>linewidths</strong> – (Default value = 0.0)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.plotflush">
+<code class="descname">plotflush</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.plotflush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.plotflush" title="Permalink to this definition">¶</a></dt>
+<dd><p>Flush contact map plot</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><p>Lower index level if multi index</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.report">
+<code class="descname">report</code><span class="sig-paren">(</span><em>cmpmap</em>, <em>scoremap=None</em>, <em>outprefix=''</em>, <em>outdir=''</em>, <em>plotdir=''</em>, <em>plot_ext='pdf'</em>, <em>plotag=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.report"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.report" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate contact map report file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>cmpmap</strong> – </li>
+<li><strong>scoremap</strong> – (Default value = None)</li>
+<li><strong>outprefix</strong> – (Default value = “”)</li>
+<li><strong>outdir</strong> – (Default value = “”)</li>
+<li><strong>plotdir</strong> – (Default value = “”)</li>
+<li><strong>plot_ext</strong> – (Default value = “pdf”)</li>
+<li><strong>plotag</strong> – (Default value = True)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.saveplot">
+<code class="descname">saveplot</code><span class="sig-paren">(</span><em>outdir=''</em>, <em>outprefix='protein'</em>, <em>size_fig=10</em>, <em>plot_ext='pdf'</em>, <em>plot_dpi=200</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.saveplot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.saveplot" title="Permalink to this definition">¶</a></dt>
+<dd><p>Save plot</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>outdir</strong> – param outprefix: (Default value = ‘’)</li>
+<li><strong>size_fig</strong> – param plot_ext: (Default value = 10)</li>
+<li><strong>plot_dpi</strong> – (Default value = 200)</li>
+<li><strong>outprefix</strong> – (Default value = “protein”)</li>
+<li><strong>plot_ext</strong> – (Default value = “pdf”)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ProteinMap.sequence">
+<code class="descname">sequence</code><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.sequence" title="Permalink to this definition">¶</a></dt>
+<dd><p>Specific sequence related to the map in a string
+:returns:
+:rtype: str</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ProteinMap.write_contacts">
+<code class="descname">write_contacts</code><span class="sig-paren">(</span><em>filename</em>, <em>outdir=''</em>, <em>prefix=''</em>, <em>human_idx=True</em>, <em>scoremap=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ProteinMap.write_contacts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ProteinMap.write_contacts" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>prefix</strong> – </li>
+<li><strong>filename</strong> – param outdir:</li>
+<li><strong>human_idx</strong> – param scoremap: (Default value = True)</li>
+<li><strong>outdir</strong> – (Default value = “”)</li>
+<li><strong>scoremap</strong> – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.ResAtmMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">ResAtmMap</code><span class="sig-paren">(</span><em>sequence</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.ProteinMap" title="aria.conbox.protmap.ProteinMap"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.ProteinMap</span></code></a></p>
+<p>Protein distance/contact matrix for all atom pairs. If no sequence given,
+protein distance/contact matrix for all amino acids
+Ex:
+residue           PHE1                                                        atom               CD1       CD2        CB        CA        CG        CZ
+residue atom
+PHE1    CD1   0.000000  2.394145  2.455440  3.269219  1.391024  2.421148</p>
+<blockquote>
+<div>CD2   2.394145  0.000000  2.509243  3.407996  1.379875  2.401098
+CB    2.455440  2.509243  0.000000  1.507025  1.478053  4.267602
+CA    3.269219  3.407996  1.507025  0.000000  2.505414  5.085997
+CG    1.391024  1.379875  1.478053  2.505414  0.000000  2.790403</div></blockquote>
+<dl class="method">
+<dt id="aria.conbox.protmap.ResAtmMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>scsc_min=None</em>, <em>def_cut=5.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><p>Contact map generator from all atoms distance map. There’s a contact
+with 2 residues iff dist between 2 atoms are below the given treshold</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>def_cut</strong> – (Default value = 5.0)</li>
+<li><strong>contactdef</strong> – for all atom pair</li>
+<li><strong>scsc_min</strong> – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResAtmMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Copy dataframe and related attributes of the map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>**kwargs</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResAtmMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResAtmMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>seq_pos=True</em>, <em>seqidx=None</em>, <em>idxnames=None</em>, <em>colnames=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
+<li><strong>sequence</strong> – </li>
+<li><strong>seq_pos</strong> – </li>
+<li><strong>seqidx</strong> (<em>pandas.MultiIndex</em><em>, </em><em>optional</em>) – </li>
+<li><strong>idxnames</strong> – </li>
+<li><strong>colnames</strong> – </li>
+</ul>
+</td>
+</tr>
+<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first"></p>
+</td>
+</tr>
+<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">tuple of pandas.MultiIndex objects</p>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResAtmMap.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><em>groupby='min'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResAtmMap.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>groupby</strong> – return: (Default value = “min”)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ResAtmMap.sequence">
+<code class="descname">sequence</code><a class="headerlink" href="#aria.conbox.protmap.ResAtmMap.sequence" title="Permalink to this definition">¶</a></dt>
+<dd><p>Amino Acid sequence string in humanidx</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.ResMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">ResMap</code><span class="sig-paren">(</span><em>sequence</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.ResAtmMap" title="aria.conbox.protmap.ResAtmMap"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.ResAtmMap</span></code></a></p>
+<p>Res - res distance/contact matrix</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.ResMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contactdef</strong> – param kwargs:</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><p>Copy dataframe and related attributes of the map</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>**kwargs</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.ResMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>seqidx=None</em>, <em>idxnames=None</em>, <em>colnames=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#ResMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.ResMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>sequence</strong> – </li>
+<li><strong>seqidx</strong> (<em>pandas.Index</em>) – </li>
+<li><strong>idxnames</strong> – </li>
+<li><strong>colnames</strong> – </li>
+<li><strong>kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.ResMap.sequence">
+<code class="descname">sequence</code><a class="headerlink" href="#aria.conbox.protmap.ResMap.sequence" title="Permalink to this definition">¶</a></dt>
+<dd><p>Amino Acid sequence string in humanidx</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.protmap.SsAaAtmMap">
+<em class="property">class </em><code class="descclassname">aria.conbox.protmap.</code><code class="descname">SsAaAtmMap</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.protmap.AaAtmMap" title="aria.conbox.protmap.AaAtmMap"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.protmap.AaAtmMap</span></code></a></p>
+<p>Amino acid map with atom and secondary structure levels</p>
+<dl class="method">
+<dt id="aria.conbox.protmap.SsAaAtmMap.contact_map">
+<code class="descname">contact_map</code><span class="sig-paren">(</span><em>contactdef</em>, <em>scsc_min=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap.contact_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.contact_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>contactdef</strong> – </li>
+<li><strong>scsc_min</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.SsAaAtmMap.copy">
+<code class="descname">copy</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap.copy"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.copy" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>kwargs</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.SsAaAtmMap.create_heatmap">
+<code class="descname">create_heatmap</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap.create_heatmap"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.create_heatmap" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.SsAaAtmMap.create_index">
+<code class="descname">create_index</code><span class="sig-paren">(</span><em>sequence</em>, <em>atom_types='min'</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap.create_index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.create_index" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>atom_types</strong> – </li>
+<li><strong>sequence</strong> – </li>
+<li><strong>kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.protmap.SsAaAtmMap.reduce">
+<code class="descname">reduce</code><span class="sig-paren">(</span><em>groupby='min'</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/protmap.html#SsAaAtmMap.reduce"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.reduce" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>groupby</strong> – return: (Default value = “min”)</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.protmap.SsAaAtmMap.ss_types">
+<code class="descname">ss_types</code><em class="property"> = ('H', 'E', 'X')</em><a class="headerlink" href="#aria.conbox.protmap.SsAaAtmMap.ss_types" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.reader">
+<span id="aria-conbox-reader-module"></span><h2>aria.conbox.reader module<a class="headerlink" href="#module-aria.conbox.reader" title="Permalink to this headline">¶</a></h2>
+<p>Reader objects</p>
+<dl class="class">
+<dt id="aria.conbox.reader.Atom">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">Atom</code><span class="sig-paren">(</span><em>name</em>, <em>coords</em><span class="sig-paren">)</span><a class="headerlink" href="#aria.conbox.reader.Atom" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">tuple</span></code></p>
+<dl class="attribute">
+<dt id="aria.conbox.reader.Atom.coords">
+<code class="descname">coords</code><a class="headerlink" href="#aria.conbox.reader.Atom.coords" title="Permalink to this definition">¶</a></dt>
+<dd><p>Alias for field number 1</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.Atom.name">
+<code class="descname">name</code><a class="headerlink" href="#aria.conbox.reader.Atom.name" title="Permalink to this definition">¶</a></dt>
+<dd><p>Alias for field number 0</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.ContactMapFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">ContactMapFile</code><span class="sig-paren">(</span><em>filepath</em>, <em>filetype</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#ContactMapFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.ContactMapFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.MapFile" title="aria.conbox.reader.MapFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.MapFile</span></code></a></p>
+<p>Contact map file</p>
+<dl class="method">
+<dt id="aria.conbox.reader.ContactMapFile.create_map">
+<code class="descname">create_map</code><span class="sig-paren">(</span><em>protein</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#ContactMapFile.create_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.ContactMapFile.create_map" title="Permalink to this definition">¶</a></dt>
+<dd><p>Initialize and fill Res - Res maps based on contactlist</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protein</strong> – </li>
+<li><strong>args</strong> – </li>
+<li><strong>kwargs</strong> – </li>
+<li><strong>*args</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.ContactMapFile.update_map">
+<code class="descname">update_map</code><span class="sig-paren">(</span><em>resmap</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#ContactMapFile.update_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.ContactMapFile.update_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>resmap</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.CulledPdbFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">CulledPdbFile</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#CulledPdbFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.CulledPdbFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.RegexFile" title="aria.conbox.reader.RegexFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.RegexFile</span></code></a></p>
+<p>Reader class for culled pdb list</p>
+<dl class="attribute">
+<dt id="aria.conbox.reader.CulledPdbFile.default">
+<code class="descname">default</code><em class="property"> = 'data/cullpdb/160427/cullpdb_pc25_res1.6_R0.25_d160427_chains3743'</em><a class="headerlink" href="#aria.conbox.reader.CulledPdbFile.default" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.CulledPdbFile.filetype">
+<code class="descname">filetype</code><em class="property"> = 'cullpdb'</em><a class="headerlink" href="#aria.conbox.reader.CulledPdbFile.filetype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.CulledPdbFile.regex">
+<code class="descname">regex</code><em class="property"> = &lt;_sre.SRE_Pattern object at 0x4d7b8a0&gt;</em><a class="headerlink" href="#aria.conbox.reader.CulledPdbFile.regex" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.DistanceMapFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">DistanceMapFile</code><span class="sig-paren">(</span><em>filepath</em>, <em>filetype</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#DistanceMapFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.DistanceMapFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.MapFile" title="aria.conbox.reader.MapFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.MapFile</span></code></a></p>
+<p>Distance matrix file</p>
+<dl class="method">
+<dt id="aria.conbox.reader.DistanceMapFile.create_map">
+<code class="descname">create_map</code><span class="sig-paren">(</span><em>aa_seq</em>, <em>contactdef</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#DistanceMapFile.create_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.DistanceMapFile.create_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>aa_seq</strong> – param contactdef:</li>
+<li><strong>kwargs</strong> – return:</li>
+<li><strong>contactdef</strong> – </li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.DistanceMapFile.update_map">
+<code class="descname">update_map</code><span class="sig-paren">(</span><em>resmap</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#DistanceMapFile.update_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.DistanceMapFile.update_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>resmap</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.MapFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">MapFile</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.RegexFile" title="aria.conbox.reader.RegexFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.RegexFile</span></code></a></p>
+<p>Abstract class related to all kind of protein maps</p>
+<dl class="method">
+<dt id="aria.conbox.reader.MapFile.check_maptype">
+<code class="descname">check_maptype</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFile.check_maptype"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFile.check_maptype" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.MapFile.check_type">
+<code class="descname">check_type</code><em class="property"> = True</em><a class="headerlink" href="#aria.conbox.reader.MapFile.check_type" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.MapFile.create_map">
+<code class="descname">create_map</code><span class="sig-paren">(</span><em>protein</em>, <em>contactdef</em>, <em>flaglist=None</em>, <em>offset=0</em>, <em>sym=True</em>, <em>path=''</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFile.create_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFile.create_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>path</strong> – param protein: (Default value = “”)</li>
+<li><strong>contactdef</strong> – param flaglist:</li>
+<li><strong>offset</strong> – param sym: (Default value = 0)</li>
+<li><strong>kwargs</strong> – return:</li>
+<li><strong>protein</strong> – </li>
+<li><strong>flaglist</strong> – (Default value = None)</li>
+<li><strong>sym</strong> – (Default value = True)</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.MapFile.read">
+<code class="descname">read</code><span class="sig-paren">(</span><em>protein</em>, <em>contactdef=5.0</em>, <em>groupby_method='min'</em>, <em>scsc=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFile.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFile.read" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protein</strong> – param contactdef: (Default value = None)</li>
+<li><strong>groupby_method</strong> – param scsc: (Default value = “min”)</li>
+<li><strong>contactdef</strong> – (Default value = 5.0)</li>
+<li><strong>scsc</strong> – (Default value = None)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.MapFile.types">
+<code class="descname">types</code><em class="property"> = {'pconsc1': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': 'ec_score'}, 'pconsc2': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': 'ec_score'}, 'plmc': {'regex': &lt;_sre.SRE_Pattern object at 0x4d72420&gt;, 'score_field': 'plm_score'}, 'metapsicovhb': {'regex': &lt;_sre.SRE_Pattern object at 0x4d7ec70&gt;, 'score_field': 'hbscore'}, 'evfold': {'regex': &lt;_sre.SRE_Pattern object at 0x4d74780&gt;, 'score_field': 'ec_score'}, 'native': {'regex': &lt;_sre.SRE_Pattern object at 0x4d7d8d0&gt;, 'score_field': None}, 'psicov': {'regex': &lt;_sre.SRE_Pattern object at 0x4d75410&gt;, 'score_field': 'ec_score'}, 'metapsicov_stg1': {'regex': &lt;_sre.SRE_Pattern object at 0x4d75410&gt;, 'score_field': 'ec_score'}, 'metapsicov_stg2': {'regex': &lt;_sre.SRE_Pattern object at 0x4d75410&gt;, 'score_field': 'ec_score'}, 'empty': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': None}, 'gremlin': {'regex': &lt;_sre.SRE_Pattern object at 0x4d7de60&gt;, 'score_field': 'scale_score'}, 'bbcontacts': {'regex': &lt;_sre.SRE_Pattern object at 0x4d7f140&gt;, 'score_field': None}, 'default_4': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': None}, 'default_3': {'regex': &lt;_sre.SRE_Pattern object at 0x4d76640&gt;, 'score_field': None}, 'default_2': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': 'score'}, 'default_1': {'regex': &lt;_sre.SRE_Pattern object at 0x4d74500&gt;, 'score_field': 'score'}, 'plm': {'regex': &lt;_sre.SRE_Pattern object at 0x4d72420&gt;, 'score_field': 'plm_score'}, 'pconsc': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': 'ec_score'}, 'plmdca': {'regex': &lt;_sre.SRE_Pattern object at 0x4d72420&gt;, 'score_field': 'plm_score'}, 'native_full': {'regex': &lt;_sre.SRE_Pattern object at 0x4d7d8d0&gt;, 'score_field': None}, 'contactlist': {'regex': &lt;_sre.SRE_Pattern object&gt;, 'score_field': None}, 'plmev': {'regex': &lt;_sre.SRE_Pattern object at 0x4d72420&gt;, 'score_field': 'plm_score'}}</em><a class="headerlink" href="#aria.conbox.reader.MapFile.types" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.MapFile.update_map">
+<code class="descname">update_map</code><span class="sig-paren">(</span><em>resmap</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFile.update_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFile.update_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>resmap</strong> – return:</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.MapFileListReader">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">MapFileListReader</code><span class="sig-paren">(</span><em>cont_def=5.0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFileListReader"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFileListReader" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Reader class for Map files</p>
+<dl class="method">
+<dt id="aria.conbox.reader.MapFileListReader.clear">
+<code class="descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFileListReader.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFileListReader.clear" title="Permalink to this definition">¶</a></dt>
+<dd><p>Initiatize object from scratch object</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.MapFileListReader.read">
+<code class="descname">read</code><span class="sig-paren">(</span><em>maps</em>, <em>maptypes=None</em>, <em>protein=None</em>, <em>scsc=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#MapFileListReader.read"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.MapFileListReader.read" title="Permalink to this definition">¶</a></dt>
+<dd><p>Read contact map files. The generated maps will be accessible in
+<cite>self.maps</cite></p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>maps</strong> – List of Map file paths</li>
+<li><strong>maptypes</strong> – List of Map file types (Default value = None)</li>
+<li><strong>protein</strong> (<em>ariaec.protein.Protein object</em><em> or </em><em>None</em><em>, </em><em>optional</em>) – (Default value = None)</li>
+<li><strong>scsc</strong> (<em>dict</em><em>, </em><em>optional</em>) – Optional dictionary used for Atom Map reduction by selecting only
+one atom in the side chain. (Default value = None)</li>
+<li><strong>kwargs</strong> – Optional arguments used for MapFile readers</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.PDBFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">PDBFile</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#PDBFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.PDBFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.MapFile" title="aria.conbox.reader.MapFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.MapFile</span></code></a></p>
+<p>PDB file</p>
+<dl class="method">
+<dt id="aria.conbox.reader.PDBFile.create_map">
+<code class="descname">create_map</code><span class="sig-paren">(</span><em>protein</em>, <em>contactdef</em>, <em>groupby_method='min'</em>, <em>scsc=None</em>, <em>flaglist=None</em>, <em>sym=True</em>, <em>path=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#PDBFile.create_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.PDBFile.create_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>protein</strong> – </li>
+<li><strong>contactdef</strong> – </li>
+<li><strong>groupby_method</strong> – (Default value = “min”)</li>
+<li><strong>scsc</strong> – (Default value = None)</li>
+<li><strong>flaglist</strong> – (Default value = None)</li>
+<li><strong>sym</strong> – (Default value = True)</li>
+<li><strong>path</strong> – (Default value = “”)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.PDBFile.pdbreg">
+<code class="descname">pdbreg</code><em class="property"> = &lt;_sre.SRE_Pattern object at 0x4d817b0&gt;</em><a class="headerlink" href="#aria.conbox.reader.PDBFile.pdbreg" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.PDBFile.update_map">
+<code class="descname">update_map</code><span class="sig-paren">(</span><em>resmap</em>, <em>sym=True</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#PDBFile.update_map"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.PDBFile.update_map" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>resmap</strong> – param sym:</li>
+<li><strong>sym</strong> – (Default value = True)</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.RegexFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">RegexFile</code><span class="sig-paren">(</span><em>filepath</em>, <em>filetype=''</em>, <em>regex=''</em>, <em>sort=''</em>, <em>default=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#RegexFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.RegexFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>File which can be parsed with a regex</p>
+<dl class="attribute">
+<dt id="aria.conbox.reader.RegexFile.filename">
+<code class="descname">filename</code><a class="headerlink" href="#aria.conbox.reader.RegexFile.filename" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get basename of filepath</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.RegexFile.filepath">
+<code class="descname">filepath</code><a class="headerlink" href="#aria.conbox.reader.RegexFile.filepath" title="Permalink to this definition">¶</a></dt>
+<dd><p>File path</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.reader.RegexFile.load">
+<code class="descname">load</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#RegexFile.load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.RegexFile.load" title="Permalink to this definition">¶</a></dt>
+<dd><p>Fill lines with dictionary. Each key is a line number in the given file
+:return: None</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.reader.TblDistFile">
+<em class="property">class </em><code class="descclassname">aria.conbox.reader.</code><code class="descname">TblDistFile</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/reader.html#TblDistFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.reader.TblDistFile" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.reader.RegexFile" title="aria.conbox.reader.RegexFile"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.reader.RegexFile</span></code></a></p>
+<p>Reader class for TBL Distance restraint file</p>
+<dl class="attribute">
+<dt id="aria.conbox.reader.TblDistFile.filetype">
+<code class="descname">filetype</code><em class="property"> = 'tbldist'</em><a class="headerlink" href="#aria.conbox.reader.TblDistFile.filetype" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.reader.TblDistFile.regex">
+<code class="descname">regex</code><em class="property"> = &lt;_sre.SRE_Pattern object at 0x4d7c8b0&gt;</em><a class="headerlink" href="#aria.conbox.reader.TblDistFile.regex" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.settings">
+<span id="aria-conbox-settings-module"></span><h2>aria.conbox.settings module<a class="headerlink" href="#module-aria.conbox.settings" title="Permalink to this headline">¶</a></h2>
+<p>Settings section</p>
+<dl class="class">
+<dt id="aria.conbox.settings.AriaEcSettings">
+<em class="property">class </em><code class="descclassname">aria.conbox.settings.</code><code class="descname">AriaEcSettings</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#AriaEcSettings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <a class="reference internal" href="#aria.conbox.settings.Settings" title="aria.conbox.settings.Settings"><code class="xref py py-class docutils literal"><span class="pre">aria.conbox.settings.Settings</span></code></a></p>
+<p>Settings object for ariaec
+&#64;DynamicAttrs</p>
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.ARIAPROJ_TEMPLATE">
+<code class="descname">ARIAPROJ_TEMPLATE</code><em class="property"> = 'templates/aria_project_v2.3.0.xml'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.ARIAPROJ_TEMPLATE" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTERLOWERBOUNDS">
+<code class="descname">INTERLOWERBOUNDS</code><em class="property"> = 'data/pdbdists/lowerbounds.inter.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTERLOWERBOUNDS" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTERTARGET">
+<code class="descname">INTERTARGET</code><em class="property"> = 'data/pdbdists/targetdists.inter.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTERTARGET" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTERUPPERBOUNDS">
+<code class="descname">INTERUPPERBOUNDS</code><em class="property"> = 'data/pdbdists/upperbounds.inter.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTERUPPERBOUNDS" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTRALOWERBOUNDS">
+<code class="descname">INTRALOWERBOUNDS</code><em class="property"> = 'data/pdbdists/lowerbounds.intra.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTRALOWERBOUNDS" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTRATARGET">
+<code class="descname">INTRATARGET</code><em class="property"> = 'data/pdbdists/targetdists.intra.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTRATARGET" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.INTRAUPPERBOUNDS">
+<code class="descname">INTRAUPPERBOUNDS</code><em class="property"> = 'data/pdbdists/upperbounds.intra.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.INTRAUPPERBOUNDS" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.SCSC_MIN">
+<code class="descname">SCSC_MIN</code><em class="property"> = 'data/scsc_min.p'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.SCSC_MIN" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.SECTIONS">
+<code class="descname">SECTIONS</code><em class="property"> = ('main', 'setup', 'maplot', 'bbconv', 'contactdef', 'pdbqual', 'pdbdist', 'analysis', 'tbl2xml', 'pdbstat')</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.SECTIONS" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.SS_DIST">
+<code class="descname">SS_DIST</code><em class="property"> = 'data/ss_dist.txt'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.SS_DIST" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.TOPO">
+<code class="descname">TOPO</code><em class="property"> = 'data/topallhdg5.3.pro'</em><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.TOPO" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.infra">
+<code class="descname">infra</code><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.infra" title="Permalink to this definition">¶</a></dt>
+<dd><p>Infrastructure for a specific command
+:return:</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.settings.AriaEcSettings.load_config">
+<code class="descname">load_config</code><span class="sig-paren">(</span><em>configpath</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#AriaEcSettings.load_config"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.load_config" title="Permalink to this definition">¶</a></dt>
+<dd><table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>configpath</strong> – param kwargs:</li>
+<li><strong>**kwargs</strong> – </li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.settings.AriaEcSettings.make_infra">
+<code class="descname">make_infra</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#AriaEcSettings.make_infra"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.make_infra" title="Permalink to this definition">¶</a></dt>
+<dd><p>Generate infrastructure</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.scsc_min">
+<code class="descname">scsc_min</code><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.scsc_min" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get contact index for side chains in package or config file
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.ssdist">
+<code class="descname">ssdist</code><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.ssdist" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get distance file for secondary structures in the package or in config
+file
+:return:</p>
+</dd></dl>
+
+<dl class="attribute">
+<dt id="aria.conbox.settings.AriaEcSettings.template">
+<code class="descname">template</code><a class="headerlink" href="#aria.conbox.settings.AriaEcSettings.template" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get template files in config file or in the package
+:return:</p>
+</dd></dl>
+
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.settings.Setting">
+<em class="property">class </em><code class="descclassname">aria.conbox.settings.</code><code class="descname">Setting</code><a class="reference internal" href="_modules/aria/conbox/settings.html#Setting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.Setting" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Main setting object with args and config section</p>
+</dd></dl>
+
+<dl class="class">
+<dt id="aria.conbox.settings.Settings">
+<em class="property">class </em><code class="descclassname">aria.conbox.settings.</code><code class="descname">Settings</code><span class="sig-paren">(</span><em>sections</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#Settings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.Settings" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Group settings with each section corresponding to a Setting object</p>
+<dl class="method">
+<dt id="aria.conbox.settings.Settings.load_config">
+<code class="descname">load_config</code><span class="sig-paren">(</span><em>configpath</em>, <em>pkg=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#Settings.load_config"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.Settings.load_config" title="Permalink to this definition">¶</a></dt>
+<dd><p>Use ConfigParser module to load config sections</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>pkg</strong> – file is inside the package (Default value = False)</li>
+<li><strong>configpath</strong> – return:</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.settings.Settings.write_config">
+<code class="descname">write_config</code><span class="sig-paren">(</span><em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/settings.html#Settings.write_config"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.settings.Settings.write_config" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write config of all sections into another file</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>filename</strong> – </td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox.setup">
+<span id="aria-conbox-setup-module"></span><h2>aria.conbox.setup module<a class="headerlink" href="#module-aria.conbox.setup" title="Permalink to this headline">¶</a></h2>
+<p>Input/Output aria_ec scripts</p>
+<dl class="class">
+<dt id="aria.conbox.setup.AriaEcSetup">
+<em class="property">class </em><code class="descclassname">aria.conbox.setup.</code><code class="descname">AriaEcSetup</code><span class="sig-paren">(</span><em>settings</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/setup.html#AriaEcSetup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.setup.AriaEcSetup" title="Permalink to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p>
+<p>Aria Ec Setup protocol</p>
+<dl class="method">
+<dt id="aria.conbox.setup.AriaEcSetup.run">
+<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/setup.html#AriaEcSetup.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.setup.AriaEcSetup.run" title="Permalink to this definition">¶</a></dt>
+<dd><p>main method
+:return:</p>
+</dd></dl>
+
+<dl class="method">
+<dt id="aria.conbox.setup.AriaEcSetup.write_optional_files">
+<code class="descname">write_optional_files</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/aria/conbox/setup.html#AriaEcSetup.write_optional_files"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#aria.conbox.setup.AriaEcSetup.write_optional_files" title="Permalink to this definition">¶</a></dt>
+<dd><p>Write filtered contacts &amp; distance maps (.csv)</p>
+</dd></dl>
+
+</dd></dl>
+
+</div>
+<div class="section" id="module-aria.conbox">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-aria.conbox" title="Permalink to this headline">¶</a></h2>
+<p>ARIA Evolutive Contact toolbox</p>
+</div>
+</div>
+
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'./',
+            VERSION:'0.3',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/glossary.html b/examples-dev/olds/_build/html/ariaec.test.html
similarity index 77%
rename from docs/_build/html/glossary.html
rename to examples-dev/olds/_build/html/ariaec.test.html
index fc38f6c..b22619c 100644
--- a/docs/_build/html/glossary.html
+++ b/examples-dev/olds/_build/html/ariaec.test.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>&lt;no title&gt; &mdash; ARIA 4 documentation</title>
+  <title>ariaec.test package &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -35,8 +35,7 @@
         <link rel="index" title="Index"
               href="genindex.html"/>
         <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -55,7 +54,7 @@
           
 
           
-            <a href="index.html" class="icon icon-home"> ARIA
+            <a href="index.html" class="icon icon-home"> Aria-EC
           
 
           
@@ -65,7 +64,7 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
@@ -90,7 +89,11 @@
             
             
               <!-- Local TOC -->
-              <div class="local-toc"><ul class="simple">
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">ariaec.test package</a><ul>
+<li><a class="reference internal" href="#module-contents">Module contents</a></li>
+</ul>
+</li>
 </ul>
 </div>
             
@@ -105,7 +108,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
+          <a href="index.html">Aria-EC</a>
         
       </nav>
 
@@ -135,13 +138,13 @@
     
       <li><a href="index.html">Docs</a> &raquo;</li>
         
-      <li>&lt;no title&gt;</li>
+      <li>ariaec.test package</li>
     
     
       <li class="wy-breadcrumbs-aside">
         
             
-            <a href="_sources/glossary.rst.txt" rel="nofollow"> View page source</a>
+            <a href="_sources/ariaec.test.rst.txt" rel="nofollow"> View page source</a>
           
         
       </li>
@@ -154,7 +157,13 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  
+  <div class="section" id="ariaec-test-package">
+<h1>ariaec.test package<a class="headerlink" href="#ariaec-test-package" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="module-contents">
+<h2>Module contents<a class="headerlink" href="#module-contents" title="Permalink to this headline">¶</a></h2>
+</div>
+</div>
+
 
            </div>
            <div class="articleComments">
@@ -168,7 +177,7 @@
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -190,7 +199,7 @@
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
             URL_ROOT:'./',
-            VERSION:'4',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
diff --git a/examples-dev/olds/_build/html/genindex.html b/examples-dev/olds/_build/html/genindex.html
new file mode 100644
index 0000000..7dab38f
--- /dev/null
+++ b/examples-dev/olds/_build/html/genindex.html
@@ -0,0 +1,905 @@
+
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Index &mdash; Aria-EC 0.3 documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  
+  
+    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+  
+
+  
+
+  
+        <link rel="index" title="Index"
+              href="#"/>
+        <link rel="search" title="Search" href="search.html"/>
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/> 
+
+  
+  <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="index.html" class="icon icon-home"> Aria-EC
+          
+
+          
+          </a>
+
+          
+            
+            
+              <div class="version">
+                0.3
+              </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"></div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="index.html">Aria-EC</a>
+        
+      </nav>
+
+
+      
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="index.html">Docs</a> &raquo;</li>
+        
+      <li>Index</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#A"><strong>A</strong></a>
+ | <a href="#B"><strong>B</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
+ | <a href="#E"><strong>E</strong></a>
+ | <a href="#F"><strong>F</strong></a>
+ | <a href="#G"><strong>G</strong></a>
+ | <a href="#H"><strong>H</strong></a>
+ | <a href="#I"><strong>I</strong></a>
+ | <a href="#L"><strong>L</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#N"><strong>N</strong></a>
+ | <a href="#P"><strong>P</strong></a>
+ | <a href="#R"><strong>R</strong></a>
+ | <a href="#S"><strong>S</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ | <a href="#U"><strong>U</strong></a>
+ | <a href="#V"><strong>V</strong></a>
+ | <a href="#W"><strong>W</strong></a>
+ 
+</div>
+<h2 id="A">A</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaAtmMap">AaAtmMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaMap">AaMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.all_reg">all_reg (aria.conbox.protmap.ProteinMap attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProtMapCollection.allcontactmap">allcontactmap (aria.conbox.protmap.ProtMapCollection attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProtMapCollection.alldistmap">alldistmap (aria.conbox.protmap.ProtMapCollection attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProtMapCollection.allscoremap">allscoremap (aria.conbox.protmap.ProtMapCollection attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence">AminoAcidSequence (class in aria.conbox.protein)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.analysis">analysis() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox">aria.conbox (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.analysis">aria.conbox.analysis (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.commands">aria.conbox.commands (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.converter">aria.conbox.converter (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.maplot">aria.conbox.maplot (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.ndconv">aria.conbox.ndconv (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.pdbdist">aria.conbox.pdbdist (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.pdbqual">aria.conbox.pdbqual (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.protein">aria.conbox.protein (module)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#module-aria.conbox.protmap">aria.conbox.protmap (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.reader">aria.conbox.reader (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.settings">aria.conbox.settings (module)</a>
+</li>
+      <li><a href="ariaec.html#module-aria.conbox.setup">aria.conbox.setup (module)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcBbConverter">AriaEcBbConverter (class in aria.conbox.converter)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands">AriaEcCommands (class in aria.conbox.commands)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.maplot.AriaEcContactMap">AriaEcContactMap (class in aria.conbox.maplot)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.pdbqual.AriaEcPdbqual">AriaEcPdbqual (class in aria.conbox.pdbqual)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings">AriaEcSettings (class in aria.conbox.settings)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.setup.AriaEcSetup">AriaEcSetup (class in aria.conbox.setup)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter">AriaEcXMLConverter (class in aria.conbox.converter)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.ARIAPROJ_TEMPLATE">ARIAPROJ_TEMPLATE (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter">AriaXMLConverter (class in aria.conbox.converter)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.atm_list">atm_list() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.atm_product">atm_product() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AtmMap">AtmMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.Atom">Atom (class in aria.conbox.reader)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="B">B</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.bbconv">bbconv() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.commands.check_file">check_file() (in module aria.conbox.commands)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.check_filetype">check_filetype() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFile.check_maptype">check_maptype() (aria.conbox.reader.MapFile method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFile.check_type">check_type (aria.conbox.reader.MapFile attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.check_type">check_type() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.clash_dict">clash_dict (aria.conbox.protmap.MapFilter attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.classification_metrics">classification_metrics() (aria.conbox.protmap.ProteinMap static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFileListReader.clear">clear() (aria.conbox.reader.MapFileListReader method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.analysis.colscatter">colscatter() (in module aria.conbox.analysis)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.command_list">command_list (aria.conbox.commands.AriaEcCommands attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.compare_contactmap">compare_contactmap() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.compareplot">compareplot() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcBbConverter.compute_diversityvalue">compute_diversityvalue() (aria.conbox.converter.AriaEcBbConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.cons_filter">cons_filter() (aria.conbox.protmap.MapFilter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.contact_list">contact_list() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaAtmMap.contact_map">contact_map() (aria.conbox.protmap.AaAtmMap method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AaMap.contact_map">(aria.conbox.protmap.AaMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.contact_map">(aria.conbox.protmap.ProteinMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.contact_map">(aria.conbox.protmap.ResAtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResMap.contact_map">(aria.conbox.protmap.ResMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.contact_map">(aria.conbox.protmap.SsAaAtmMap method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.contact_types">contact_types (aria.conbox.commands.AriaEcCommands attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.ContactMapFile">ContactMapFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.contactset">contactset() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.Atom.coords">coords (aria.conbox.reader.Atom attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaAtmMap.copy">copy() (aria.conbox.protmap.AaAtmMap method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AaMap.copy">(aria.conbox.protmap.AaMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.AtmMap.copy">(aria.conbox.protmap.AtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.Map.copy">(aria.conbox.protmap.Map method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.copy">(aria.conbox.protmap.ProteinMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.copy">(aria.conbox.protmap.ResAtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResMap.copy">(aria.conbox.protmap.ResMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.copy">(aria.conbox.protmap.SsAaAtmMap method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaAtmMap.create_heatmap">create_heatmap() (aria.conbox.protmap.AaAtmMap method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AaMap.create_heatmap">(aria.conbox.protmap.AaMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.create_heatmap">(aria.conbox.protmap.ProteinMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.create_heatmap">(aria.conbox.protmap.ResAtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResMap.create_heatmap">(aria.conbox.protmap.ResMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.create_heatmap">(aria.conbox.protmap.SsAaAtmMap method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaAtmMap.create_index">create_index() (aria.conbox.protmap.AaAtmMap method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AaMap.create_index">(aria.conbox.protmap.AaMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.AtmMap.create_index">(aria.conbox.protmap.AtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.create_index">(aria.conbox.protmap.ProteinMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.create_index">(aria.conbox.protmap.ResAtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResMap.create_index">(aria.conbox.protmap.ResMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.create_index">(aria.conbox.protmap.SsAaAtmMap method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.reader.ContactMapFile.create_map">create_map() (aria.conbox.reader.ContactMapFile method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.reader.DistanceMapFile.create_map">(aria.conbox.reader.DistanceMapFile method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.MapFile.create_map">(aria.conbox.reader.MapFile method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.PDBFile.create_map">(aria.conbox.reader.PDBFile method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.create_settings">create_settings() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.CulledPdbFile">CulledPdbFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.cys_filter">cys_filter() (aria.conbox.protmap.MapFilter static method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.CulledPdbFile.default">default (aria.conbox.reader.CulledPdbFile attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.default_confile">default_confile (aria.conbox.commands.AriaEcCommands attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.deff">deff() (aria.conbox.converter.AriaXMLConverter static method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.desc_list">desc_list (aria.conbox.commands.AriaEcCommands attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.distance_method">distance_method (aria.conbox.protmap.ProteinMap attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.DistanceMapFile">DistanceMapFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProtMapCollection.distmap">distmap (aria.conbox.protmap.ProtMapCollection attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="E">E</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.end_reg">end_reg (aria.conbox.protein.AminoAcidSequence attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.analysis.EnsembleAnalysis">EnsembleAnalysis (class in aria.conbox.analysis)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="F">F</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.RegexFile.filename">filename (aria.conbox.reader.RegexFile attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.RegexFile.filepath">filepath (aria.conbox.reader.RegexFile attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.CulledPdbFile.filetype">filetype (aria.conbox.reader.CulledPdbFile attribute)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.reader.TblDistFile.filetype">(aria.conbox.reader.TblDistFile attribute)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.filter_types">filter_types (aria.conbox.protmap.MapFilter attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="G">G</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.get_dist">get_dist() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.pdbdist.PDBDist.get_proteinblocks">get_proteinblocks() (aria.conbox.pdbdist.PDBDist static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.pdbdist.PDBDist.get_secstructs">get_secstructs() (aria.conbox.pdbdist.PDBDist static method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="H">H</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.heavy_reg">heavy_reg (aria.conbox.protmap.ProteinMap attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.humanidx">humanidx (aria.conbox.protein.AminoAcidSequence attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="I">I</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.index">index (aria.conbox.protein.SsList attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.indxplus_reg">indxplus_reg (aria.conbox.protein.SsList attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.infra">infra (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTERLOWERBOUNDS">INTERLOWERBOUNDS (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTERTARGET">INTERTARGET (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTERUPPERBOUNDS">INTERUPPERBOUNDS (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTRALOWERBOUNDS">INTRALOWERBOUNDS (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTRATARGET">INTRATARGET (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.INTRAUPPERBOUNDS">INTRAUPPERBOUNDS (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="L">L</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.RegexFile.load">load() (aria.conbox.reader.RegexFile method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.load_config">load_config() (aria.conbox.settings.AriaEcSettings method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.settings.Settings.load_config">(aria.conbox.settings.Settings method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.commands.main">main() (in module aria.conbox.commands)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.make_infra">make_infra() (aria.conbox.settings.AriaEcSettings method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map">Map (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFile">MapFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFileListReader">MapFileListReader (class in aria.conbox.reader)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter">MapFilter (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.maplot">maplot (aria.conbox.protmap.ProteinMap attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.maplot">maplot() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.molecule">molecule (aria.conbox.converter.AriaXMLConverter attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.mtype_choices">mtype_choices (aria.conbox.protmap.Map attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="N">N</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.Atom.name">name (aria.conbox.reader.Atom attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.nd_filter">nd_filter() (aria.conbox.protmap.MapFilter method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.neighcontact">neighcontact() (aria.conbox.converter.AriaEcXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.neighcontacts">neighcontacts() (aria.conbox.converter.AriaEcXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.ndconv.net_deconv">net_deconv() (in module aria.conbox.ndconv)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.analysis.EnsembleAnalysis.pca_projection">pca_projection() (aria.conbox.analysis.EnsembleAnalysis static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.pdbdist.PDBDist">PDBDist (class in aria.conbox.pdbdist)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.pdbdist">pdbdist() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.pdbdist.PDBDist.pdbdists">pdbdists() (aria.conbox.pdbdist.PDBDist method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.PDBFile">PDBFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.pdbqual">pdbqual() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.PDBFile.pdbreg">pdbreg (aria.conbox.reader.PDBFile attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.pdbstat">pdbstat() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.plotflush">plotflush() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.pos_filter">pos_filter() (aria.conbox.protmap.MapFilter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.Protein">Protein (class in aria.conbox.protein)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap">ProteinMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProtMapCollection">ProtMapCollection (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.psipred2_reg">psipred2_reg (aria.conbox.protein.SsList attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.psipred3_reg">psipred3_reg (aria.conbox.protein.SsList attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.psipred_reg">psipred_reg (aria.conbox.protein.SsList attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="R">R</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.read">read() (aria.conbox.protein.AminoAcidSequence method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protein.SsList.read">(aria.conbox.protein.SsList method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.MapFile.read">(aria.conbox.reader.MapFile method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.MapFileListReader.read">(aria.conbox.reader.MapFileListReader method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.read_indextableplus">read_indextableplus() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.read_pdb">read_pdb() (aria.conbox.converter.AriaXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.read_psipred">read_psipred() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.read_seq">read_seq() (aria.conbox.converter.AriaXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.read_ssdist">read_ssdist() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.ReadableFile">ReadableFile (class in aria.conbox.commands)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.readtopo">readtopo() (aria.conbox.protein.AminoAcidSequence method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.AaMap.reduce">reduce() (aria.conbox.protmap.AaMap method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AtmMap.reduce">(aria.conbox.protmap.AtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.Map.reduce">(aria.conbox.protmap.Map method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.reduce">(aria.conbox.protmap.ProteinMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.reduce">(aria.conbox.protmap.ResAtmMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.reduce">(aria.conbox.protmap.SsAaAtmMap method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.reader.CulledPdbFile.regex">regex (aria.conbox.reader.CulledPdbFile attribute)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.reader.TblDistFile.regex">(aria.conbox.reader.TblDistFile attribute)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.reader.RegexFile">RegexFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.remove">remove() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.report">report() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap">ResAtmMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ResMap">ResMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.restatement_reg">restatement_reg (aria.conbox.protein.AminoAcidSequence attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.analysis.EnsembleAnalysis.run">run() (aria.conbox.analysis.EnsembleAnalysis method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.run">(aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.converter.AriaEcBbConverter.run">(aria.conbox.converter.AriaEcBbConverter method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.maplot.AriaEcContactMap.run">(aria.conbox.maplot.AriaEcContactMap method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.pdbdist.PDBDist.run">(aria.conbox.pdbdist.PDBDist method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.pdbqual.AriaEcPdbqual.run">(aria.conbox.pdbqual.AriaEcPdbqual method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.setup.AriaEcSetup.run">(aria.conbox.setup.AriaEcSetup method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.run_tbl2xml">run_tbl2xml() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="S">S</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.saveplot">saveplot() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.SCSC_MIN">SCSC_MIN (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.scsc_min">scsc_min (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.SECTIONS">SECTIONS (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.seq_sublist">seq_sublist() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.sequence">sequence (aria.conbox.protein.SsList attribute)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protmap.AaMap.sequence">(aria.conbox.protmap.AaMap attribute)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.sequence">(aria.conbox.protmap.ProteinMap attribute)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResAtmMap.sequence">(aria.conbox.protmap.ResAtmMap attribute)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.protmap.ResMap.sequence">(aria.conbox.protmap.ResMap attribute)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.protein.Protein.set_aa_sequence">set_aa_sequence() (aria.conbox.protein.Protein method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.Protein.set_sec_struct">set_sec_struct() (aria.conbox.protein.Protein method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.set_value">set_value() (aria.conbox.protmap.Map method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.settings.Setting">Setting (class in aria.conbox.settings)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.Settings">Settings (class in aria.conbox.settings)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.setup">setup() (aria.conbox.commands.AriaEcCommands method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.sortedset">sortedset() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.SS_DIST">SS_DIST (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.ss_dist_reg">ss_dist_reg (aria.conbox.protein.SsList attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap.ss_types">ss_types (aria.conbox.protmap.SsAaAtmMap attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.SsAaAtmMap">SsAaAtmMap (class in aria.conbox.protmap)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.ssclash_filter">ssclash_filter() (aria.conbox.protmap.MapFilter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.ssdist">ssdist (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList">SsList (class in aria.conbox.protein)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.startres_reg">startres_reg (aria.conbox.protein.AminoAcidSequence attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.subfill">subfill() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.Protein.sync_index">sync_index() (aria.conbox.protein.Protein static method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.targetdistmaps">targetdistmaps() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.commands.AriaEcCommands.tbl2xml">tbl2xml() (aria.conbox.commands.AriaEcCommands method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.tbl2xml">(aria.conbox.converter.AriaEcXMLConverter static method)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.reader.TblDistFile">TblDistFile (class in aria.conbox.reader)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.template">template (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.to_series">to_series() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.topmap">topmap() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.AriaEcSettings.TOPO">TOPO (aria.conbox.settings.AriaEcSettings attribute)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.AminoAcidSequence.topology">topology (aria.conbox.protein.AminoAcidSequence attribute)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.protein.Protein.topology">(aria.conbox.protein.Protein attribute)</a>
+</li>
+      </ul></li>
+      <li><a href="ariaec.html#aria.conbox.reader.MapFile.types">types (aria.conbox.reader.MapFile attribute)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="U">U</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.upd_mol">upd_mol() (aria.conbox.converter.AriaXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.Map.update">update() (aria.conbox.protmap.Map method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.reader.ContactMapFile.update_map">update_map() (aria.conbox.reader.ContactMapFile method)</a>
+
+      <ul>
+        <li><a href="ariaec.html#aria.conbox.reader.DistanceMapFile.update_map">(aria.conbox.reader.DistanceMapFile method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.MapFile.update_map">(aria.conbox.reader.MapFile method)</a>
+</li>
+        <li><a href="ariaec.html#aria.conbox.reader.PDBFile.update_map">(aria.conbox.reader.PDBFile method)</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="V">V</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.analysis.EnsembleAnalysis.violation_analysis">violation_analysis() (aria.conbox.analysis.EnsembleAnalysis static method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="W">W</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.write_ariaproject">write_ariaproject() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.settings.Settings.write_config">write_config() (aria.conbox.settings.Settings method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.ProteinMap.write_contacts">write_contacts() (aria.conbox.protmap.ProteinMap method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.write_dihedral_tbl">write_dihedral_tbl() (aria.conbox.converter.AriaXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.write_dist_xml">write_dist_xml() (aria.conbox.converter.AriaXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protmap.MapFilter.write_filtout">write_filtout() (aria.conbox.protmap.MapFilter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.write_hb_tbl">write_hb_tbl() (aria.conbox.converter.AriaXMLConverter method)</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.write_map_restraint">write_map_restraint() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.write_maplist_restraints">write_maplist_restraints() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.setup.AriaEcSetup.write_optional_files">write_optional_files() (aria.conbox.setup.AriaEcSetup method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.Protein.write_seq">write_seq() (aria.conbox.protein.Protein method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.write_ssdist_tbl">write_ssdist_tbl() (aria.conbox.converter.AriaXMLConverter static method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.protein.SsList.write_ssfasta">write_ssfasta() (aria.conbox.protein.SsList method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaEcXMLConverter.write_tbl_restraints">write_tbl_restraints() (aria.conbox.converter.AriaEcXMLConverter method)</a>
+</li>
+      <li><a href="ariaec.html#aria.conbox.converter.AriaXMLConverter.write_xmlseq">write_xmlseq() (aria.conbox.converter.AriaXMLConverter method)</a>
+</li>
+  </ul></td>
+</tr></table>
+
+
+
+           </div>
+           <div class="articleComments">
+            
+           </div>
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    <script type="text/javascript">
+        var DOCUMENTATION_OPTIONS = {
+            URL_ROOT:'./',
+            VERSION:'0.3',
+            COLLAPSE_INDEX:false,
+            FILE_SUFFIX:'.html',
+            HAS_SOURCE:  true,
+            SOURCELINK_SUFFIX: '.txt'
+        };
+    </script>
+      <script type="text/javascript" src="_static/jquery.js"></script>
+      <script type="text/javascript" src="_static/underscore.js"></script>
+      <script type="text/javascript" src="_static/doctools.js"></script>
+      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+
+  
+
+  
+  
+    <script type="text/javascript" src="_static/js/theme.js"></script>
+  
+
+  
+  
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.StickyNav.enable();
+      });
+  </script>
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/index.html b/examples-dev/olds/_build/html/index.html
similarity index 84%
rename from docs/_build/html/index.html
rename to examples-dev/olds/_build/html/index.html
index 4dc4239..775a39d 100644
--- a/docs/_build/html/index.html
+++ b/examples-dev/olds/_build/html/index.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Welcome to ARIAEC’s documentation! &mdash; ARIA 4 documentation</title>
+  <title>Welcome to Aria-EC’s documentation! &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -35,8 +35,7 @@
         <link rel="index" title="Index"
               href="genindex.html"/>
         <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="#"/> 
+    <link rel="top" title="Aria-EC 0.3 documentation" href="#"/> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -55,7 +54,7 @@
           
 
           
-            <a href="#" class="icon icon-home"> ARIA
+            <a href="#" class="icon icon-home"> Aria-EC
           
 
           
@@ -65,7 +64,7 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
@@ -91,7 +90,7 @@
             
               <!-- Local TOC -->
               <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">Welcome to ARIAEC’s documentation!</a></li>
+<li><a class="reference internal" href="#">Welcome to Aria-EC’s documentation!</a></li>
 <li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
 </ul>
 </div>
@@ -107,7 +106,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="#">ARIA</a>
+          <a href="#">Aria-EC</a>
         
       </nav>
 
@@ -137,7 +136,7 @@
     
       <li><a href="#">Docs</a> &raquo;</li>
         
-      <li>Welcome to ARIAEC’s documentation!</li>
+      <li>Welcome to Aria-EC’s documentation!</li>
     
     
       <li class="wy-breadcrumbs-aside">
@@ -156,8 +155,8 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="welcome-to-ariaec-s-documentation">
-<h1>Welcome to ARIAEC’s documentation!<a class="headerlink" href="#welcome-to-ariaec-s-documentation" title="Permalink to this headline">¶</a></h1>
+  <div class="section" id="welcome-to-aria-ec-s-documentation">
+<h1>Welcome to Aria-EC’s documentation!<a class="headerlink" href="#welcome-to-aria-ec-s-documentation" title="Permalink to this headline">¶</a></h1>
 <div class="toctree-wrapper compound">
 </div>
 </div>
@@ -183,7 +182,7 @@
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -205,7 +204,7 @@
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
             URL_ROOT:'./',
-            VERSION:'4',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
diff --git a/docs/_build/html/modules.html b/examples-dev/olds/_build/html/modules.html
similarity index 89%
rename from docs/_build/html/modules.html
rename to examples-dev/olds/_build/html/modules.html
index 931ee32..215b78d 100644
--- a/docs/_build/html/modules.html
+++ b/examples-dev/olds/_build/html/modules.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>ariaec &mdash; ARIA 4 documentation</title>
+  <title>ariaec &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -35,8 +35,7 @@
         <link rel="index" title="Index"
               href="genindex.html"/>
         <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -55,7 +54,7 @@
           
 
           
-            <a href="index.html" class="icon icon-home"> ARIA
+            <a href="index.html" class="icon icon-home"> Aria-EC
           
 
           
@@ -65,7 +64,7 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
@@ -106,7 +105,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
+          <a href="index.html">Aria-EC</a>
         
       </nav>
 
@@ -174,7 +173,7 @@
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -196,7 +195,7 @@
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
             URL_ROOT:'./',
-            VERSION:'4',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
diff --git a/examples-dev/olds/_build/html/objects.inv b/examples-dev/olds/_build/html/objects.inv
new file mode 100644
index 0000000000000000000000000000000000000000..c900d64e5731d3f63b395fad172e6a70709faee8
GIT binary patch
literal 1991
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
ZK4|Fu`SuX(uDRQm?&ouB^1n2T?veVp*#Q6m

literal 0
HcmV?d00001

diff --git a/docs/_build/html/copyright.html b/examples-dev/olds/_build/html/py-modindex.html
similarity index 50%
rename from docs/_build/html/copyright.html
rename to examples-dev/olds/_build/html/py-modindex.html
index fe1f0a9..83c1145 100644
--- a/docs/_build/html/copyright.html
+++ b/examples-dev/olds/_build/html/py-modindex.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Sphinx authors &mdash; ARIA 4 documentation</title>
+  <title>Python Module Index &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -35,8 +35,10 @@
         <link rel="index" title="Index"
               href="genindex.html"/>
         <link rel="search" title="Search" href="search.html"/>
-        <link rel="copyright" title="Copyright" href="#"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/>
+ 
+
+
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -55,7 +57,7 @@
           
 
           
-            <a href="index.html" class="icon icon-home"> ARIA
+            <a href="index.html" class="icon icon-home"> Aria-EC
           
 
           
@@ -65,7 +67,7 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
@@ -90,10 +92,7 @@
             
             
               <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">Sphinx authors</a></li>
-</ul>
-</div>
+              <div class="local-toc"></div>
             
           
         </div>
@@ -106,7 +105,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
+          <a href="index.html">Aria-EC</a>
         
       </nav>
 
@@ -136,14 +135,12 @@
     
       <li><a href="index.html">Docs</a> &raquo;</li>
         
-      <li>Sphinx authors</li>
+      <li>Python Module Index</li>
     
     
       <li class="wy-breadcrumbs-aside">
         
             
-            <a href="_sources/copyright.rst.txt" rel="nofollow"> View page source</a>
-          
         
       </li>
     
@@ -155,32 +152,89 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <div class="section" id="sphinx-authors">
-<span id="copyright"></span><h1>Sphinx authors<a class="headerlink" href="#sphinx-authors" title="Permalink to this headline">¶</a></h1>
-<dl class="docutils">
-<dt>“”“</dt>
-<dd><p class="first">ARIA – Ambiguous Restraints for Iterative Assignment</p>
-<blockquote class="last">
-<div><p>A software for automated NOE assignment</p>
-<blockquote>
-<div>Version 2.3</div></blockquote>
-</div></blockquote>
-</dd>
-<dt>Copyright (C) Benjamin Bardiaux, Michael Habeck, Therese Malliavin,</dt>
-<dd>Wolfgang Rieping, and Michael Nilges</dd>
-</dl>
-<p>All rights reserved.</p>
-<p>NO WARRANTY. This software package is provided ‘as is’ without warranty of
-any kind, expressed or implied, including, but not limited to the implied
-warranties of merchantability and fitness for a particular purpose or
-a warranty of non-infringement.</p>
-<p>Distribution of substantively modified versions of this module is
-prohibited without the explicit permission of the copyright holders.</p>
-<p>$Author: bardiaux $
-$Revision: 1.1.1.1 $
-$Date: 2010/03/23 15:27:16 $
-“”“</p>
-</div>
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-a"><strong>a</strong></a>
+   </div>
+
+   <table class="indextable modindextable">
+     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
+     <tr class="cap" id="cap-a"><td></td><td>
+       <strong>a</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <code class="xref">aria</code></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox"><code class="xref">aria.conbox</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.analysis"><code class="xref">aria.conbox.analysis</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.commands"><code class="xref">aria.conbox.commands</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.converter"><code class="xref">aria.conbox.converter</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.maplot"><code class="xref">aria.conbox.maplot</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.ndconv"><code class="xref">aria.conbox.ndconv</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.pdbdist"><code class="xref">aria.conbox.pdbdist</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.pdbqual"><code class="xref">aria.conbox.pdbqual</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.protein"><code class="xref">aria.conbox.protein</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.protmap"><code class="xref">aria.conbox.protmap</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.reader"><code class="xref">aria.conbox.reader</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.settings"><code class="xref">aria.conbox.settings</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="ariaec.html#module-aria.conbox.setup"><code class="xref">aria.conbox.setup</code></a></td><td>
+       <em></em></td></tr>
+   </table>
 
 
            </div>
@@ -195,7 +249,7 @@ $Date: 2010/03/23 15:27:16 $
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="#">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -217,7 +271,7 @@ $Date: 2010/03/23 15:27:16 $
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
             URL_ROOT:'./',
-            VERSION:'4',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
diff --git a/docs/_build/html/search.html b/examples-dev/olds/_build/html/search.html
similarity index 89%
rename from docs/_build/html/search.html
rename to examples-dev/olds/_build/html/search.html
index f650546..392f0e7 100644
--- a/docs/_build/html/search.html
+++ b/examples-dev/olds/_build/html/search.html
@@ -8,7 +8,7 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
-  <title>Search &mdash; ARIA 4 documentation</title>
+  <title>Search &mdash; Aria-EC 0.3 documentation</title>
   
 
   
@@ -35,8 +35,7 @@
         <link rel="index" title="Index"
               href="genindex.html"/>
         <link rel="search" title="Search" href="#"/>
-        <link rel="copyright" title="Copyright" href="copyright.html"/>
-    <link rel="top" title="ARIA 4 documentation" href="index.html"/> 
+    <link rel="top" title="Aria-EC 0.3 documentation" href="index.html"/> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -55,7 +54,7 @@
           
 
           
-            <a href="index.html" class="icon icon-home"> ARIA
+            <a href="index.html" class="icon icon-home"> Aria-EC
           
 
           
@@ -65,7 +64,7 @@
             
             
               <div class="version">
-                2
+                0.3
               </div>
             
           
@@ -103,7 +102,7 @@
       <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
         
           <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
-          <a href="index.html">ARIA</a>
+          <a href="index.html">Aria-EC</a>
         
       </nav>
 
@@ -174,7 +173,7 @@
 
   <div role="contentinfo">
     <p>
-        &copy; <a href="copyright.html">Copyright</a> 2017, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
+        &copy; Copyright 2017, Fabrice Allain, Benjamin Bardiaux, Michael Habeck, Therese Malliavin, Wolfgang Rieping, and Michael Nilges.
 
     </p>
   </div>
@@ -196,7 +195,7 @@
     <script type="text/javascript">
         var DOCUMENTATION_OPTIONS = {
             URL_ROOT:'./',
-            VERSION:'4',
+            VERSION:'0.3',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
             HAS_SOURCE:  true,
diff --git a/examples-dev/olds/_build/html/searchindex.js b/examples-dev/olds/_build/html/searchindex.js
new file mode 100644
index 0000000..f7428e4
--- /dev/null
+++ b/examples-dev/olds/_build/html/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({docnames:["ariaec","ariaec.test","index","modules"],envversion:52,filenames:["ariaec.rst","ariaec.test.rst","index.rst","modules.rst"],objects:{"aria.conbox":{analysis:[0,0,0,"-"],commands:[0,0,0,"-"],converter:[0,0,0,"-"],maplot:[0,0,0,"-"],ndconv:[0,0,0,"-"],pdbdist:[0,0,0,"-"],pdbqual:[0,0,0,"-"],protein:[0,0,0,"-"],protmap:[0,0,0,"-"],reader:[0,0,0,"-"],settings:[0,0,0,"-"],setup:[0,0,0,"-"]},"aria.conbox.analysis":{EnsembleAnalysis:[0,1,1,""],colscatter:[0,4,1,""]},"aria.conbox.analysis.EnsembleAnalysis":{pca_projection:[0,2,1,""],run:[0,3,1,""],violation_analysis:[0,2,1,""]},"aria.conbox.commands":{AriaEcCommands:[0,1,1,""],ReadableFile:[0,1,1,""],check_file:[0,4,1,""],main:[0,4,1,""]},"aria.conbox.commands.AriaEcCommands":{analysis:[0,3,1,""],bbconv:[0,3,1,""],command_list:[0,5,1,""],contact_types:[0,5,1,""],create_settings:[0,3,1,""],default_confile:[0,5,1,""],desc_list:[0,5,1,""],maplot:[0,3,1,""],pdbdist:[0,3,1,""],pdbqual:[0,3,1,""],pdbstat:[0,3,1,""],run:[0,3,1,""],setup:[0,3,1,""],tbl2xml:[0,3,1,""]},"aria.conbox.converter":{AriaEcBbConverter:[0,1,1,""],AriaEcXMLConverter:[0,1,1,""],AriaXMLConverter:[0,1,1,""]},"aria.conbox.converter.AriaEcBbConverter":{compute_diversityvalue:[0,2,1,""],run:[0,3,1,""]},"aria.conbox.converter.AriaEcXMLConverter":{atm_list:[0,3,1,""],atm_product:[0,3,1,""],get_dist:[0,3,1,""],neighcontact:[0,2,1,""],neighcontacts:[0,2,1,""],run_tbl2xml:[0,3,1,""],targetdistmaps:[0,3,1,""],tbl2xml:[0,2,1,""],write_ariaproject:[0,3,1,""],write_map_restraint:[0,3,1,""],write_maplist_restraints:[0,3,1,""],write_tbl_restraints:[0,3,1,""]},"aria.conbox.converter.AriaXMLConverter":{deff:[0,2,1,""],molecule:[0,5,1,""],read_pdb:[0,3,1,""],read_seq:[0,3,1,""],upd_mol:[0,2,1,""],write_dihedral_tbl:[0,2,1,""],write_dist_xml:[0,2,1,""],write_hb_tbl:[0,3,1,""],write_ssdist_tbl:[0,2,1,""],write_xmlseq:[0,3,1,""]},"aria.conbox.maplot":{AriaEcContactMap:[0,1,1,""]},"aria.conbox.maplot.AriaEcContactMap":{run:[0,3,1,""]},"aria.conbox.ndconv":{net_deconv:[0,4,1,""]},"aria.conbox.pdbdist":{PDBDist:[0,1,1,""]},"aria.conbox.pdbdist.PDBDist":{get_proteinblocks:[0,2,1,""],get_secstructs:[0,2,1,""],pdbdists:[0,3,1,""],run:[0,3,1,""]},"aria.conbox.pdbqual":{AriaEcPdbqual:[0,1,1,""]},"aria.conbox.pdbqual.AriaEcPdbqual":{run:[0,3,1,""]},"aria.conbox.protein":{AminoAcidSequence:[0,1,1,""],Protein:[0,1,1,""],SsList:[0,1,1,""]},"aria.conbox.protein.AminoAcidSequence":{end_reg:[0,5,1,""],humanidx:[0,5,1,""],read:[0,3,1,""],readtopo:[0,3,1,""],restatement_reg:[0,5,1,""],startres_reg:[0,5,1,""],topology:[0,5,1,""]},"aria.conbox.protein.Protein":{set_aa_sequence:[0,3,1,""],set_sec_struct:[0,3,1,""],sync_index:[0,2,1,""],topology:[0,5,1,""],write_seq:[0,3,1,""]},"aria.conbox.protein.SsList":{check_filetype:[0,3,1,""],index:[0,5,1,""],indxplus_reg:[0,5,1,""],psipred2_reg:[0,5,1,""],psipred3_reg:[0,5,1,""],psipred_reg:[0,5,1,""],read:[0,3,1,""],read_indextableplus:[0,3,1,""],read_psipred:[0,3,1,""],read_ssdist:[0,3,1,""],seq_sublist:[0,3,1,""],sequence:[0,5,1,""],ss_dist_reg:[0,5,1,""],write_ssfasta:[0,3,1,""]},"aria.conbox.protmap":{AaAtmMap:[0,1,1,""],AaMap:[0,1,1,""],AtmMap:[0,1,1,""],Map:[0,1,1,""],MapFilter:[0,1,1,""],ProtMapCollection:[0,1,1,""],ProteinMap:[0,1,1,""],ResAtmMap:[0,1,1,""],ResMap:[0,1,1,""],SsAaAtmMap:[0,1,1,""]},"aria.conbox.protmap.AaAtmMap":{contact_map:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""]},"aria.conbox.protmap.AaMap":{contact_map:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""],reduce:[0,3,1,""],sequence:[0,5,1,""]},"aria.conbox.protmap.AtmMap":{copy:[0,3,1,""],create_index:[0,3,1,""],reduce:[0,3,1,""]},"aria.conbox.protmap.Map":{check_type:[0,3,1,""],copy:[0,3,1,""],mtype_choices:[0,5,1,""],reduce:[0,3,1,""],remove:[0,3,1,""],set_value:[0,3,1,""],sortedset:[0,3,1,""],subfill:[0,3,1,""],to_series:[0,3,1,""],topmap:[0,3,1,""],update:[0,3,1,""]},"aria.conbox.protmap.MapFilter":{clash_dict:[0,5,1,""],cons_filter:[0,3,1,""],cys_filter:[0,2,1,""],filter_types:[0,5,1,""],nd_filter:[0,3,1,""],pos_filter:[0,3,1,""],ssclash_filter:[0,2,1,""],write_filtout:[0,2,1,""]},"aria.conbox.protmap.ProtMapCollection":{allcontactmap:[0,5,1,""],alldistmap:[0,5,1,""],allscoremap:[0,5,1,""],distmap:[0,5,1,""]},"aria.conbox.protmap.ProteinMap":{all_reg:[0,5,1,""],classification_metrics:[0,2,1,""],compare_contactmap:[0,3,1,""],compareplot:[0,3,1,""],contact_list:[0,3,1,""],contact_map:[0,3,1,""],contactset:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""],distance_method:[0,5,1,""],heavy_reg:[0,5,1,""],maplot:[0,5,1,""],plotflush:[0,3,1,""],reduce:[0,3,1,""],report:[0,3,1,""],saveplot:[0,3,1,""],sequence:[0,5,1,""],write_contacts:[0,3,1,""]},"aria.conbox.protmap.ResAtmMap":{contact_map:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""],reduce:[0,3,1,""],sequence:[0,5,1,""]},"aria.conbox.protmap.ResMap":{contact_map:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""],sequence:[0,5,1,""]},"aria.conbox.protmap.SsAaAtmMap":{contact_map:[0,3,1,""],copy:[0,3,1,""],create_heatmap:[0,3,1,""],create_index:[0,3,1,""],reduce:[0,3,1,""],ss_types:[0,5,1,""]},"aria.conbox.reader":{Atom:[0,1,1,""],ContactMapFile:[0,1,1,""],CulledPdbFile:[0,1,1,""],DistanceMapFile:[0,1,1,""],MapFile:[0,1,1,""],MapFileListReader:[0,1,1,""],PDBFile:[0,1,1,""],RegexFile:[0,1,1,""],TblDistFile:[0,1,1,""]},"aria.conbox.reader.Atom":{coords:[0,5,1,""],name:[0,5,1,""]},"aria.conbox.reader.ContactMapFile":{create_map:[0,3,1,""],update_map:[0,3,1,""]},"aria.conbox.reader.CulledPdbFile":{"default":[0,5,1,""],filetype:[0,5,1,""],regex:[0,5,1,""]},"aria.conbox.reader.DistanceMapFile":{create_map:[0,3,1,""],update_map:[0,3,1,""]},"aria.conbox.reader.MapFile":{check_maptype:[0,3,1,""],check_type:[0,5,1,""],create_map:[0,3,1,""],read:[0,3,1,""],types:[0,5,1,""],update_map:[0,3,1,""]},"aria.conbox.reader.MapFileListReader":{clear:[0,3,1,""],read:[0,3,1,""]},"aria.conbox.reader.PDBFile":{create_map:[0,3,1,""],pdbreg:[0,5,1,""],update_map:[0,3,1,""]},"aria.conbox.reader.RegexFile":{filename:[0,5,1,""],filepath:[0,5,1,""],load:[0,3,1,""]},"aria.conbox.reader.TblDistFile":{filetype:[0,5,1,""],regex:[0,5,1,""]},"aria.conbox.settings":{AriaEcSettings:[0,1,1,""],Setting:[0,1,1,""],Settings:[0,1,1,""]},"aria.conbox.settings.AriaEcSettings":{ARIAPROJ_TEMPLATE:[0,5,1,""],INTERLOWERBOUNDS:[0,5,1,""],INTERTARGET:[0,5,1,""],INTERUPPERBOUNDS:[0,5,1,""],INTRALOWERBOUNDS:[0,5,1,""],INTRATARGET:[0,5,1,""],INTRAUPPERBOUNDS:[0,5,1,""],SCSC_MIN:[0,5,1,""],SECTIONS:[0,5,1,""],SS_DIST:[0,5,1,""],TOPO:[0,5,1,""],infra:[0,5,1,""],load_config:[0,3,1,""],make_infra:[0,3,1,""],scsc_min:[0,5,1,""],ssdist:[0,5,1,""],template:[0,5,1,""]},"aria.conbox.settings.Settings":{load_config:[0,3,1,""],write_config:[0,3,1,""]},"aria.conbox.setup":{AriaEcSetup:[0,1,1,""]},"aria.conbox.setup.AriaEcSetup":{run:[0,3,1,""],write_optional_files:[0,3,1,""]},aria:{conbox:[0,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","staticmethod","Python static method"],"3":["py","method","Python method"],"4":["py","function","Python function"],"5":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:staticmethod","3":"py:method","4":"py:function","5":"py:attribute"},terms:{"0x343ad80":[],"0x3453a20":[],"0x34d2270":[],"0x34d2610":[],"0x34d33c0":[],"0x34e23d0":[],"0x34f2340":[],"0x34f3f90":[],"0x34fa210":[],"0x34fb6d0":[],"0x34fba90":[],"0x34fc1f0":[],"0x34fc7b0":[],"0x34fd5c0":[],"0x34fda90":[],"0x34fdff0":[],"0x35002a0":[],"0x4c62630":0,"0x4ced770":0,"0x4d527b0":0,"0x4d52fd0":0,"0x4d63060":0,"0x4d72420":0,"0x4d74500":0,"0x4d74780":0,"0x4d75410":0,"0x4d76640":0,"0x4d7b8a0":0,"0x4d7c8b0":0,"0x4d7d8d0":0,"0x4d7de60":0,"0x4d7ec70":0,"0x4d7f140":0,"0x4d817b0":0,"25_d160427_chains3743":0,"6_r0":0,"abstract":0,"class":0,"default":0,"float":0,"int":0,"return":0,"static":0,"true":0,CNS:0,For:0,Its:0,Res:0,The:0,There:0,Use:0,_sre:0,aa_seq:0,aaatmmap:0,aamap:0,absolut:0,acc:0,access:0,accord:0,acid:0,action:0,actual:0,adjust:0,adr_flag:0,algorithm:0,alia:0,align:0,all:0,all_reg:0,allcontactmap:0,alldistmap:0,allscoremap:0,allvsal:0,alpha:0,amino:0,aminoacidsequ:0,analys:0,analyz:0,angl:0,anoth:0,appli:0,applic:0,arg:0,argpars:0,argument:0,aria_ec:0,aria_project_v2:0,aria_templ:0,ariaec:0,ariaecbbconvert:0,ariaeccommand:0,ariaeccontactmap:0,ariaecpdbqu:0,ariaecset:0,ariaecsetup:0,ariaecxmlconvert:0,ariaproj_templ:0,ariaproject:0,ariaset:0,ariaxmlconvert:0,arrai:0,assign:0,assum:0,atm:0,atm_dist:0,atm_list:0,atm_product:0,atmask:0,atmmap:0,atom:0,atom_typ:0,attribut:0,author:0,averag:0,axe:0,axtitl:0,bacbkon:0,backbon:0,bardiaux:0,basenam:0,bbcontact:0,bbconv:0,bbconvert:0,been:0,below:0,benjamin:0,beta:0,between:0,bio:0,bioinformat:0,biotechnolog:0,block:0,bond:0,bool:0,both:0,build:0,call:0,can:0,cd1:0,cd2:0,chain:0,check:0,check_fil:0,check_filetyp:0,check_maptyp:0,check_typ:0,choos:0,clash:0,clash_dict:0,clashlist:0,classif:0,classification_metr:0,clear:0,close:0,clusteridx:0,cmpmap:0,cns:0,code:0,col:0,colnam:0,color:0,colscatt:0,column:0,command_list:0,commandprotocol:0,common:0,compar:0,compare_contactmap:0,compareplot:0,complexc:0,compon:0,comput:0,compute_diversityvalu:0,con:0,conf:0,config:0,configpars:0,configpath:0,conflict:0,cons_filt:0,conserv:0,constraint:0,cont_def:0,contact:0,contact_list:0,contact_map:0,contact_typ:0,contactdef:0,contactlist:0,contactmap:0,contactmapfil:0,contactset:0,contain:0,contrib:0,control:0,convers:0,coord:0,coordin:0,copi:0,core:0,correspond:0,creat:0,create_heatmap:0,create_index:0,create_map:0,create_set:0,csv:0,cull:0,culledpdbfil:0,cullpdb:0,cullpdb_pc25_res1:0,current:0,custom_log:0,cut:0,cys:0,cys_filt:0,daniel:0,data:0,datafram:0,deconvolut:0,deconvolv:0,def_cut:0,default_1:0,default_2:0,default_3:0,default_4:0,default_confil:0,defaultdist:0,deff:0,defin:0,depend:0,deriv:0,desc:0,desc_dict:0,desc_list:0,desclist:0,descript:0,descriptor:0,detail:0,dict:0,dictionari:0,differ:0,dihe:0,dihed_fil:0,dihedr:0,direct:0,displai:0,dist:0,dist_fil:0,dist_restraint:0,distanc:0,distance_method:0,distancemap:0,distancemapfil:0,distfil:0,distinguish:0,distmap:0,distribut:0,dists_ref:0,disulfid:0,divers:0,diversity_scor:0,dminu:0,dono:0,dplu:0,dpow:0,dssp_dict:0,dtype:0,dunbrack:0,duplic:0,duplicate_level:0,dynamicattr:0,each:0,ec_scor:0,edg:0,effect:0,eigenvalu:0,element:0,empti:0,end_reg:0,ensembl:0,ensembleanalysi:0,euclidean:0,evfold:0,evolut:0,evolutionari:0,execut:0,exist:0,exp:0,explain:0,expon:0,extend:0,extra:0,extract:0,fallain:0,fals:0,feizi:0,field:0,file:0,filenam:0,filepath:0,filetyp:0,fill:0,filter:0,filter_typ:0,flaglist:0,flush:0,follow:0,form:0,format:0,fraction:0,frame:0,from:0,gener:0,get:0,get_dist:0,get_proteinblock:0,get_secstruct:0,gideon:0,give:0,given:0,gmm:0,gremlin:0,group:0,groupbi:0,groupby_method:0,hamelryck:0,has:0,hb_file:0,hbmap:0,hbond:0,hbscore:0,headerflag:0,heatmap:0,heavi:0,heavy_reg:0,high:0,highli:0,human_idx:0,humanidx:0,idx1:0,idx2:0,idxnam:0,iff:0,implement:0,improp:0,index1:0,index2:0,index:[0,2],indxplus_reg:0,info:0,infra:0,infrastructur:0,ini:0,initi:0,initiat:0,input:0,insid:0,instanti:0,inter:0,interact:0,interfac:0,interlowerbound:0,intertarget:0,interupperbound:0,intra:0,intralowerbound:0,intratarget:0,intraupperbound:0,iter:0,iteration_id:0,kei:0,kelli:0,kept:0,kind:0,knrj:0,kwarg:0,lab:0,largest:0,launch:0,legaci:0,legend_prefix:0,length:0,letter:0,level:0,licens:0,line:0,linewidth:0,list:0,list_nam:0,list_typ:0,listnam:0,load:0,load_config:0,low:0,lower:0,lowerbound:0,lr_type:0,made:0,main:0,make_infra:0,manderick:0,manoli:0,map:0,mapdict:0,mapfil:0,mapfilelistread:0,mapfilt:0,maplist:0,maptyp:0,marbach:0,mat_nd:0,matric:0,matrix:0,maxidx:0,maximum:0,medard:0,metapsicov:0,metapsicov_stg1:0,metapsicov_stg2:0,metapsicovhb:0,method:0,metric:0,min:0,minim:0,mit:0,modul:2,molecul:0,molecule_path:0,more:0,msa:0,mtype:0,mtype_choic:0,multi:0,multiindex:0,multipl:0,muriel:0,n_hb:0,name:0,nativ:0,native_ful:0,natur:0,nb_c:0,nb_topcontact:0,nd_filter:0,ndim:0,neg:0,neighcontact:0,net_deconv:0,network:0,node:0,nofilt:0,non:0,none:0,note:0,npmat:0,number:0,numpi:0,obj:0,object:0,observ:0,off:0,offset:0,one:0,onli:0,option:0,ordereddict:0,other:0,out_fil:0,outdir:0,outdir_path:0,outfil:0,outprefix:0,output:0,over:0,page:2,pair:0,pair_list:0,pairdict:0,palett:0,panda:0,paper:0,param:0,paramet:0,pars:0,path:0,pbxplore:0,pca:0,pca_project:0,pconsc1:0,pconsc2:0,pconsc:0,pdb:0,pdbfile:0,pdbid:0,pdbparser:0,pdbpath:0,pdbreg:0,pdbstat:0,pdf:0,phe1:0,phi:0,physic:0,pickler:0,pics:0,pisc:0,pkg:0,plm:0,plm_score:0,plmc:0,plmdca:0,plmev:0,plot:0,plot_dpi:0,plot_ext:0,plotag:0,plotdir:0,plotflush:0,pos:0,pos_filt:0,posit:0,predict:0,prefix:0,pro:0,process:0,product:0,product_typ:0,program:0,project:0,prospective_fil:0,proteinmap:0,protmapcollect:0,protocol:0,provid:0,proxim:0,psi:0,psicov:0,psipred2_reg:0,psipred3_reg:0,psipred_reg:0,python:0,qual:0,qualiti:0,rac:0,read:0,read_indextableplu:0,read_pdb:0,read_psipr:0,read_seq:0,read_ssdist:0,readabl:0,readablefil:0,readtopo:0,reduc:0,reduct:0,refer:0,regex:0,regexfil:0,regulatori:0,rel:0,relat:0,relev:0,remov:0,report:0,repres:0,res1:0,res2:0,res:0,resatmmap:0,residu:0,resmap:0,restatement_reg:0,restraint:0,rm_list:0,root:0,rosenth:0,rtype:0,run:0,run_tbl2xml:0,save:0,save_fig:0,saveplot:0,scale:0,scale_scor:0,scatter:0,score:0,score_field:0,scoremap:0,scratch:0,script:0,scsc:0,scsc_min:0,search:2,sec_struct:0,secondari:0,secstruct:0,section:0,see:0,select:0,self:0,seq:0,seq_po:0,seq_sublist:0,seqfil:0,seqidx:0,seqlen:0,seqpath:0,sequenc:0,sequencelist:0,seri:0,server:0,set_aa_sequ:0,set_sec_struct:0,set_valu:0,sett:0,should:0,side:0,similar:0,size_fig:0,soheil:0,sort:0,sortedset:0,sourc:0,spec:0,specif:0,sqrt:0,squar:0,sre_pattern:0,ss2:0,ss_dist:0,ss_dist_reg:0,ss_type:0,ssaaatmmap:0,ssclash:0,ssclash_filt:0,ssdist:0,ssdist_fil:0,ssdist_filenam:0,ssdistpath:0,ssidx:0,sslist:0,start:0,startres_reg:0,step:0,str:0,string:0,structur:0,subcommand:0,subfil:0,supplementari:0,sym:0,symmetr:0,sync_index:0,target:0,targetdist:0,targetdistmap:0,targetmap:0,tbl2xml:0,tbl:0,tbl_file:0,tbl_path:0,tbldist:0,tbldistfil:0,templat:0,test:[],them:0,thi:0,threshold:0,titl:0,to_seri:0,tool:0,toolbox:0,top:0,topallhdg5:0,topmap:0,topo:0,topolog:0,topologyfil:0,translat:0,treshold:0,triangl:0,tupl:0,txt:0,type:0,unic:0,upd_mol:0,updat:0,update_map:0,upper:0,upperbound:0,usag:0,use:0,used:0,using:0,valu:0,violation_analysi:0,visual:0,wang:0,weight:0,where:0,which:0,write:0,write_ariaproject:0,write_config:0,write_contact:0,write_dihedral_tbl:0,write_dist_xml:0,write_filtout:0,write_hb_tbl:0,write_map_restraint:0,write_maplist_restraint:0,write_optional_fil:0,write_seq:0,write_ssdist_tbl:0,write_ssfasta:0,write_tbl_restraint:0,write_xmlseq:0,xlabel:0,xml:0,xml_path:0,y_pred:0,y_score:0,y_true:0,ylabel:0,zlabel:0},titles:["aria.conbox package","ariaec.test package","Welcome to Aria-EC\u2019s documentation!","ariaec"],titleterms:{analysi:0,aria:[0,2],ariaec:[1,3],base:0,command:0,conbox:0,content:[0,1],convert:0,document:2,indic:2,maplot:0,modul:[0,1],ndconv:0,packag:[0,1],pdbdist:0,pdbqual:0,protein:0,protmap:0,reader:0,set:0,setup:0,submodul:0,subpackag:0,tabl:2,test:1,welcom:2}})
\ No newline at end of file
diff --git a/examples-dev/olds/ariaec.rst b/examples-dev/olds/ariaec.rst
new file mode 100644
index 0000000..36ab6ad
--- /dev/null
+++ b/examples-dev/olds/ariaec.rst
@@ -0,0 +1,114 @@
+Conbox module
+============
+
+.. toctree::
+
+.. automodule:: aria.conbox
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Analysis
+--------
+
+.. automodule:: aria.conbox.analysis
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Base
+----
+
+.. automodule:: aria.conbox.base
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Commands
+--------
+
+.. automodule:: aria.conbox.commands
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Converter
+---------
+
+.. automodule:: aria.conbox.converter
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+Maplot
+------
+
+.. automodule:: aria.conbox.maplot
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.ndconv module
+-------------------------
+
+.. automodule:: aria.conbox.ndconv
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.pdbdist module
+--------------------------
+
+.. automodule:: aria.conbox.pdbdist
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.pdbqual module
+--------------------------
+
+.. automodule:: aria.conbox.pdbqual
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.protein module
+--------------------------
+
+.. automodule:: aria.conbox.protein
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.protmap module
+--------------------------
+
+.. automodule:: aria.conbox.protmap
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.reader module
+-------------------------
+
+.. automodule:: aria.conbox.reader
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.settings module
+---------------------------
+
+.. automodule:: aria.conbox.settings
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+aria.conbox.setup module
+------------------------
+
+.. automodule:: aria.conbox.setup
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
diff --git a/examples-dev/olds/ariaec.test.rst b/examples-dev/olds/ariaec.test.rst
new file mode 100644
index 0000000..8813337
--- /dev/null
+++ b/examples-dev/olds/ariaec.test.rst
@@ -0,0 +1,10 @@
+ariaec.test package
+===================
+
+Module contents
+---------------
+
+.. automodule:: ariaec.test
+    :members:
+    :undoc-members:
+    :show-inheritance:
diff --git a/examples-dev/olds/index.rst b/examples-dev/olds/index.rst
new file mode 100644
index 0000000..c213df6
--- /dev/null
+++ b/examples-dev/olds/index.rst
@@ -0,0 +1,20 @@
+.. AriaEc documentation master file, created by
+   sphinx-quickstart on Fri Apr 21 16:27:42 2017.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to Aria-EC's documentation!
+===================================
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/examples-dev/olds/make.bat b/examples-dev/olds/make.bat
new file mode 100644
index 0000000..b024aea
--- /dev/null
+++ b/examples-dev/olds/make.bat
@@ -0,0 +1,36 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=sphinx-build
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+set SPHINXPROJ=AriaEc
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+	echo.
+	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
+	echo.installed, then set the SPHINXBUILD environment variable to point
+	echo.to the full path of the 'sphinx-build' executable. Alternatively you
+	echo.may add the Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/docs/modules.rst b/examples-dev/olds/modules.rst
similarity index 100%
rename from docs/modules.rst
rename to examples-dev/olds/modules.rst
diff --git a/setup.py b/setup.py
index a9c1973..e49af7d 100644
--- a/setup.py
+++ b/setup.py
@@ -111,7 +111,7 @@ class CleanCommand(Command):
                   './*.egg-info ./*.egg')
 
 
-def get_version():
+def get_version(full=True):
     """
 
     Returns
@@ -119,7 +119,7 @@ def get_version():
 
     """
     d = dirname(__file__)
-
+    # TODO: actually no warning when git command is not available !!
     if isdir(join(d, '.git')):
         # Get the version using "git describe".
         cmd = 'git describe --tags'.split()
@@ -130,8 +130,11 @@ def get_version():
             sys.exit(1)
 
         # PEP 386 compatibility
-        if '-' in version:
+
+        if '-' in version and full:
             version = '.post'.join(version.split('-')[:2])
+        else:
+            version = version.split('-')[0]
 
         # Don't declare a version "dirty" merely because a time stamp has
         # changed. If it is dirty, append a ".dev1" suffix to indicate a
@@ -147,7 +150,7 @@ def get_version():
             print('Unable to get git index status')
             sys.exit(1)
 
-        if dirty != '':
+        if dirty != '' and full:
             version += '.dev1'
 
     else:
@@ -206,6 +209,7 @@ def setup_package():
             'six>=1.10',
             'Sphinx',
             'sphinx_rtd_theme',
+            # 'sphinx_bootstrap_theme',
             'sphinxcontrib-napoleon',
             'configparser',
             'mako',
-- 
GitLab