def import_redundant_nucleotides(self, pdbs, recalculate=False): """ """ try: logging.info("Importing redundant nucleotides") if not recalculate: recalculate = self.config["recalculate"]["redundant_nts"] if recalculate: pdb_list = pdbs self.__delete_old_data(pdbs) else: pdb_list = self.filter_out_analyzed_pdbs(pdbs, "redundant_nts") if pdb_list: MotifAtlasBaseClass._setup_matlab(self) for pdb_file in pdb_list: logging.info("Running matlab on %s", pdb_file) ifn, err_msg = self.mlab.loadRedundantNucleotides(pdb_file, nout=2) if err_msg == "": self.__import_temporary_file(ifn, pdb_file) else: MotifAtlasBaseClass._crash(self, err_msg) self.mark_pdb_as_analyzed(pdb_file, "redundant_nts") logging.info("%s", "=" * 40) except: e = sys.exc_info()[1] MotifAtlasBaseClass._crash(self, e)
def import_best_chains_and_models(self, pdbs, recalculate=False): """ """ try: logging.info("Importing best chains and models") if not recalculate: recalculate = self.config["recalculate"]["best_chains_and_models"] if recalculate: pdb_list = pdbs self.__delete_old_data(pdbs) else: pdb_list = self.filter_out_analyzed_pdbs(pdbs, "best_chains_and_models") if pdb_list: MotifAtlasBaseClass._setup_matlab(self) for pdb_file in pdb_list: logging.info("Running matlab on %s", pdb_file) # 'ABC', '1,2', '' best_chains, best_models, err_msg = self.mlab.loadBestChainsAndModels(pdb_file, nout=3) best_chains = ",".join(list(best_chains)) if err_msg == "": self.__import_into_db(pdb_file, best_chains, best_models) else: MotifAtlasBaseClass._crash(self, err_msg) self.mark_pdb_as_analyzed(pdb_file, "best_chains_and_models") logging.info("%s", "=" * 40) except: e = sys.exc_info()[1] MotifAtlasBaseClass._crash(self, e)
def save_mat_files(self,Loops): """Pass the Loops structure array back to matlab so that it can save the .mat files in the specified location.""" MotifAtlasBaseClass._setup_matlab(self) [status, err_msg] = self.mlab.aSaveLoops(Loops, self.config['locations']['loops_mat_files'], nout=2) if status == 0: logging.info('mat files saved') else: MotifAtlasBaseClass._crash(self,err_msg)
def loop_qa(self, pdb_id, release_id): """ """ logging.info('QA on %s', pdb_id) MotifAtlasBaseClass._setup_matlab(self) [ifn, err_msg] = self.mlab.aLoopQualityAssurance(pdb_id, nout=2) if err_msg != '': logging.warning('Error %s in pdb %s' % (err_msg, pdb_id)) else: self.__import_qa_from_csv(ifn, release_id) self.mark_pdb_as_analyzed(pdb_id,'qa')
def extract_loops(self, pdb_id, loop_type): """ """ try: MotifAtlasBaseClass._setup_matlab(self) """Loops - array of FR3D File structures. l - its length""" [Loops, l, err_msg] = self.mlab.extractLoops(pdb_id, loop_type, nout=3) if err_msg != '': MotifAtlasBaseClass._crash(self,err_msg) if Loops == 0: logging.info('No %s in %s', loop_type, pdb_id) return (0, 0) else: logging.info('Found %i loops', l) return (Loops, l) except: e = sys.exc_info()[1] MotifAtlasBaseClass._crash(self,e)
def import_interactions(self, pdbs, recalculate=False): """Determines what files need to be analyzed, deletes stored data if necessary, loops over the pdbs, runs matlab on each of them independently, matlab generates a temporary csv file, it's imported and immediately deleted.""" try: logging.info('Inside import_interactions') if not recalculate: recalculate = self.config['recalculate']['interactions'] if recalculate: pdb_list = pdbs self.__delete_interactions(pdbs) else: pdb_list = self.filter_out_analyzed_pdbs(pdbs,'interactions') if pdb_list: MotifAtlasBaseClass._setup_matlab(self) for pdb_file in pdb_list: logging.info('Running matlab on %s', pdb_file) ifn, status, err_msg = self.mlab.loadInteractions(pdb_file,nout=3) status = status[0][0] if status == 0: self.__import_interactions_from_csv(ifn, pdb_file) elif status == 2: # no nucleotides in the pdb file logging.info('Pdb file %s has no nucleotides', pdb_file) else: logging.warning('Matlab error code %i when analyzing %s', status, pdb_file) MotifAtlasBaseClass._crash(self,err_msg) self.mark_pdb_as_analyzed(pdb_file,'interactions') self.success = True logging.info('%s', '='*40) except: e = sys.exc_info()[1] MotifAtlasBaseClass._crash(self,e)