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)
예제 #3
0
 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)
예제 #4
0
    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')
예제 #5
0
    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)
예제 #6
0
    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)