diff --git a/ariaec/econverter.py b/ariaec/econverter.py index b8bb092ec43388bd39e87153c8cc6cbfe19e9e15..3555110c93d4e8db3100d97ecf25f0c7373e46c0 100644 --- a/ariaec/econverter.py +++ b/ariaec/econverter.py @@ -686,12 +686,16 @@ class AriaEcXMLConverter(AriaXMLConverter): "_hbond.tbl") ssdist_file = os.path.join(self.settings.infra["tbl"], self.outprefix + "_ssdist.tbl") + logger.info(" Dihedral restraints (%s)" % dihed_file) self.write_dihedral_tbl(protein.sec_struct.ss_matrix, dihed_file) + logger.info(" Helix bond restraints (%s)" % hb_file) self.write_hb_tbl(protein, hb_file, hbmap=hbmap, n_hb=n_hb, lr_type=self.settings.setup.config['longrange_hbtype'], dminus=self.settings.setup.config['hb_dminus'], dplus=self.settings.setup.config['hb_dplus']) + logger.info(" Secondary structure restraints (%s)" % + ssdist_file) self.write_ssdist_tbl(protein.sec_struct.ss_matrix, protein.sec_struct.ssdist, ssdist_file) @@ -721,18 +725,18 @@ class AriaEcXMLConverter(AriaXMLConverter): :param desc: :return: """ + logger.info("Reading aria template file %s" % aria_template) if aria_template: template = os.path.abspath(aria_template) try: t = open(template, 'r') - except IOError: - sys.exit("""Can't open "%s" file.""" % template) + except Exception, msg: + sys.exit("""Can't open "%s" file. %s""" % (template, msg)) aria_project_template = t.read() t.close() else: - logger.info("Reading default aria template file %s" % self.settings.ARIAPROJ_TEMPLATE) aria_project_template = pkgr.resource_string( __name__, self.settings.ARIAPROJ_TEMPLATE) diff --git a/ariaec/econverter.pyc b/ariaec/econverter.pyc index 911bdea6e1338309d118f619cc0cd84cea25f521..6d3501f5d813cfc8988d2752f1c152586a65384a 100644 Binary files a/ariaec/econverter.pyc and b/ariaec/econverter.pyc differ diff --git a/ariaec/ecsettings.py b/ariaec/ecsettings.py index ebad6247d37da8d6f810d0b566b422a01ba8c7c3..8eecb1cf5c65d3d91ac21a06cffc9a57437b52b5 100644 --- a/ariaec/ecsettings.py +++ b/ariaec/ecsettings.py @@ -92,7 +92,7 @@ class AriaEcSettings(Settings): "bbconv", "contactdef")) self._infra = {} self._scsc_min = None - self._ss_dist = None + self._ssdist = None self._template = None self.outdir = os.getcwd() self.name = name @@ -123,10 +123,29 @@ class AriaEcSettings(Settings): if self.infra: self._up_infra() + @property + def ssdist(self): + if not self._ssdist: + if self.main.config["ss_dist_file"] and \ + os.path.exists(self.main.config["ss_dist_file"]): + self._ssdist = self.main.config["ss_dist_file"] + else: + self._ssdist = pkgr.resource_filename(__name__, self.SS_DIST) + return self._ssdist + + @property + def template(self): + if not self._template: + if self.main.config["ariaproject_template"] and \ + os.path.exists(self.main.config["ariaproject_template"]): + self._template = self.main.config["ariaproject_template"] + else: + self._template = pkgr.resource_filename(__name__, + self.ARIAPROJ_TEMPLATE) + return self._template + @property def scsc_min(self): - # TODO: use cpickle only if we can't read scsc file in .ini conf !!! - # Otherwise use another format ... # If scsc_min already computed if not self._scsc_min: try: diff --git a/ariaec/ecsettings.pyc b/ariaec/ecsettings.pyc index 14a6ab0431a6f0549d2010cb1be33f34717c8df2..de9ac5fb88e2143023317d03576a8d895716bfba 100644 Binary files a/ariaec/ecsettings.pyc and b/ariaec/ecsettings.pyc differ diff --git a/ariaec/protein.py b/ariaec/protein.py index d0802bcac3646b4c293e93bcbce6c2adf78273b3..8b5a48fc3842a35fa68f2382bea14ccc93e5d1ad 100644 --- a/ariaec/protein.py +++ b/ariaec/protein.py @@ -207,12 +207,14 @@ class SsList: """ filename = os.path.abspath(ssdistpath) if ssdistpath else None + logger.info("Loading ss dist file") try: with open(filename) as f: self._read_ssdist(f, filename=filename) - except IOError: + except Exception, message: + logger.error("%s" % message) logger.error("Can't load given ss dist file...") - logger.info("Loading default ss dist file") + logger.error("Loading default ss dist file") with pkgr.resource_stream(__name__, self.settings.SS_DIST) as f: self._read_ssdist(f, filename=self.settings.SS_DIST) @@ -457,8 +459,13 @@ class Protein: if ssdist_filename: # Read secondary distance matrix self.sec_struct.read_ssdist(ssdist_filename) + else: + logger.error("No secondary structure distance file found. Please " + "check configuration file") if self.aa_sequence.sequence: # Synchronise sec structure sequence with aa sequence + logger.info("Align secondary structure sequence with protein " + "sequence") self.sec_struct.seq_sublist(self.aa_sequence.sequence) if ssidx: logger.info("Using secondary structure index for amino acid " diff --git a/ariaec/protein.pyc b/ariaec/protein.pyc index 9384a753ca62347a0205225fbddc43a197d46c95..44407c48708b929725c1e5963072313920b55827 100644 Binary files a/ariaec/protein.pyc and b/ariaec/protein.pyc differ diff --git a/ariaec/protmap.py b/ariaec/protmap.py index 0bba9ebb679adea283309819b2aa2f7d39fd4b0f..fcb55694aaa7f4ecf2e802e91cfccddb3785d3c7 100644 --- a/ariaec/protmap.py +++ b/ariaec/protmap.py @@ -614,7 +614,7 @@ class ResAtmMap(ProteinMap): newmap[:] = self.copy().stack().groupby(level=0).min() return newmap - def contact_map(self, contactdef, scsc_min=None): + def contact_map(self, contactdef, scsc_min=None, def_cut=5.0): """ 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 @@ -632,12 +632,13 @@ class ResAtmMap(ProteinMap): # Initialize contact map to a boolean matrix filled with False contact_map = ResAtmMap(sequence=self.sequence, mtype="contact", desc=self.desc, sym=self.sym, path=self.path) + def_cutoff = float(contactdef.get("default_cutoff")) if float( + contactdef.get("default_cutoff")) else def_cut if type(contactdef) == float: contact_map[:] = self.applymap(lambda x: x < contactdef) - elif sum(x is not None for x in contactdef.values()) == 1 and \ - contactdef.get("default_cutoff"): + elif sum(x is not None for x in contactdef.values()) == 1 and def_cutoff: logger.info("Using default cutoff") contact_map[:] = self.applymap(lambda x: x < contactdef.get("default_cutoff")) @@ -649,8 +650,12 @@ class ResAtmMap(ProteinMap): for pair in contactdef.keys(): if pair == "default_cutoff": continue - treshold = contactdef[pair] pair = tuple(pair.upper().split("_")) + if contactdef[pair] > def_cutoff: + treshold = contactdef[pair] + else: + logger.warning("Treshold for %s ignored (lower than " + "the default cutoff)" % str(pair)) logger.info( "Filtering values in matrix related to %s (%s)" % (str(pair), str(treshold))) diff --git a/ariaec/protmap.pyc b/ariaec/protmap.pyc index a6a0cfb3e5065b7c22b52cd6b6e910aff70fdace..9608866141f32929e6046b770d1ff1e170af4106 100644 Binary files a/ariaec/protmap.pyc and b/ariaec/protmap.pyc differ diff --git a/ariaec/setup.py b/ariaec/setup.py index 1aebaa8f0e969fd26bf637d7160e87491ff98945..335a376c45c399144b5dc9e1d2d1fa5d58150f0e 100644 --- a/ariaec/setup.py +++ b/ariaec/setup.py @@ -58,11 +58,9 @@ class AriaEcSetup: # ------------------------- Load sequence ---------------------------- # self.protein.set_aa_sequence(self.settings.setup.args.get("seq", None)) # -------------- Load secondary structure prediction ----------------- # - ss_file = self.settings.main.config["ss_dist_file"] if \ - self.settings.main.config["ss_dist_file"] else None self.protein.set_sec_struct(self.settings.setup.args.get("sspred", None), - ss_file, + ssdist_filename=self.settings.ssdist, ssidx=self.settings.setup.args.get( "ssidx", False)) # -------------------------------------------------------------------- # @@ -148,6 +146,7 @@ class AriaEcSetup: # Setting contact number limit for hbmap n_hb = int(len(self.protein.aa_sequence.sequence) * self.settings.setup.config.get("nf_longrange_hb")) + logger.info("Writing tbl files ...") tbl_files = self.converter.write_tbl_restraints( self.protein, hbmap=self.hbmaps, n_hb=n_hb) @@ -163,11 +162,7 @@ class AriaEcSetup: xmlseq_file = self.converter.write_xmlseq() # ---------------------- ARIA XML project file ----------------------- # - aria_template = self.settings.main.config["ariaproject_template"] if \ - self.settings.main.config["ariaproject_template"] and \ - os.path.exists(self.settings.main.config["ariaproject_template"])\ - else None - self.converter.write_ariaproject(aria_template, + self.converter.write_ariaproject(self.settings.template, xmlseq_file, dist_files, tbl_files, desc="_".join(sorted(self.allresmap.keys()))) # ------------------------------ others ------------------------------ # diff --git a/ariaec/setup.pyc b/ariaec/setup.pyc index 9acd618838fbdac5ab9e9b455d1417883426c65d..4017775356dffc582cc0d28878907f1eb8fbb147 100644 Binary files a/ariaec/setup.pyc and b/ariaec/setup.pyc differ diff --git a/version.py b/version.py index 282defff11555733eda4731f253d20d680bfeec7..e0ce9534e68845f3859089100de0c3af44c750c3 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 \ No newline at end of file +__version__=v0.1.11-dev2-8-g4239f50 \ No newline at end of file