From 29f95816f885e1673de2c85f9a458dcdcee17cc4 Mon Sep 17 00:00:00 2001 From: fabrice <fabrice.allain@pasteur.fr> Date: Wed, 10 Feb 2016 19:31:04 +0100 Subject: [PATCH] Moving nb_c selection criteria in mapfilter object --- ariaec/econverter.py | 4 ++-- ariaec/econverter.pyc | Bin 26555 -> 26563 bytes ariaec/maplot.py | 48 +++++++++++++++++++----------------------- ariaec/maplot.pyc | Bin 5575 -> 5092 bytes ariaec/protmap.py | 12 ++++++++++- ariaec/protmap.pyc | Bin 44719 -> 44991 bytes ariaec/setup.py | 7 +++--- ariaec/setup.pyc | Bin 7849 -> 7771 bytes 8 files changed, 39 insertions(+), 32 deletions(-) diff --git a/ariaec/econverter.py b/ariaec/econverter.py index 12cb50b..43be5f8 100644 --- a/ariaec/econverter.py +++ b/ariaec/econverter.py @@ -609,13 +609,13 @@ class AriaEcXMLConverter(AriaXMLConverter): self.write_dist_xml(restraint_dict, xml_file) return xml_file, pair_list - def write_maplist_restraints(self, maplist, nb_c, targetmap): + def write_maplist_restraints(self, maplist, targetmap): out = ([], []) for maptype in maplist: logger.info("Writing %s ARIA XML distance restraints" % maptype) outfile, pairlist = self.write_map_restraint( - maplist[maptype]['contactmap'], nb_c, + maplist[maptype]['contactmap'], maplist[maptype]["nb_c"], targetmap, listname=maptype, scoremap=maplist[maptype].get("scoremap")) out[0].append(outfile) diff --git a/ariaec/econverter.pyc b/ariaec/econverter.pyc index 6bbbd21a23bd32173f036d4b551e8226d50e9e95..e26b3b94245c0af6e890d9401b7cd155d7e93ef7 100644 GIT binary patch delta 253 zcmdmep7HQ`Mt0`Uyj%xrc5h^#>Q~Rqz`(!`#9Tn^oWRIXybQ=l2ctA5hFWHZipdN$ zj0`TZ-3+xX3?&Q<S&R%Rj0`m_3}VfU42(5E0Va?Fpnzlw6N4m-$qZyNF{H47BvM#m zDzcbC9H7Q#W~LaR@vL?XwQLMEKv6aZ$t<8^uq0y*Pz-7$JA(~Kngb%u2GYw|D9jKJ w6b#njoE+$H#w5x(xy9d26y%E_ejrf-V&x_l<YX3?On&0OlTmE*yZ~8o020G6Z~y=R delta 247 zcmX?no^khiMt0`Uyj(S>wrpgd>Q~Rgz`(!(#9Tn^oWRIXJP*i72ctA5hFTVeif)D) zMh2JIW`<f;h7tybEJlVDMur+z2C-&F2F4no024?7P(U(;i9xak$YW+mVFn4Lu)t)p zfI=(`Kn=~zOff)X*%)fs8ERM<Qp|wbvVh9iK$46#KtZTcYz#Iad3K02J6O6<m?0b} y7_7lDInv*3@)Un(DUj2H_<=+TJCMjtEXc_$E(sE4WMG*5#(yUx-{xfjvf=<P9WS{6 diff --git a/ariaec/maplot.py b/ariaec/maplot.py index e6e84fa..faf3c25 100644 --- a/ariaec/maplot.py +++ b/ariaec/maplot.py @@ -88,8 +88,8 @@ class AriaEcContactMap(object): logger.error("First contact map should be a valid file") sys.exit(1) - nb_c = int(len(self.protein.aa_sequence.sequence) * - self.settings.setup.config.get("n_factor")) + # nb_c = int(len(self.protein.aa_sequence.sequence) * + # self.settings.setup.config.get("n_factor")) plotparams = {k: self.settings.contactmap.config.get(k, None) for k in ('size_fig', 'plot_ext', 'plot_dpi')} outdir = self.settings.outdir @@ -109,8 +109,11 @@ class AriaEcContactMap(object): mergecontactmap = mergemaps.get("contactmap") for mapt in self.allresmap.keys(): if mapt != self.reftype: + # TODO: DON'T WORK !!!! + logger.info("Merging %s with %s map" % ( + mergetype, mapt)) up_map = self.allresmap[mapt]["contactmap"] - up_map[:] = up_map.add(mergecontactmap) + up_map[:] = up_map[:] + mergecontactmap[:] mergekey = "%s_%s" % (mapt, mergetype) self.allresmap[mergekey] = {} self.allresmap[mergekey]["contactmap"] = up_map @@ -127,29 +130,22 @@ class AriaEcContactMap(object): continue scoremap = self.allresmap[mapt].get('scoremap', None) - if self.allresmap[mapt].get("contactmap") is not None and \ - self.allresmap[mapt].get("scoremap") is not None: - - if not self.settings.contactmap.args.get("nofilter"): - # Get top contact map/list - cmpmap = self.allresmap[mapt]["contactmap"].topmap( - self.allresmap[mapt]["scoremap"], nb_c) - cmplist = self.allresmap[mapt]['scoremap'].sortedset( - human_idx=True)[:nb_c] - else: - cmpmap = self.allresmap[mapt]["contactmap"] - cmplist = self.allresmap[mapt]['scoremap'].sortedset( - human_idx=True) - elif self.allresmap[mapt].get("contactmap") is not None: - # If no score given, use all contact list - - cmpmap = self.allresmap[mapt]["contactmap"] - cmplist = self.allresmap[mapt]['contactmap'].contact_list( - human_idx=True) - else: - logger.warning("%s map doesn't have any score related. Can't " - "define top list related to this map" % mapt) - continue + # if self.allresmap[mapt].get("contactmap") is not None and \ + # self.allresmap[mapt].get("scoremap") is not None: + # Get top contact map/list + # cmpmap = self.allresmap[mapt]["contactmap"].topmap( + # self.allresmap[mapt]["scoremap"], nb_c) + # cmplist = self.allresmap[mapt]['scoremap'].sortedset( + # human_idx=True)[:nb_c] + # elif self.allresmap[mapt].get("contactmap") is not None: + # If no score given, use all contact list + cmpmap = self.allresmap[mapt]["contactmap"] + cmplist = self.allresmap[mapt]['contactmap'].contact_list( + human_idx=True) + # else: + # logger.warning("%s map doesn't have any score related. Can't " + # "define top list related to this map" % mapt) + # continue # TODO: only one function for output files # Write contact list in txt file diff --git a/ariaec/maplot.pyc b/ariaec/maplot.pyc index 9485feeaeea2116ee0f066de2f444a57e1df944f..87aacf7ef15a713f3eee8a8d13dd536a03ee12be 100644 GIT binary patch delta 1055 zcmZ`&O-~b16g{^yoql&ZrF@iPQ(KTiDd5LSATfrmF@mHkL}UOvC`vnoCeFyB5sAjQ zcw0CA1k+#ON*BbKC|i}pH4FU%-Zw2uNKD>L-`sodIp^JX`=Ru6SW|w-!oQxr(+(6p z3Bce-xl5>1pmn6oD_5TbYXmckJ-{5tY?I*nu@6`(tUO%pWbcQi!3x66gE6&3MVt@y z7Y`MOaYdMYa5R{`Faxk6UQHZk0c$>qcKqTf(6>7X6KMKS`=)jTn3VBMIw)ao0F5tj z0+?O=2sa2P=n)mLp`oUGH3e8BGA_{}I3ce%<9&wFc-_HUqiBLzp1_U3Y1_$ScSAvK zLACj8X_!NjhI8z&huKIvD#$?E%pmPX;Y5*j!pQdWrf6P}DXx%kH-;)YQceuh4CqwH zyz1$#1(jE2OILYSHi5=~Zyz&K;KW+Q$JS0a>#xl<#XC-13QF26Hn?T3$b~X_*Du>$ zI$PN8vUdk!F_ftutE~C&K(fKZo!-0psf2gZ#F>CK2D1pe%q=9>fD{~ulaLgSF0a_( zn{8kBh&T%Oi67zKRK280J;qLWS5o3}5QCBO?y<_H|8?A^^vIgzBMF_9iVo|t%9v;E zoZO__p4!4qMIq_yqUY<hqr6wasm{1w?#!!MK9c}Pyvf8XQfcd0<yGPFoG(tal;}3K zp2cRUzlZ-WH&$!w)y?(XP(8O(weQQ{hs%$}`}mNU(yt}P88SB^Uz7YQUJ@_$St_+Y z>tzz7Ms_UD(Vbe=UR_#wv}rG|*mXO~q0YzBgKFKjRSw*)ZLf;A#tbFJcVk2t$p&2! zFOqw7AdId%qzbz$R}4{{42n^LpS-WfmnEGBC`%eeDNLF#9X2RMp`iHMb(1VH)qPLw YrLJqYn160Yd`eZc4Y{2XrS3O>05O`<asU7T delta 1539 zcmaJ>O>7%Q6#m9*um69OG)WWErEZAx<0Pe&0!mR3ITS8MDJVh+%;H(MUWawPJE5sq z%Se_27fy3Q6-O@IK<3^92QDD>))R*cgpfEPj$C*%u^TrMm3DV#-n{p{?|pA(e_#4( z)inOermi%<H-9$r697u|8XqzQ3yHxa<A%`^6^Lbg0l0a%D{xoQXL=chI|bK-n*d)> z#z}g+F?<d*82C9H0ek~H%4&`x&Z8S2&10kJvWoW2sPy7zD`qq#<TdaagmLg`@HpJG zj>&;vKqI2OLsNbipXn`v1N{j6f1`>a1rjLv6QxDv)=l8>KEecc-v0sJB*LTyDx+n> z-_|i@xK(9W-YJAB9XzL(X&in!^mo_M2cg_VH-j*vtqbV24ERSw7_!dtIm~vm2(xfE z5T-TLEGqmt6+=mg{F!bJO$=ef9Ja_=aW8`w3Sg^q6s2dcvmK>p&jSwUjbo1yi?l&3 zNSBqz!aSzbFf{f23CR}8b1$Z}J%2BzwB39{Qi?p5R0}S*lXJavjFJvHQBg|GrJ>N> z!l@0d6g8ohg#Vd&I*3GlVsE@bQ;KMCeJn<)=Uznb1cma>hB4LQZgDKJGP}=%)6u*{ zePQHcbxY_xItBLBAPVs8F;G>euBJDn{L53(6xSC{C@8c^2x{bI@MWd`87hx;(pvHt z5f+t*VL_efFh4roD?0zUDpYKYA;VYYugU3&YjLFo?O)Nya*eKpjHjy9A;SCLMjq$U z_ovSyOu4=U>U>zzsjE8aGvHM^Z(73RyVf@hrq0L9n(R2u@)%8Z;V*&fJImKkZGbFP zc4*>D7FEU5vqy5?sB8}YNFA`ONYMYqt2OMpX#0crGFO=#WG}oEyhY~4!1~y}ZSl4f zcuT^%Wq;yWws+SG>TTb#d}rSl4qvxkx799p8col!MEkb2-wecPn+%q?)znDxVRpN) zLBPA4>T{7kl~?3aZilT6_H$LXW{{=n38BV)#}jE9ZMzmYodd_KJDTfgA-~F>dsjKy zoQoWdcl@SsYW21!sFpyOWFj(DfJo9bX!}GqaD<4`>TUnP5gD2c-D`@nh?C)t?R!n{ zru;2`l}*TJ3(E=R?|oFO%Qp&l*=6}-;fVby-z<I*i%hY3CciCOMv)cdgW}mTt>+^% zks_OBldM4FB+IaQ+NLp*WC><O<=@5YOvu+t-<Z1uy!)#BtF&hxsOgrxHu3d;(`7q( diff --git a/ariaec/protmap.py b/ariaec/protmap.py index 2c4d6c4..e7770cd 100644 --- a/ariaec/protmap.py +++ b/ariaec/protmap.py @@ -1154,13 +1154,23 @@ class MapFilter: outprefix=outprefix, clashlist=clashlist) # Contactmap always filtered + # TODO: could set a treshold instead of n_factor + nb_c = int(len(mapdict["contactmap"].sequence) * int( + self.settings.get("n_factor"))) + nb_c = nb_c if nb_c < len(mapdict["contactmap"].contactset()) else len( + mapdict["contactmap"].contactset()) + mapdict["nb_c"] = nb_c + logger.info("Update %s contactmap" % mtype) mapdict["contactmap"].remove(clash_list) if mapdict["scoremap"] is not None: logger.info("Update %s scoremap" % mtype) mapdict["scoremap"].remove(clash_list) - + # Get nb_c top maps + logger.info("Select top %d contacts according to scoremap" % nb_c) + mapdict["contactmap"] = mapdict["contactmap"].topmap(mapdict["scoremap"], + nb_c) if mapdict["distmap"] is not None: logger.info("Update %s distmap" % mtype) mapdict["distmap"].remove(clash_list) diff --git a/ariaec/protmap.pyc b/ariaec/protmap.pyc index 54569b1adf071f90fae56777a2dd4412ab5688a0..8db6c48e6cb3a4ed54deb7dbb53520b93340ab44 100644 GIT binary patch delta 660 zcmZuuO=}ZT6g~H)8JpPBe2megh_eY~5xWpKLKj6r7b3_6mu-zRu{5=lka;Ve5+Mt> z%0pcEL2Y(zQ6xXW4=B`y;KH4V{Q>S=xe&a!Gqx6lxrh7SIp?1D-n{;%-hNkB>gQzk zUG&EK^1NmP$Z}n}NeIuSfF)opgJs6-J|0JuhF=+}7eA;!1wDa?;O9|p=P)4XDMUb< z&{psZvcsRvwN^w_{8ygG079++y@p~g_%9v%B%_E~eGKh!_%<Si(tym&y49EH0-}t} zBGH{d*{@(FgWfNd7)puZKyc_t6es0$JTg|uOg?WsjER9tZaEuZzdLo1adsw^j3^%o zVZ~uc>}u4eNB#B7)OYU@pvU={gT>oTPj`BHOcu8my-<F@jjrF+EvFhfUMJ8jSZ#LQ zYfOZNBW&n(dM)O{I&U{xcUqoybf@c7{lCW0X?iU3mxCo{oY-J~zdS>>IlZAPU)kuM z7kDagLEt(=%{EUq9;V#)WIk8s&Heebc`%%$1@m|~H$7IOGF7QaS(T@}%8?)!<!H1w zbS&C6w0T#36z@WMhwu8#>}_sYAGmXO&7-aQ#3yO5O4<&YSK2f6?K!$KTHU^={s5&d BmoWeU delta 324 zcmdmgpK1MFCN}2Jyj<#88`-YR)evT2VBi8`=LANE;z>*l4CxFEwVVu@K#~hgax>Jh zGNg!aW}5egF_oPmi-RFWkfDZ&L9CgPfw6{>Aw`HmGK-&~hLZs%Aj}|{BF>P_$xsx@ zR07c<f}#Vc0HGs~fdOQSC|pzD<o*RxLU0oy^1&Jso8=d}F-~q+B*jwA$iOgp<|3KN z&lbrt3QT5MT*77v^n!-)<VlMsO#UbyJ-H#4b#nU>UPiykQ<pe!GYc{bG6^sWGKw&5 z{;))Wjq%uI!PQkv#~CMIkcwkH3^Z-h<PWP?vmF4kf{smIxJHNPG>GX9G&JZi<K%TE R$&+o?IxyO9u3hWI1OPvkQ1Ac% diff --git a/ariaec/setup.py b/ariaec/setup.py index 3ef69fc..1f7ebb4 100644 --- a/ariaec/setup.py +++ b/ariaec/setup.py @@ -152,10 +152,11 @@ class AriaEcSetup: # --------------------------- XML restraints ------------------------- # # Setting contact number limit for map restraints (native, ec, ...) - nb_c = int(len(self.protein.aa_sequence.sequence) * - self.settings.setup.config.get("n_factor")) + # nb_c = int(len(self.protein.aa_sequence.sequence) * + # self.settings.setup.config.get("n_factor")) + dist_files, pair_lists = self.converter.write_maplist_restraints( - self.allresmap, nb_c, self.targetmap) + self.allresmap, self.targetmap) # --------------------------- XML SEQ file --------------------------- # seq_file = self.converter.write_xmlseq(self.protein.seqfile_path) diff --git a/ariaec/setup.pyc b/ariaec/setup.pyc index 2c203fc610f2eb1c46dc83d36a578f3c6613219d..d391fe1f93828eeb4157994a6c5b300272ec3926 100644 GIT binary patch delta 529 zcmYk2%S#(k6o=0p=Z@xOhNMu9rbz2Z(1j0Lb&-M~(nX}D*K7&~4Q3V&7{knH8c0@w zE=4%f?nGRr3lW)i)0Mc;g%#|!-BoJ;05@IsoB_eb{rJv<ANStRFMs8YuDe9^w0UA& z>&XZJ#Ochh3h?eE{?Y5g!jhaNew5?Hb2%ie;IACj3rzqg0nP-lWJ3-^TZ3f{S`u1D z*rA2VP<p|cg0_HGcUbD+nBW*tc?$h*2X~{7^JFx4JCgGr&Z}Kev7ps+ANU-a<dh?! zsYB%%REF^;nv)hR<wgQC_C*9g;`^G2U@bY0o#df7z=FA}cSl5DaASTK#w&WGdVyb4 zn9Gy;y@a~E?%OMCn^nKO=6mWbuOt{ThQeBUDpp`!WGvuO+LI;H<G_0KPfjkA`Z}TL zZrN&%L>0NkUs`O`>;>1|bk#KXXBbQPI<x(x!P;hwF&sh|vQe%zR2_e3s;0+1Nho`s z?Wy;;I#7}uRA1uRz)r>{Q+yAVV$3mkngd?Mi@}umfIkO!j9H$%!D{xMvBx@%SJ^)C Q32(FCB6?giwX{fz|2O-0SpWb4 delta 568 zcmZXPJ#W)c6o$`Dd@r$^G*&{@(mJT>M;giy3aBj-87c%~pc1+*0}^QnNg826T-h#F zAW?^^TU9;|R4_5X!U96xDrN@6z{WsV#1CL$gL8r^Au-%XkKcRz9{bz*HzgJSnX(pE z->WZ1+5&(ioeMVw1XBvX8yg~zWjRmWlSSf3IV$qe4>@h%2XnGG23rD-(&<X*0Jte| zPxT}RoxjNhY{lV547v)sM{vd(Y$kdG2Dmo33hLu<%s-If32>*uJ@elkb<;I>|NBNO z4)r{A&BLW<p+ip13OWYVC!juw@2rB%!%|@iOPTTLxAj;g6ZCJb%4)S1dVcgU`7$Of zET)SIgY#RJ8kW<q#A_7xql7Ua9AS!)=$ZXlsLM2<XR(>VLWwl&Cv5n)!$zg%wL<C( zwC0f%qmQwKW7*SvS6CMrm#~rz<O=EA=xg?uoGFurym;APZ|DV{xyF&nQG2a%(f2)H z&v8D_Sbj2m@Aw0@ZN^E)9YU|;Zgs7#+xT?2Wv_E43DqEI1o}QYPFZ^N{0YO6-GL^V w=FiX>MsKf&gH9;6amU$J=QzEJqq*y9k97_=b3@_<KF{r&@np=7Wkp*20Y|8M;{X5v -- GitLab