From 6767d22c3f6918b497d92d6ffc2680c1aa9205f1 Mon Sep 17 00:00:00 2001
From: Fabrice Allain <fabrice.allain@pasteur.fr>
Date: Fri, 10 Jun 2016 14:35:06 +0200
Subject: [PATCH] Updated to python 3.5 syntax

---
 ariaec/__init__.pyc   | Bin 235 -> 237 bytes
 ariaec/base.py        |   6 ++----
 ariaec/base.pyc       | Bin 10170 -> 10212 bytes
 ariaec/commands.py    |   3 +++
 ariaec/commands.pyc   | Bin 10246 -> 10399 bytes
 ariaec/econverter.py  |  15 ++++++++++-----
 ariaec/econverter.pyc | Bin 27494 -> 27809 bytes
 ariaec/ecsettings.py  |  12 ++++++------
 ariaec/ecsettings.pyc | Bin 7842 -> 8013 bytes
 ariaec/maplot.pyc     | Bin 5205 -> 5250 bytes
 ariaec/ndconv.pyc     | Bin 4441 -> 4445 bytes
 ariaec/protein.py     |  39 ++++++++++++++++++++-------------------
 ariaec/protein.pyc    | Bin 15874 -> 16126 bytes
 ariaec/protmap.py     |  24 +++++++++++++-----------
 ariaec/protmap.pyc    | Bin 47920 -> 48716 bytes
 ariaec/reader.pyc     | Bin 19294 -> 19234 bytes
 ariaec/setup.pyc      | Bin 7631 -> 7685 bytes
 bin/ec2aria.pyc       | Bin 1065 -> 0 bytes
 setup.py              |   2 +-
 version.py            |   2 +-
 20 files changed, 56 insertions(+), 47 deletions(-)
 delete mode 100644 bin/ec2aria.pyc

diff --git a/ariaec/__init__.pyc b/ariaec/__init__.pyc
index 8beec7da806c597f90cc1923e67032e7aa62f134..6dbf12f6af78ab4e98ffa0e0249c74b06128ba80 100644
GIT binary patch
delta 64
zcmaFO_?D54`7<xqUzLe$b$b2`3=H~7iIvHzIXT7p8Tq-X`e}(dIf<Eh`r-LS*~JBk
U$*KB|L7tBBuAa`t6E|1`0Kvf)MgRZ+

delta 62
zcmaFM_?nT8`7<xq8?lLObvnKb3=I0YsVSL>`bCME`FWYi`i^FX&brQKju!gi`9;~q
S1&PV2`XL#q#i<iFSpxuTpA>!o

diff --git a/ariaec/base.py b/ariaec/base.py
index 69f3148..eb0d60a 100644
--- a/ariaec/base.py
+++ b/ariaec/base.py
@@ -13,7 +13,7 @@ import sys
 import numpy as np
 import pkg_resources as pkgr
 import matplotlib.artist as art
-from cStringIO import StringIO
+from io import StringIO
 
 
 logger = logging.getLogger()
@@ -289,10 +289,8 @@ class Capturing(list):
         sys.stdout = self._stringio = StringIO()
         return self
 
-    def __exit__(self, *args):
+    def __exit__(self,):
         """
-
-        :param args:
         :return:
         """
         self.extend("\n".join(self._stringio.getvalue().splitlines()))
diff --git a/ariaec/base.pyc b/ariaec/base.pyc
index d6f1402e1fc0c50fce3f807e87cb99c13241e5d5..59ffcefb29d6191ce32bcd0a920da7a8f15909a6 100644
GIT binary patch
delta 1186
zcmdnx|HPk-`7<xqYW<CD2`qZv3=9nVNr{!osW~~t`WgATsrqS&IXQ`$dHUh`McKs#
ziOH$@jzOM|@vffE#gi9Gt4-d)@}6{UN}Ip3E@mW0-!t|$a`a8!#W{_1>l8Q7<?<%S
zy3J-hR?MW^r#ATz{{zysDNX($aE1(Ro4JJMk>N_E&EG_?lNBn`5|_!+XCq}vs=mz&
zrQJx?15D3~lTBph8QC_6$m%nZ9-?ZSuga&AVXM;Q4#i^9tyA3Wp~Oy(b(`lZbCaWQ
T@;4PHa-7+!I*lyrGSveCqPUS}

