Exemple #1
0
 def __init__(self, path, *args):
     fileInfo = QFileInfo(path)
     QgsRasterLayer.__init__(self, path, *args)
     GLayer.__init__(self, baseName=fileInfo.baseName(), name="rLayer<" + fileInfo.baseName() + ">")
     if not self.isValid():
         GPrint(self._name + " failed to load.", "!!")
     else:
         GPrint(self._name + " successfully loaded.")
Exemple #2
0
 def load_icon(self, fileinfo):
     key = 'default'
     icons = self.icons
     if fileinfo.isSymLink():
         if not fileinfo.exists():
             return icons['zero']
         fileinfo = QFileInfo(fileinfo.readLink())
     if fileinfo.isDir():
         key = 'dir'
     else:
         ext = unicode(fileinfo.completeSuffix()).lower()
         key = self.key_from_ext(ext)
     return self.cached_icon(key)
Exemple #3
0
    def __init__(self, postGISDatabase=None, baseName=None, table=None, subset=None, schema="public",
                 geoColumn="geom", path=None, fileType="ogr", loadDefaultStyleFlag=True):

        # Parameters
        self._name = ""
        self._baseName = ""
        self._symbols = None
        self._color = QColor()

        # Query data from PostGIS database
        if postGISDatabase:
            if baseName:
                name = "vLayer<" + baseName + ">"
            else:
                baseName = table
                name = "vLayer<" + table + ">"

            GLayer.__init__(self, name=name, baseName=baseName)
            postGISDatabase.uri.setDataSource(schema, table, geoColumn, subset)
            QgsVectorLayer.__init__(self, postGISDatabase.uri.uri(), self._name, postGISDatabase.user)

        # Query data from file
        else:
            fileInfo = QFileInfo(path)
            name = "vLayer<" + fileInfo.baseName() + ">"
            baseName = fileInfo.baseName()

            GLayer.__init__(self, name=name, baseName=baseName)
            QgsVectorLayer.__init__(self, path=path, baseName=fileInfo.baseName(), providerLib=fileType,
                                    loadDefaultStyleFlag=loadDefaultStyleFlag)

        if not self.isValid():
            GPrint(self._name + " failed to load.", "!!")
        else:
            GPrint(self._name + " successfully loaded.")

            # Deal with color param
            self._symbols = self.rendererV2().symbols()
            self._color = self._symbols[0].color()
    def run_using_old_movie_obj_to_hold_sim_params(self, movie, args):
        self._movie = movie 
        assert args >= 1
        #for now args has number of simulations
        self.numSim = args[0][0]
        #set the program path, database path and write the paths.txt in here
        self.errcode = self.set_options_errQ( )
        if self.errcode: # used to be a local var 'r'
            return
        self.sim_input_file = self.sim_input_filename(self.part)
        if self.sim_input_file is None:
            return
           
        self.set_waitcursor(True)
        progressBar = self.win.statusBar().progressBar
        
        # Disable some QActions (menu items/toolbar buttons) while the sim is running.
        self.win.disable_QActions_for_sim(True)

        try: #bruce 050325 added this try/except wrapper, to always restore cursor
            self.simProcess = None #bruce 051231
            self.setup_sim_args(args)
            progressBar.setRange(0, 0)
            progressBar.reset()
            progressBar.show()
            env.history.statusbar_msg("Running Rosetta")
            
            rosettaFullBaseFileName = self.tmp_file_prefix 
            rosettaFullBaseFileInfo = QFileInfo(rosettaFullBaseFileName)
            rosettaWorkingDir = rosettaFullBaseFileInfo.dir().absolutePath()
            rosettaBaseFileName = rosettaFullBaseFileInfo.fileName()
            
            rosettaProcess = Process()
            rosettaProcess.setProcessName("rosetta")
            rosettaProcess.redirect_stdout_to_file("%s-rosetta-stdout.txt" %
                rosettaFullBaseFileName)
            rosettaProcess.redirect_stderr_to_file("%s-rosetta-stderr.txt" %
                rosettaFullBaseFileName)
            rosettaStdOut = rosettaFullBaseFileName + "-rosetta-stdout.txt"
            rosettaProcess.setWorkingDirectory(rosettaWorkingDir)
            environmentVariables = rosettaProcess.environment()
            rosettaProcess.setEnvironment(environmentVariables)
            msg = greenmsg("Starting Rosetta sequence design")
            env.history.message(self.cmdname + ": " + msg)
            env.history.message("%s: Rosetta files at %s%s%s.*" %
                (self.cmdname, rosettaWorkingDir, os.sep,
                 rosettaFullBaseFileInfo.completeBaseName()))
            
            abortHandler = AbortHandler(self.win.statusBar(), "rosetta")
            errorCode = rosettaProcess.run(self.program, self._arguments, False, abortHandler)
            
            abortHandler = None
            if (errorCode != 0):
                if errorCode == -2: # User pressed Abort button in progress dialog.
                    msg = redmsg("Aborted.")
                    env.history.message(self.cmdname + ": " + msg)
                    env.history.statusbar_msg("")
                    if self.simProcess: #bruce 051231 added condition (since won't be there when use_dylib)
                        self.simProcess.kill()
                else: 
                    msg = redmsg("Rosetta sequence design failed. For details check" + rosettaStdOut)
                    env.history.message(self.cmdname + ": " + msg)
                    self.errcode = 2;
                    env.history.statusbar_msg("")
            else:
                #run has been successful
                #open pdb file
                env.history.statusbar_msg("")
                errorInStdOut = self.checkErrorInStdOut(rosettaStdOut)
                if errorInStdOut:
                    msg = redmsg("Rosetta sequence design failed, Rosetta returned %d" % errorCode)
                    env.history.message(self.cmdname + ": " + msg)
                    env.history.statusbar_msg("")
                else:    
                    #env.history.message(self.cmdname + ": " + msg)
                    outputFile = self.outfile + '_0001.pdb'
                    outPath = os.path.join(os.path.dirname(self.tmp_file_prefix), outputFile)
                    if os.path.exists(outPath):
                        msg = greenmsg("Rosetta sequence design succeeded")
                        env.history.message(self.cmdname + ": " + msg)
                        #find out best score from all the generated outputs
                        score, bestSimOutFileName = getScoreFromOutputFile(self.tmp_file_prefix, self.outfile, self.numSim)
                        chosenOutPath = os.path.join(os.path.dirname(self.tmp_file_prefix), bestSimOutFileName)
                        insertpdb(self.assy, str(chosenOutPath), None)
                        env.history.statusbar_msg("")
                        fastaFile = self.outfile + "_design.fasta" 
                        fastaFilePath = os.path.join(os.path.dirname(self.tmp_file_prefix), fastaFile)
                        proteinSeqList = processFastaFile(fastaFilePath, bestSimOutFileName, self.sim_input_file[0:len(self.sim_input_file)-4])
                        #score = getScoreFromOutputFile(outPath)
                        if score is not None and proteinSeqList is not []:
                            self.showResults(score, proteinSeqList)
                        
                    else:
                        msg1 = redmsg("Rosetta sequence design failed. ")
                        msg2 = redmsg(" %s file was never created by Rosetta." % outputFile)
                        msg = msg1 + msg2
                        env.history.message(self.cmdname + ": " + msg)
                        env.history.statusbar_msg("")
        
        except:
            print_compact_traceback("bug in simulator-calling code: ")
            self.errcode = -11111
        self.set_waitcursor(False)
        self.win.disable_QActions_for_sim(False)
        env.history.statusbar_msg("")
        if not self.errcode:
            return # success
        
        return # caller should look at self.errcode