delta 1143
zcmaFjzssME`7<xqEX9p%2`oCE3=9nVxv43ciTXu}nfZB{$@-3FhR(XqW{wv6;rT_`
z#RZAUsrn%qsl}<23)Ph-Z)5pPvZl>HSr;>ss!MJ22lghCb*WE2&N-1(s}wgc=kg}m
zDy7X%JXXx4+NCu44F407HBAycL$aRDGD7o6civ_$vFl_6g`vb{l69$Vj*v1XS(no0
zyV5Eo>r$K?AS=(vzPUhFpNaI4d@r9#vW-fUS11;fYL(*VEG2f*t=fE0nVV!?YLgXI
P?MQdvTGeSJTU87Iv<7No

diff --git a/ariaec/commands.py b/ariaec/commands.py
index 21d36fd..bee32d6 100644
--- a/ariaec/commands.py
+++ b/ariaec/commands.py
@@ -27,6 +27,9 @@ def check_file(prospective_file):
 
 class ReadableFile(argp.Action):
 
+    def __init__(self, *args, **kwargs):
+        super(ReadableFile, self).__init__(*args, **kwargs)
+
     def __call__(self, parser, namespace, values, option_string=None):
         if type(values) == list:
             for prospective_file in values:
diff --git a/ariaec/commands.pyc b/ariaec/commands.pyc
index 2d377707d3f28aea7f677e655f4cea34ee2eddeb..61d20baa4bf388d23f4053573274c13d551a398e 100644
GIT binary patch
delta 611
zcmZn*m>;+ynOVx4fq_9kDX}s+H7BQ7KO;XkRX;5;Cnqs8Z*n20+2&QuMU42>*i6o3
zjmD>hQO#^KH(MwHtD+d0H=p5b#cLVJq#4|Mm<ZW6n{ORKb0!Gzu;McZ<oU;<m+;yJ
zQu9Y*0}CN@KFiJ~WX|NP3MUB|Gx@1v2R<dh(3!kNsg015MrA@uHv6e8!WVv<8Pz)R
N$paIP)#R({h5$w4$_oGh

delta 462
zcmbOq*cPxMnOV?@fq_9kBR@A)zbG*?KQA+R@<cV$&6}8u8L>-EE@4f=Dr2@;jV%<1
zd6Q3Zsxq={{=nIa-Bh#9N4fVf;V||h-#T2n&I|CcV%253Sxf9Pb^}c}`$%qN!J*4X
zZVnDzlg$-RVb?S{K&ca}jM-#O<u)8L|8dD|zN)eai+49qRO`ed42rDDnHpvQ==YR6

diff --git a/ariaec/econverter.py b/ariaec/econverter.py
index 203e7dd..4a10916 100644
--- a/ariaec/econverter.py
+++ b/ariaec/econverter.py
@@ -13,7 +13,6 @@ import os
 import sys
 import json
 import re
-import pkg_resources as pkgr
 import aria.legacy.AminoAcid as AminoAcid
 from .base import get_filename, Capturing
 from .protein import Protein
@@ -307,7 +306,7 @@ assign (resid {res1} and name o) (resid {res2} and name hn)  1.8 {dminus} {dplus
         # Build global secondary structure distance restraints (H-H+4, E-E+1,
         #  ...)
         with open(outfile, 'w') as outfile:
-            for a in xrange(len(sec_struct) - 1):
+            for a in range(len(sec_struct) - 1):
                 for b in range(a + 1, len(sec_struct)):
                     ss1 = sec_struct[a][2]
                     ss2 = sec_struct[b][2]
@@ -331,7 +330,7 @@ assign (resid {res1} and name {atm1}) (resid {res2} and name {atm2})  {dist} {sd
     def write_dihedral_tbl(sec_struct, outfile, k=0.5, e=2):
         # Build dihedral angle restraints (phi, psi)
         with open(outfile, "w") as outfile:
-            for i in xrange(len(sec_struct)):
+            for i in range(len(sec_struct)):
                 if (i + 1) != len(sec_struct):
                     if sec_struct[i][2] == sec_struct[i + 1][2]:
                         # Si ss identique
@@ -396,6 +395,12 @@ assign (resid {res1} and name n) (resid {res1} and name ca) (resid {res1} and na
 
 
 class AriaEcXMLConverter(AriaXMLConverter):
+
+    @staticmethod
+    def _write_hbmap_tbl(hbmap, outfile, dminus, dplus, n_hb=None, hb_type="main", topo=None):
+        AriaXMLConverter._write_hbmap_tbl(hbmap, outfile, dminus, dplus, n_hb=None, hb_type="main",
+                                          topo=None)
+
     def __init__(self, *args, **kwargs):
         self.restraint_list = []
         super(AriaEcXMLConverter, self).__init__(*args, **kwargs)
@@ -711,7 +716,7 @@ class AriaEcXMLConverter(AriaXMLConverter):
             self._pickler.dump(self.molecule, self._mol_set[
                 'output'])
 
-        except Exception, msg:
+        except Exception as msg:
 
             logger.error("Error writing xml seq file : %s" % msg)
 
@@ -732,7 +737,7 @@ class AriaEcXMLConverter(AriaXMLConverter):
 
         templatepath = os.path.abspath(aria_template)
         ariaproj_template = Template(filename=templatepath,
-                                    module_directory="/tmp/mako_modules")
+                                     module_directory="/tmp/mako_modules")
 
         try:
             t = open(templatepath, 'r')
diff --git a/ariaec/econverter.pyc b/ariaec/econverter.pyc
index acf5859b87db9337d5547ea2326adfb6d8fc2812..e9e078e3844b0924216ae2cefa64f62adef2ac88 100644
GIT binary patch
delta 1324
zcmaEMjd9^kMt0`Uyj(`TQ5)IgS)_a!7#Q@E5-XEab8?FHGxBp&_0tk_auPH1CNGq-
z*u0)4g_VGs$uV61jO?4&a1}7(S7|;ug(shYlFib*=Li|I*^vJlGk$X{HU|g`5-`VN
z^D2>N1Uxs1k$ba=v<?$K+X`iC7<o6plikjSPZcOI->HP+H3_I@a*w(Jqv+<n>h^?u
zIN4R(AE<Jwwhtkdo3->W;<dL>)@HMZQ4U@;Ah-QBnTg+v=9}-CMiU5j^UaOs#|Wsg
zm^{Jq8-A-SHlMfhA!N+v6q}ud)JzT#W|^F2XTiv|d9mGg4*a&7PmcBAo4mn2m9VlG
z_?3XX$TE47X9h9K+`VQKQl{;F55E$K)8l=*iBPuL!Iued&H$yD{-AO~DQ2^O=of;i
pvnSG+U>x<Rb8QxiPUOMwc8kq>(%A`^Wxkm^^Ed%D7L%p3y#W*Ezcl~=

delta 993
zcmZ2@lkwR#Mt0`Uyj-(gA~v$evk1B{Ffiz6<maa97bRxq=Vc~O-Y8<Rc?U}hD|V^L
zd0hUC9GmxX6)<8|U_QB?Cm*}aW_#XqI5cgJ<G;p?RhPx)Heo?5x;AeVkz>QIW3r-j
z6eG{(8fhIS9111`vrPUc>%hpj*<Nlt4pTOJsD|Rw|6bjIQDU=#hCL29Pu{5Q&nUK;
zQO5^|g3a^wFXA#B=(x?tjB;>Ex0uev>MQfjd1ldA0ty(P=9{G~j$xOwm~3SA4Xb$;
zo2#sSaA?{rVY?HD)MRCQ8%F-k3HIALuo!FTu?nlG>trj>TUca(X>oFzR}Kyt74P{t
zWJG=LVUaQPaGf0F+l^gjvyC4Ujx@h{LU1*X=-3<^_61iQFOD+C6-e*Zxi%ZcB=TT!
Z3Ml(M&0xo_(|ogS)^Y4o7L&trya5#KJ-`3}

diff --git a/ariaec/ecsettings.py b/ariaec/ecsettings.py
index dd131a4..bebf738 100644
--- a/ariaec/ecsettings.py
+++ b/ariaec/ecsettings.py
@@ -5,9 +5,9 @@ from __future__ import absolute_import, division, print_function
 
 import logging
 import os
-import ConfigParser
+from configparser import SafeConfigParser
 import collections
-import cPickle as Pickle
+import pickle
 import pkg_resources as pkgr
 
 from .base import format_dict
@@ -42,7 +42,7 @@ class Settings(object):
         elif not pkg:
             logger.error("Configuration file not found (%s)" % configpath)
             return None
-        config = ConfigParser.SafeConfigParser(allow_no_value=True)
+        config = SafeConfigParser(allow_no_value=True)
         if pkg:
             with pkgr.resource_stream(__name__, configpath) as conf:
                 config.readfp(conf)
@@ -62,7 +62,7 @@ class Settings(object):
     def write_config(self, filename):
         # Ecrit les config de toutes les sections dans un autre fichier
         logger.info("Writing .ini file (%s)" % filename)
-        config = ConfigParser.SafeConfigParser(allow_no_value=True)
+        config = SafeConfigParser(allow_no_value=True)
         iniout = open(filename, mode="w")
         for section in self._sections:
             config.add_section(section)
@@ -151,12 +151,12 @@ class AriaEcSettings(Settings):
             try:
                 # Read scsc_min_file given in aria_ec.ini
                 with open(self.main.config["scsc_min_file"]) as scsc:
-                    scsc_min = Pickle.load(scsc)
+                    scsc_min = pickle.load(scsc)
             except (IOError, KeyError, TypeError):
                 # If file can't be open or given key is invalid, load default
                 # package file
                 with pkgr.resource_stream(__name__, self.SCSC_MIN) as scsc:
-                    scsc_min = Pickle.load(scsc)
+                    scsc_min = pickle.load(scsc)
             scsc_min = dict(
                 (aa1, dict((aa2, tuple(atm_pair.split(', ')))
                            for aa2, atm_pair in atm_pairs.items()))
diff --git a/ariaec/ecsettings.pyc b/ariaec/ecsettings.pyc
index 255ed5031f4cbbcd88e62c1a883bc47f6365371f..1ddd9862f6718960ea3e9177c434ba2f8f0f7a41 100644
GIT binary patch
delta 686
zcmZ2vd)97)JCl?z0|SG8QetItYEDkEenx(7s(xBxPEKNG-sBHV=9BxG0`Mr={DCQn
z5sy632#d|LS)McFS7W~U6bB<grwDVW;Wx%&^C9jH1dOqmyqoVYeq+oh38*nLPgWQB
zj89#Gkj><D!5{dQgaFMsD)a@PB48kIW)!(dAQV9n!Ma&q><eCX2PFI_7faaSv+jVz
pSA5c-`1&X5gVz>NvX~@2g@7@W^JUryDY27%hhGWU+mkEhGyxWV>@WZT

delta 515
zcmX?Wx5##bJCmRb0|SG8Mt*Lpeo<m(eqLts<V2=+tfJ<dEt$0$aY$`tdBKcT%3|?*
z4(zsAOm^f>#j3}A^LOrz*fp6?{>k?bizY#VSVq>#`2wG@$R#qFPu?u}7l#a^uq-3X
zWO?B)SmiA?r;1#_?rEFN-C|#`OPNo;AQ6JqJdljU<X*{T*kw1jNcmzn(qgi*%w+7E
WCbP@ph_T7{W#41fV>4MrUK0R|4xq^Z

diff --git a/ariaec/maplot.pyc b/ariaec/maplot.pyc
index 52c27a55568ff104dddf5f68a89fe949ec82cd0d..7a504fb5cdc373664cc54480f4312cc4963f6c6a 100644
GIT binary patch
delta 191
zcmcbr(WJQ{n_0?}fq_9kDX}s+H7BQ7KO;XkRX;5;Cnqs8Z}J2|lgS&HjTm`1KW28}
o#IMqLb2hIC3m!F_CkT2o;*kg1W;|J5_ym3>AP2EbHV{z-060QELI3~&

delta 142
zcmZqDysEJwn_19-fq_9kBR@A)zbG*?KQA+RvVgGh<Q>e$jQpG5FuQPKSFpL3SA+$J
U)IC87Myyi5v5Fc`ju6oT0JRM&1^@s6

diff --git a/ariaec/ndconv.pyc b/ariaec/ndconv.pyc
index 2561e1ff8777409c519f6f9e8cb594ed87ed618e..e998e9b990adb6af4d8cd5b8ec496740d5f1a6d0 100644
GIT binary patch
delta 126
zcmcbqbXSRu`7<w<o$*ArFN|y(fB)dq^JQRQ&`(ONOis<oDb~-(&rQ`&OU%hh%*@jd
i&o9a@E=WvH)prc?bc}cPbS|DOFL0i8Eh>}k1f>DW%PM~W

delta 122
zcmcbsbW@3q`7<w<p6W!lFN_=;fB)dq@n&FP(9cax$xPHQO3cj9%S_gHG&6M8bvARf
g&=1cq$}TQQOitAg$w)0uovbKuo>UDglbr;m0gw|X6#xJL

diff --git a/ariaec/protein.py b/ariaec/protein.py
index 8b5a48f..0b6031f 100644
--- a/ariaec/protein.py
+++ b/ariaec/protein.py
@@ -11,6 +11,7 @@ import logging
 import pkg_resources as pkgr
 import aria.legacy.SequenceList as SequenceList
 import aria.legacy.AminoAcid as AmnAcd
+from six import iteritems
 from .base import (reg_load, Capturing, ppdict)
 # import skbio.Protein as skprot
 # TODO: interface skbio ??
@@ -211,7 +212,7 @@ class SsList:
         try:
             with open(filename) as f:
                 self._read_ssdist(f, filename=filename)
-        except Exception, message:
+        except Exception as message:
             logger.error("%s" % message)
             logger.error("Can't load given ss dist file...")
             logger.error("Loading default ss dist file")
@@ -242,7 +243,7 @@ class SsList:
     # TODO: read_dssp
 
 
-class AminoAcidSequence(SequenceList.SequenceList):
+class AminoAcidSequence(SequenceList.SequenceList, object):
 
     startres_reg = re.compile(r"^\s*residue\s+(?P<name>[A-Za-z]{1,4})", flags=re.I)
     end_reg = re.compile(r"^\s*end", flags=re.I)
@@ -277,7 +278,7 @@ class AminoAcidSequence(SequenceList.SequenceList):
         :param kwargs:
         :return:
         """
-        SequenceList.SequenceList.__init__(self, *args, **kwargs)
+        super(AminoAcidSequence, self).__init__(*args, **kwargs)
         self._topfile = topologyfile
         self._topology = None
         self._topok = False
@@ -303,7 +304,7 @@ class AminoAcidSequence(SequenceList.SequenceList):
                 self._topology = [(aa, topo[aa]) for aa in self.aalist]
                 self._topok = True
             else:
-                self._topology = list(topo.iteritems())
+                self._topology = list(iteritems(topo))
         return self._topology
 
     def __getitem__(self, key):
@@ -324,7 +325,7 @@ class AminoAcidSequence(SequenceList.SequenceList):
 
     def readtopo(self):
         """
-
+        Parse topology file for amino acids
         :return:
         """
         topo = {}
@@ -346,24 +347,24 @@ class AminoAcidSequence(SequenceList.SequenceList):
                         resname = ""
                         continue
                     # Walk along reg dict
-                    for regid, reg in self.restatement_reg.iteritems():
+                    for regid, reg in iteritems(self.restatement_reg):
+                        if regid not in topo[resname]:
+                            topo[resname][regid] = []
                         if regid == "bond":
                             match = re.findall(reg, line)
+                            if match:
+                                topo[resname][regid] += match
+                                break
                         else:
                             match = reg.search(line)
-                        if match:
-                            if regid not in topo[resname]:
-                                topo[resname][regid] = []
-                            if regid == "bond":
-                                # Add 2-tuple
-                                topo[resname][regid] += match
-                            elif regid in ("improper", "dihedral"):
-                                # Add tuple into list since we need atm order
-                                topo[resname][regid].append(match.groups())
-                            else:
-                                # Add dict
-                                topo[resname][regid].append(match.groupdict())
-                            break
+                            if match:
+                                if regid in ("improper", "dihedral"):
+                                    # Add tuple into list since we need atm order
+                                    topo[resname][regid].append(match.groups())
+                                else:
+                                    # Add dict
+                                    topo[resname][regid].append(match.groupdict())
+                                break
         logger.debug("Topology used:\n%s" % ppdict(topo))
         return topo
 
diff --git a/ariaec/protein.pyc b/ariaec/protein.pyc
index 3df5777c7f7fa6aa966518bc7a9d3fbd82c53a12..94fef3012ea0cdec3a3cde4312dc5fdbcdb62a43 100644
GIT binary patch
delta 1017
zcmZpw`B%%z{F#?ac_Zs-Rw*wA1_u44#LDE<oSb6)jQreG{j|iKoW#t$%@0{w8S%(Z
ze#mM%S%>`&0VSLLI1HHxsF{3}%ZQPE^AD~Byeb#!n{J-RTSdrGo8$O5FypfkXwKpg
zVHSK!fPULNOZ*aE=YZ5~lA4QG4bZB|Q)M^fvkK&^KDo*GqGB@0m~@r-_>6hTYB@PT
zRfdsubFQiffgrM+{9kPWe#1;BKUK%;?1!w@o1bV{5DMtcNjftLxW;6%gI+g2*MNL4
zs9%pq$>xRncktQ*GUBkI93%7QM~3I{syt|X7LP@snAm*9WIJ9XKndfb*&MtH1EglN
ar79tFCd*lu5pvEg>*WNDv7CI`)*Jx7HeH?o

delta 777
zcmexY+f>8K{F#?aX(Q`tRzXJw1_u3%{M=OiqQuPnyv*du@%*Nf<=HOakg;RGgH6WD
za&s<+E)zB>pm8s`j2JmK%Wx-PS75UF6mK;nrryo*{7;!Ng@G<K**r;@kp-)i>E=h`
zm$2Jox|vyeE_NxC$?s&hU^UNV^9Q*p*u%+Wa=j7j<m)Q4v1&A(d{9+^k!|xMRSztF
z0|#@Z`Vt&kb2K*NkdbF&+gze)fh$~o>CD1zo5|!ydfiyfG?~0xzX7|<=1zkZxQwee
zk_Y;3zR@}C3QQ;OF`0qG)J3K{aA?}R(tHk<7}^|f6@^2`WDc7$9M+t%!Qpt*$%pN%
E0cN1|X#fBK

diff --git a/ariaec/protmap.py b/ariaec/protmap.py
index 451240e..266156b 100644
--- a/ariaec/protmap.py
+++ b/ariaec/protmap.py
@@ -41,8 +41,11 @@ class Map(pd.DataFrame):
 
     mtype_choices = {'contact': bool, 'distance': float, "score": float}
 
-    def _constructor_expanddim(self):
-        super(Map, self)._constructor_expanddim()
+    def update(self, *args, **kwargs):
+        super(Map, self).update(*args, **kwargs)
+
+    # def _constructor_expanddim(self):
+    #     super(Map, self)._constructor_expanddim()
 
     def __init__(self, index=None, columns=None, mtype='distance',
                  duplicate_levels=False, data=None, dtype=None, sym=True,
@@ -660,7 +663,7 @@ class ResAtmMap(ProteinMap):
                                    "the default cutoff)" % str(pair))
                 logger.info(
                     "Filtering values in matrix related to %s (%s)" %
-                    (str(pair), str(treshold)))
+                    (str(pair), str(treshold) if treshold else def_cutoff))
                 if pair in (("SC", "SC"), ("sc", "sc")):
                     # Use scsc_min to apply treshold updateonly for selected atom
                     # sidechain
@@ -757,8 +760,8 @@ class AaMap(Map):
     Amino Acid Distance Matrix
     """
 
-    def _constructor_expanddim(self):
-        super(AaMap, self)._constructor_expanddim()
+    # def _constructor_expanddim(self):
+    #     super(AaMap, self)._constructor_expanddim()
 
     def __init__(self, *args, **kwargs):
         if ("humanidx", "columns") not in kwargs:
@@ -781,8 +784,8 @@ class AtmMap(Map):
     Atom Distance Matrix
     """
 
-    def _constructor_expanddim(self):
-        super(AtmMap, self)._constructor_expanddim()
+    # def _constructor_expanddim(self):
+    #     super(AtmMap, self)._constructor_expanddim()
 
     def __init__(self, *args, **kwargs):
         super(AtmMap, self).__init__(*args, **kwargs)
@@ -1037,7 +1040,7 @@ class MapFilter:
         ss_start_end = collections.defaultdict(lambda: [None, None])
 
         # TODO: deplacer construction du dic ss_start_end dans SsList
-        for res_ind in xrange(len(ss_matrix)):
+        for res_ind in range(len(ss_matrix)):
             # Construction du dict ss_start_end
             if res_ind == 0:
                 # If first residue
@@ -1082,7 +1085,7 @@ class MapFilter:
                 for n in (1, 2, 3, 4):
 
                     # Search type of the bond (H-1 H, E-2 E, ...)
-                    for i in xrange(2):
+                    for i in range(2):
                         # Test both sides
 
                         resi = contact[i]
@@ -1331,8 +1334,7 @@ class MapFilter:
                 else:
                     op = "added"
                     ctype = clash
-                meta_clash[clash_t]["warn"] += "\n/!\ Clash: {clash_desc} {" \
-                                               "clash} flag for contact " \
+                meta_clash[clash_t]["warn"] += "\n/!\ Clash: {clash_desc} {clash} flag for contact " \
                                                "{res_pos} ({res1}, {res2})".format(
                     clash_desc=op, clash=ctype, res_pos=icontact + 1,
                     res1=contact[0], res2=contact[1])
diff --git a/ariaec/protmap.pyc b/ariaec/protmap.pyc
index 97bdf80fc6bac046dfcd28c7d8a8f59c05779b2f..d40663f51f5c554e656cb18edc04d897a71ce272 100644
GIT binary patch
delta 3187
zcma);T}V@57{@(xvu!%vie{#LP-7;gW6`8R;RlH#m_jI8f$5w%UFw>prpBCR7z1;!
zs04ly78I2FURaUP2Ngv~D-67lgph~?wZOdaqVrJK|F^4iaen;Y|NnWO^FC){UGaWX
zp$h+{(>f<rL&}}GVPRpG^0H=!)9v<Js_HH{EtO?%cbTh}8N7DBtejOKrq^ZXO7&R@
zF&@n<dL7EP@oQQ&lvs<k@lTNf$jCZuTz5!P@sGN3NRrx2j1e;AD$WoE!xK}pZ5Zl!
zG&YvMy+=?0W-`tpM0U*5V#ff&*J58mvvQ|`@m`=n{bn=q4un_}Lg+OWBxjc%`XFX_
z&zz8XyiXx0Y$l5~<%#T!nR1~FRn}^*z%q9B#e4-LHn!?h^4p1rg{Q?Q?T}*lk)&kR
z|0v#1SvH8ch4dGaj*n*e!v!R-$|@EVeg#PIP>x@8W3ZvTc_6{$F=Wq9E+NFD$z&V(
zX$Y|<*jamlQHtP$1;fx1^|!Tf6^RitRb-a5e7@)nY9F60PL4oI@@z9xX+1(H+_%zp
zgk)6M+0;2WlClbSmFbaLMlvtUJ47elbc|x;d9+s{FA1;X--Aav@4$oQdh(6R2qAN#
z>KJ5tUC<d_S1r|Vk$EciK#c_<G)a25QQjJf?jO(&jY)CsG!i4Eu<kcPXheebeuR+9
zX-~BX(Oz5!2se25!Z`FHwlsVO5{!%tTsk8{j$ZzX5bBe&u@NEU#oUyI5b`qFlqo>C
zz4@ImbzaLLlA#54ur&_K$Zq(JwgZr%PH$XYL`PAm-M#=qNM+S`4<V$o*gk@gURNr6
z?LRL<8aj#)LaFtg<#5Z$t>jOy9~V`Ir*(G<Hj#~K0;!Ucrw2BLB<<d=p8e1n{fVsv
zKcIkgUu^C32@t;2S0c*CI{PamHUHk9t43;nyQ^evBSD18S2-^kjogBmP_~^vxT_W(
hxB0MJGVrd6TWFJU>vRf?NTV?R=qF?-+`^Mne*g?`Sm*!%

delta 2440
zcmZ{mOGuPa6vyWq$8mg(nmHONI8<su3{fKt5vi1<V8c|XX;fpQX*Kyu$BfKJYH3J%
z$<nfiVGAR0JPXqZ)J2g*)It}5pop}HK$0v$q3=w&``^vCxWD^9uY1qA-^VrW(2CaI
zZ#gu`<@N8=MWkvp8cT7hyU<eMEGfNQa!yRdT185%j(+JrX#qC3*~nx#r2sS$yHAV<
z_5$K<x6!L09Tr)KL+&8rZMTZgsd_OVnxN>(U>rc3)M#lf%!Cj-EsQXrB-nIHypF~r
zdy$e88M+rHMxq*EGFH)Qng)bR_cHn!CiF1oE{a7hsHodoiACy3oQLEKSmlHl<3f-V
zHDOALpOzulHm$4<<AFvoxjhTIv(o7unOJBQzY|<oBnA`fFd<J;vdrAt&KM<}qIT`}
zmuNdJOA#2Uw`fw;inK;Qyn$TlxsuX|;EXXK;%m1#GfUP#Lq}(Uh);UXz6i*_&M^wJ
z;~=CqK@O8*pee^=nah#vB_z$sSAr=n_r0X7v^VdMq@beqY#FlXYjUGVcQybz@9YDs
z|I?$d1>q=;d8bVra5VuTlgPrS5~44<6?Dw5Xf(bLJt}&Etn*QI7V7~bZ%H{=7JN=s
z7jfVDW}~oN`T%0uIK>lg3#2wN<2ES)^uzrfx#j7RST=&BIX1DUd>Ih6<%OpLwG&%A
zRCxhtn5<W>NQgT6MS9gYK)EdS)iZ#w#Q{&ggxG5qB!qo6U-baWzU;M!0bySYwP~2p
zm1|R|v}~^P`U4>1!B|tb1&LHoG<PEjA$~t{8s>mKN8<!o<^9g4K|na2yqiw|F}Ed)
zjAnETRnpax4I~`#KuZCba%66+28ocjeN;C1Mmv%fe_HBTlWd^<U5UVx`v1U>CwiYY
z`eU}c9tO{U4@Mfje-cD0d?oC0Dbe(<C({7*yx~lLHz4X1p(D?O0{~J*)IS&^v$sBc
cTiHad)T;+tKDx58RZQsho1d~YR^J}~3%Nu*`~Uy|

diff --git a/ariaec/reader.pyc b/ariaec/reader.pyc
index be72a36a7ff53222b0b28eba550b659a5245a599..29df7419eb4233ff489dc99cb4ba9c7f506cdf80 100644
GIT binary patch
delta 1070
zcmcaNjd9U5#tjphr92rJ81$18E0a@ma*Fjc@^e%5(-L!X5;OBA7rI+)e#$JxgkO!x
zWPi3Kd`cdwn`~xecjdvSrqR@5^DN<WjQG?Px|>YiA*#a2w)w883_(YEN_-+<*ye7@
z2o`*5Kn^#SOJ!l?+&oi>2cO$EA5=EOCqMb1vdLz5)e^jFK>p)a--X9Tn;)uw#cKpG
z7$<9Kh2k+{@<vCC&6l-qvf)z$^!VgIhP?!oY`$sKgD)C3H=3&Alb;L<-*4u+c%1@t
z?&Na2l?0qJxxoG|J|&=VS?CakPYKA+?v8%=lx%b?#3v0hp~&eAJ|!S`>~c=Trv#J=
pvR!0>sl3zW48GvoT<GqJH!*<R!{r%(&oWR9tn$>xYs^QlTmX&WZQlR@

delta 1150
zcmZ29jq%<z#tjphWxN>}81!>fQ!*3vixM;Q^D>k59nB1#b)C%|EhZmSGueEfS&oU2
zDvQbfY;lAX8E^i@=Eg%<Rj=@6MnbAgCa)7!VPxNYSyYCg<4h*oN_-+{;O1J%2o^%B
zj5jOErLiz_ZSGX!A?QZq&5x9siBM&vT1rsWJHjseqkf2>F~*a*wW0_cwMpw98$nf*
z?;7?IRJ3`AQ7^#=GTuDN^b=vXZ@y@*M})I{?A8%<)?|14dxRAgIYbjyB<1K&SkX2|
zJHm<_oxT!Q)a;x_NRi28a~D}gj?JMiX9xzp$>w}_QNlq#`JzW4A#05{=X>f9G|FW1
HOD{_REL&X=

diff --git a/ariaec/setup.pyc b/ariaec/setup.pyc
index 61472e585722d579ed2c331f857e43d791d42641..db150a42b10c9adc4fef86392cc074440d3d1ad8 100644
GIT binary patch
delta 224
zcmX?a-D<<i{F#^Q^G4PX7AX$~1_u44#LDE<oSb6)jQreG{j|iKoW#t$%~>pOxbVnN
r&SEj%Jd3}Z8NV8%%^AY}>;%+I{w1}CfRfEWrDGZKt1+KEPu36sfZ9sr

delta 174
zcmZp*Id9F%{F#^Q(?-@17D0Ok1_u3%{M=OiqQuPnyv*dufx<?U&&#rIUd6JN3%m5@
l)%-oom{OYqg&Wy1g@FbdPnMV7ja_E5x=aisRw<Ax%m8{bHRJ#Q

diff --git a/bin/ec2aria.pyc b/bin/ec2aria.pyc
deleted file mode 100644
index 5b9ac9c197722157d01eac0069236a7db1e68bd6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1065
zcmcIi&2AGh5FUHe=BH^>+7nz@ZYw0ZqK66uLPSvyMW}}~0x6f(c5Nk_X6<P0R75JL
z@IE{U2Og#m0N*&N)B{(%^6cmN@yvYV=zhQR^ZwJ9g0`!H|3_^18$uC{Aq6Q(b3tQ(
z4VE;P4>+Q6L@FXJY1W{dCe;_D1<iIyHE1nJn0LXpOS9$!Xl=a__EhcATC(G~9pd2E
zA+<}o&3eHZn>62}(KdINX8SZgARW=HNBS^?J|WejA1L>THL6WFlImZik7!M(08L1`
zN;=%wTZm5lkJTSu^yBkeJ74<Jn!H}c18bbG^U`=1kF1@$PWcDx((m97c0YB`fJW2O
z#f#cb>b#1L*2=}f7{744oUty_#i|6NL_l~JF9YKeD8e3KyA;9)y5X@V@f}BS3UVdg
zQP2pw1GAtNO<_1!2?t+#9-7jw@CN|J(s^5Db32)oW|DBJejj2G^q)6s--IU1lr6F>
zgzKWT!L47H`FSz0Rh1j%`Tlxo5-v1!U9E6&h%PoR2`m(Zy97!rt;#$FY1WiQ+CO_e
zcr`fdze&H^`o=BtLZ_ptb~?Q-4OsD0Yf>hN(`LE|YF(V>IG(`FomCjXbNmCD)ac10
z>03Bw8C$X}ImTfa`s8xm%7Hc_>q41Z9s<_pwydq$H2kgf0W5Mq4c7b`^#OCvnZ?jK
z2^SKyJjv2HU3=f%>QV2>b?&r3e5BxjK;}a<ABG(5+Yl4&c?7s-(}Kw>jS;Y&E7kRI
t4=}-gB>o4poc?`f)pD*sgjdQhdAHRS_+(EU%0wK?j_5_bsJ+(}e*vD+?8X29

diff --git a/setup.py b/setup.py
index 182a0d2..2ffec38 100644
--- a/setup.py
+++ b/setup.py
@@ -97,7 +97,7 @@ setup(
         'seaborn',
         'scipy',
         'sklearn',
-        'colorlog',
+        'colorlog', 'mako',
         # 'scikit-bio==0.4.0',
         # 'aria==2.3'
     ],
diff --git a/version.py b/version.py
index e0ce953..76bddd8 100644
--- a/version.py
+++ b/version.py
@@ -1,2 +1,2 @@
 # Do not edit this file, pipeline versioning is governed by git tags
-__version__=v0.1.11-dev2-8-g4239f50
\ No newline at end of file
+__version__=v0.1.11-dev2-16-gb1e477c
\ No newline at end of file
-- 
GitLab