def runPhenixProgram(cls, program, args=None, extraEnvDict=None, cwd=None): """ Internal shortcut function to launch a Phenix program. """ env = cls.getEnviron() if extraEnvDict is not None: env.update(extraEnvDict) program = PHENIX_PYTHON + program pwutils.runJob(None, program, args, env=env, cwd=cwd)
def runProgram(program, params): """ Runs a em program setting its environment matching a prefix""" env = None # Allow passing absolute paths programName = basename(program) from pwem import Domain # Avoid detecting xmipp installation script to be run as xmipp, since # it will run devel installation with production xmippEnv.json environment: # Example: want to compile devel with java 8, but production was compiled with java 11. # So java 11 makes it into the PATH taking priority if programName.startswith('xmipp_'): print("Xmipp command detected") xmipp3 = Domain.getPlugin('xmipp3').Plugin env = xmipp3.getEnviron() if programName.startswith('relion'): print("relion command detected") relion = Domain.getPlugin("relion").Plugin env = relion.getEnviron() elif (programName.startswith('e2') or programName.startswith('sx')): print("eman/sparx command detected") eman2 = Domain.importFromPlugin('eman2', 'Plugin') env = eman2.getEnviron() elif programName.startswith('b'): print("Bsoft command detected") bsoft = Domain.importFromPlugin('bsoft', 'Plugin') env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def _convertGain(self): """ We need to transform gain file for a possible polishing job. """ rotation = self.gainRot.get() flip = self.gainFlip.get() gainFn = self.gainFile.get() if rotation or flip: args = "%s %s " % (gainFn, self._getPath(os.path.basename(gainFn))) if flip: # flip axis Y - left to right args += "--process xform.flip:axis=%s " % ("y" if flip == 2 else "x") if rotation: args += "--rotate %d " % (rotation * 90) from pwem import Domain eman2 = Domain.importFromPlugin('eman2') pwutils.runJob(self._log, eman2.Plugin.getProgram('e2proc2d.py'), args, env=eman2.Plugin.getEnviron()) return self._getPath(os.path.basename(gainFn)) else: outputGain = self._getPath(os.path.basename(gainFn)) pwutils.createAbsLink(gainFn, outputGain) return outputGain
def launchBoxingGUIStep(self): program = emantomo.Plugin.getProgram("e2spt_boxer_convnet.py") args = "--label particles_00" if self.useGpu.get(): args += " --gpuid %s" % self.getGpuList()[0] pwutils.runJob(None, program, args, env=emantomo.Plugin.getEnviron(), cwd=self._getExtraPath()) self._createOutput()
def createThumbnailStep(self, micFn, micId): outputFn = self._getOutputMicThumbnail(micId) args = "%s %s " % (micFn, outputFn) args += "--fouriershrink %s --process normalize" % self.scaleFactor.get( ) # Internal workaround to launch an EMAN2 program. """ import pyworkflow.em.packages.eman2 as eman2 pwutils.runJob(self._log, eman2.getEmanProgram('e2proc2d.py'), args, env=eman2.getEnviron())
def createCircularMask(self, radius, refImage, outputFile): """ Create a circular mask with the given radius (pixels) and with the same dimensions of the refImage. The radius should be less or equal dim(refImage)/2 The mask will be stored in 'outputFile' """ #TODO: right now we need to call an xmipp program to create # the spherical mask, it would be nicer to have such utility in the binding import pyworkflow.em.packages.xmipp3 as xmipp3 xmippEnv = xmipp3.getEnviron() inputRef = xmipp3.getImageLocation(refImage) runJob(None, 'xmipp_transform_mask', '-i %s --create_mask %s --mask circular -%d' % (inputRef, outputFile, radius), env=xmippEnv)
def _visualize(self, obj, **kwargs): views = [] cls = type(obj) # For now handle both types of SetOfTiltSeries together if issubclass(cls, schrodingerScipion.objects.SchrodingerAtomStruct) or \ issubclass(cls, schrodingerScipion.objects.SchrodingerBindingSites) or \ issubclass(cls, schrodingerScipion.objects.SchrodingerPoses): pwutils.runJob(None, Plugin.getHome('maestro'), obj.getFileName(), env=Plugin.getEnviron()) return views
def runGautomatch(micName, refStack, workDir, args, env=None): # We convert the input micrograph on demand if not in .mrc outMic = os.path.join(workDir, pwutils.replaceBaseExt(micName, 'mrc')) if micName.endswith('.mrc'): pwutils.createLink(micName, outMic) else: em.ImageHandler().convert(micName, outMic) if refStack is not None: args = ' %s --T %s %s' % (outMic, refStack, args) else: args = ' %s %s' % (outMic, args) pwutils.runJob(None, getProgram(), args, env=env) # After picking we can remove the temporary file. pwutils.cleanPath(outMic)
def resizeTomograms(self): program = emantomo.Plugin.getProgram("e2proc3d.py") xDim = self.xDim.get() yDim = self.yDim.get() zDim = self.zDim.get() for tomo in self.inputTomograms.get().iterItems(): tomo_file = tomo.getFileName() out_file = self._getExtraPath( pwutils.removeBaseExt(tomo_file) + ".mrc") args = "%s %s --process normalize --clip %d,%d,%d" \ % (tomo_file, out_file, xDim, yDim, zDim) pwutils.runJob(None, program, args, env=emantomo.Plugin.getEnviron())
def _viewResults(self, e=None): import os views = [] fnBaseDir = self.getResultsDir() if not fnBaseDir: if os.path.exists(self.protocol._getExtraPath(CQUARKSERVER)): os.system("rm -rf %s" % self.protocol._getExtraPath(CQUARKSERVER)) url = self.url.get().strip() if not url.endswith("index.html"): url += "/index.html" urlDir = url.replace("/index.html", "").split(".edu")[1] if 'I-TASSER' in urlDir: includeDirs = "-I jsmol,3Dmol,I-TASSER/output" else: includeDirs = "-I jsmol,3Dmol,%s" % urlDir os.system('cd %s; wget %s --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 %s'%\ (self.protocol._getExtraPath(),includeDirs,url)) if 'I-TASSER' in urlDir: extraDownloads = [ 'I-TASSER/output/bin/jmol/j2s/core/package.js', 'I-TASSER/output/bin/jmol/j2s/core/corescript.z.js', 'I-TASSER/output/bin/jmol/j2s/core/core.z.js', 'I-TASSER/output/bin/jmol/j2s/core/corebio.z.js', 'I-TASSER/output/bin/jmol/j2s/JM/Resolver.js', 'I-TASSER/output/bin/jmol/j2s/J/shape/Mesh.js', 'I-TASSER/output/bin/jmol/j2s/J/render/MeshRenderer.js', 'I-TASSER/output/bin/jmol/j2s/core/corescriptcmd.z.js', 'I-TASSER/output/bin/jmol/j2s/J/thread/SpinThread.js', 'I-TASSER/output/bin/jmol/j2s/J/g3d/HermiteRenderer.js', 'I-TASSER/output/bin/jmol/j2s/core/coretext.z.js' ] for fn in extraDownloads: os.system('cd %s; wget --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 https://%s/%s'%\ (self.protocol._getExtraPath(),CQUARKSERVER,fn)) fnBaseDir = self.getResultsDir() if fnBaseDir: url = os.path.abspath(os.path.join(fnBaseDir, "index.html")) pwutils.runJob( None, "python", Plugin.getPluginHome('utils/showZLPredictResults.py') + " " + url) #webbrowser.open_new_tab(url) if not hasattr(self.protocol, "outputPdb_1"): for fn in Path(fnBaseDir).rglob('model*.pdb'): self.constructOutput(str(fn)) return views
def runGempicker(micName, workingDir, useGPU, args): # We convert the input micrograph on demand if not in .mrc outMic = os.path.join(workingDir, pwutils.replaceBaseExt(micName, 'mrc')) if micName.endswith('.mrc'): pwutils.createLink(micName, outMic) else: em.ImageHandler().convert(micName, outMic) refDir = join(workingDir, 'templates') maskSchDir = join(workingDir, 'maskSch') args += ' --dirTgt=%s --dirSch=%s --dirMskSch=%s ' % (workingDir, refDir, maskSchDir) # Run Gempicker: for mode in [0, 1]: pwutils.runJob(None, getProgram(useGPU), args + ' --mode=%d' % mode) # After picking we can remove the temporary file. pwutils.cleanPath(outMic)
def runProgram(program, params): env = None if program.startswith('xmipp'): import pyworkflow.em.packages.xmipp3 as xmipp3 env = xmipp3.getEnviron() if program.startswith('relion'): import pyworkflow.em.packages.relion as relion env = relion.getEnviron() elif (program.startswith('e2') or program.startswith('sx')): import pyworkflow.em.packages.eman2 as eman2 env = eman2.getEnviron() elif program.startswith('b'): import pyworkflow.em.packages.bsoft as bsoft env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def runProgram(program, params): env = None if program.startswith('xmipp'): import pyworkflow.em.packages.xmipp3 as xmipp3 env = xmipp3.getEnviron() if program.startswith('relion'): import pyworkflow.em.packages.relion as relion env = relion.getEnviron() elif (program.startswith('e2') or program.startswith('sx')): import pyworkflow.em.packages.eman2 as eman2 env = eman2.getEnviron() elif program.startswith('b'): import pyworkflow.em.packages.bsoft as bsoft env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def runGempicker(micName, workingDir, useGPU, args, log=None): # We convert the input micrograph on demand if not in .mrc outMic = os.path.join(workingDir, pwutils.replaceBaseExt(micName, 'mrc')) if micName.endswith('.mrc'): pwutils.createLink(micName, outMic) else: em.ImageHandler().convert(micName, outMic) refDir = join(workingDir, 'templates') maskSchDir = join(workingDir, 'maskSch') args += ' --dirTgt=%s --dirSch=%s --dirMskSch=%s ' % (workingDir, refDir, maskSchDir) # Run Gempicker: for mode in [0, 1]: pwutils.runJob(log, getProgram(useGPU), args + ' --mode=%d' % mode, env=getEnviron()) # After picking we can remove the temporary file. pwutils.cleanPath(outMic)
def test_AngBreakSymmetry(self): from tempfile import NamedTemporaryFile import pyworkflow.em.metadata as md fileTmp = NamedTemporaryFile(delete=False) partSet = SetOfParticles(filename=fileTmp.name) partSet.setAlignment(ALIGN_PROJ) # Populate the SetOfParticles with images # taken from images.mrc file # and setting the previous alignment parameters m = np.array([[ 0.71461016, 0.63371837, -0.29619813, 15], [ -0.61309201, 0.77128059, 0.17101008, 25], [ 0.33682409, 0.059391174, 0.93969262, 35], [ 0, 0, 0, 1]]) p = Particle() p.setLocation(1, "kk.mrc") p.setTransform(Transform(m)) partSet.append(p) partSet.write() print "import particles" protImport = self.newProtocol(ProtImportParticles, sqliteFile=fileTmp.name, samplingRate=1, importFrom=4, checkStack=False, haveDataBeenPhaseFlipped=False) self.launchProtocol(protImport) print "Run AngBreakSymmetry particles" protBreakSym = self.newProtocol(XmippProtAngBreakSymmetry, symmetryGroup="i2") protBreakSym.inputParticles.set(protImport.outputParticles) self.launchProtocol(protBreakSym) os.chdir(protBreakSym._getPath()) from pyworkflow.utils import runJob runJob(None, 'xmipp_angular_distance', "--ang1 images.xmd --ang2 input_particles.xmd --sym i2 --oroot kk", env=getEnviron()) mdRober = md.MetaData("kk_vec_diff_hist.txt") objId = mdRober.firstObject() count = mdRober.getValue(md.MDL_COUNT, objId) self.assertEqual(count, 1, "There was a problem with break symmetry") os.unlink(fileTmp.name)
def runGautomatch(cls, micNameList, refStack, workDir, extraArgs, env=None, runJob=None): """ Run Gautomatch with the given parameters. If micrographs are not .mrc, they will be converted. If runJob=None, it will use pwutils.runJob. """ args = '' ih = ImageHandler() for micName in micNameList: # We convert the input micrograph on demand if not in .mrc outMic = os.path.join(workDir, pwutils.replaceBaseExt(micName, 'mrc')) if micName.endswith('.mrc'): pwutils.createAbsLink(os.path.abspath(micName), outMic) else: ih.convert(micName, outMic) args += ' %s/*.mrc' % workDir if refStack is not None: args += ' -T %s' % refStack args += ' %s' % extraArgs environ = env if env is not None else cls.getEnviron() if runJob is None: pwutils.runJob(None, cls.getProgram(), args, env=environ) else: runJob(cls.getProgram(), args, env=environ) for micName in micNameList: outMic = os.path.join(workDir, pwutils.replaceBaseExt(micName, 'mrc')) # After picking we can remove the temporary file. pwutils.cleanPath(outMic)
def convertMask(img, outputPath, newPix=None, newDim=None, threshold=True): """ Convert mask to mrc format read by Relion. Params: img: input image to be converted. outputPath: it can be either a directory or a file path. If it is a directory, the output name will be inferred from input and put into that directory. If it is not a directory, it is assumed is the output filename. newPix: output pixel size (equals input if None) newDim: output box size Return: new file name of the mask. """ index, filename = img.getLocation() imgFn = locationToRelion(index, filename) inPix = img.getSamplingRate() if os.path.isdir(outputPath): outFn = os.path.join(outputPath, pwutils.replaceBaseExt(imgFn, 'mrc')) else: outFn = outputPath params = '--i %s --o %s --angpix %0.5f' % (imgFn, outFn, inPix) if newPix is not None: params += ' --rescale_angpix %0.5f' % newPix if newDim is not None: params += ' --new_box %d' % newDim if threshold: params += ' --threshold_above 1 --threshold_below 0' pwutils.runJob(None, 'relion_image_handler', params, env=Plugin.getEnviron()) return outFn
def _frombase(inFileName, outFileName, log, oParam=1): # check if maxit exists, # if it does not then complain # convert pdb to cif using maxit global maxitAvailable try: maxitAvailable except: if not os.path.exists(Plugin.getMaxitBin()): maxitAvailable = False # show error message else: maxitAvailable = True if maxitAvailable: args = ' -input "' + inFileName + '" -output "' + outFileName + \ '" -o %d' % oParam log.info('Launching: ' + Plugin.getMaxitBin() + args) # run in the background env = getEnviron() pwutils.runJob(None, Plugin.getMaxitBin(), args, env=env) else: # this is not the ideal conversion but it is better # than nothing aSH = AtomicStructHandler() aSH.read(inFileName) aSH.write(outFileName) # show error message print( pwutils.redStr( "Please, install maxit with the command 'scipion installb maxit'" )) print( pwutils.redStr( "and restart scipion. Packages bison and flex are needed.")) print( pwutils.redStr("If maxit is installed check %s in scipion.conf" % MAXIT_HOME))
def runProgram(program, params): """ Runs a em program setting its environment matching a prefix""" env = None # Allow passing absolute paths programName = basename(program) from pwem import Domain if programName.startswith('xmipp'): xmipp3 = Domain.getPlugin('xmipp3').Plugin env = xmipp3.getEnviron() if programName.startswith('relion'): relion = Domain.getPlugin("relion").Plugin env = relion.getEnviron() print(env) elif (programName.startswith('e2') or programName.startswith('sx')): eman2 = Domain.importFromPlugin('eman2', 'Plugin') env = eman2.getEnviron() elif programName.startswith('b'): bsoft = Domain.importFromPlugin('bsoft', 'Plugin') env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def _viewResults(self, e=None): views = [] i = self.pose.get() fnPose = None for small in self.protocol.outputSmallMolecules: if small.getObjId() == i: fnPose = small.poseFile.get() break if fnPose: i = int(fnPose.split('@')[0]) fnPv = self.protocol.outputPoses.getFileName() fnPose = self.protocol._getTmpPath('posei.maegz') pwutils.runJob(None, schrodinger_plugin.getHome('utilities/maesubset'), "-n %d:%d %s -o %s" % (i, i, fnPv, fnPose)) fnStruct = self.protocol.inputGrid.get().structureFile.get() fnBoth = self.protocol._getTmpPath('pv.maegz') pwutils.runJob(None, schrodinger_plugin.getHome('utilities/structcat'), "-imae %s -imae %s -o %s" % (fnPose,fnStruct,fnBoth)) pwutils.runJob(None, schrodinger_plugin.getHome('maestro'), fnBoth, env=schrodinger_plugin.getEnviron()) return views
def __runXmippProgram(self, program, args): """ Internal shortcut function to launch a Xmipp program. """ import pyworkflow.em.packages.xmipp3 as xmipp3 xmippEnv = xmipp3.getEnviron() runJob(None, program, args, env=xmippEnv)
def runScript(inputScript, ext, log=None, cwd=None): scriptName = removeBaseExt(inputScript) args = " %s @%s" % (ext, scriptName) runJob(log, SPIDER, args, env=dict(environment), cwd=cwd)
def projectPhantom(featFileName, paramFileName, particlesFileName): args = "-i %s -o %s" % (featFileName, particlesFileName) args += " --params %s" % paramFileName runJob(None, "xmipp_phantom_project", args, env=Plugin.getEnviron())
def show(self): pwutils.runJob(None, '', self._cmd, env=Vmd.getEnviron())
def show(self): runJob(None, '', self._cmd, env=getVmdEnviron())
def runXmippProgram(program, args=""): """ Internal shortcut function to launch a Xmipp program. """ runJob(None, program, args, env=getEnviron())
def show(self): runJob(None, '', self._cmd, env=getVmdEnviron())
# * # ************************************************************************** """ Launch main project window """ import sys import pyworkflow.utils as pwutils if __name__ == '__main__': program = sys.argv[1] params = ' '.join('"%s"' % x for x in sys.argv[2:]) env = None if program.startswith('xmipp'): import pyworkflow.em.packages.xmipp3 as xmipp3 env = xmipp3.getEnviron() if program.startswith('relion'): import pyworkflow.em.packages.relion as relion env = relion.getEnviron() elif (program.startswith('e2') or program.startswith('sx')): import pyworkflow.em.packages.eman2 as eman2 env = eman2.getEnviron() elif program.startswith('b'): import pyworkflow.em.packages.bsoft as bsoft env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def runXmippProgram(cls, program, args=""): """ Internal shortcut function to launch a Xmipp program. """ pwutils.runJob(None, program, args, env=cls.getEnviron())
def runChimeraProgram(cls, program, args="", cwd=None): """ Internal shortcut function to launch chimera program. """ env = cls.getEnviron() pwutils.runJob(None, program, args, env=env, cwd=cwd)
def runCCP4Program(program, args="", extraEnvDict=None, cwd=None): """ Internal shortcut function to launch a CCP4 program. """ env = Plugin.getEnviron() if extraEnvDict is not None: env.update(extraEnvDict) pwutils.runJob(None, program, args, env=env, cwd=cwd)
def runProgram(cls, program=None, args="", cwd=None): """ Internal shortcut function to launch chimera program. """ prog = program or cls.getProgram() pwutils.runJob(None, prog, args, env=cls.getEnviron(), cwd=cwd)
""" import sys import pyworkflow.utils as pwutils if __name__ == '__main__': program = sys.argv[1] params = ' '.join('"%s"' % x for x in sys.argv[2:]) env = None if program.startswith('xmipp'): import pyworkflow.em.packages.xmipp3 as xmipp3 env = xmipp3.getEnviron() if program.startswith('relion'): import pyworkflow.em.packages.relion as relion env = relion.getEnviron() elif (program.startswith('e2') or program.startswith('sx')): import pyworkflow.em.packages.eman2 as eman2 env = eman2.getEnviron() elif program.startswith('b'): import pyworkflow.em.packages.bsoft as bsoft env = bsoft.getEnviron() pwutils.runJob(None, program, params, env=env)
def runScript(inputScript, ext, log=None, cwd=None): scriptName = removeBaseExt(inputScript) args = " %s @%s" % (ext, scriptName) runJob(log, SPIDER, args, env=dict(environment), cwd=cwd)
def _viewResults(self, e=None): import os views = [] fnBaseDir = self.getResultsDir() if not fnBaseDir: if os.path.exists(self.protocol._getExtraPath(SERVERDIR)): os.system("rm -rf %s" % self.protocol._getExtraPath(SERVERDIR)) url = self.url.get().strip() if url.endswith('/'): url = url[:-1] includeDirs = '-I site_media/jsmol -I site_media/jsmol/j2s/core -I StructPredV2/myjobs' os.system('cd %s; wget %s --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 %s'%\ (self.protocol._getExtraPath(),includeDirs,url)) fnResult = os.path.join( self.protocol._getExtraPath(SERVERDIR, 'StructPredV2', 'myjobs', os.path.split(url)[1])) pwutils.createLink( fnResult, os.path.join( self.protocol._getExtraPath(SERVERDIR, 'StructPredV2', 'myjobs', 'index.html'))) extraDownloads = [ 'site_media/jsmol/j2s/core/package.js', 'site_media/jsmol/j2s/core/core.z.js', 'site_media/jsmol/j2s/core/corescript.z.js', 'site_media/jsmol/j2s/core/corescript2.z.js', 'site_media/jsmol/j2s/core/corestate.z.js', 'site_media/jsmol/j2s/core/coretext.z.js', 'site_media/jsmol/j2s/core/corezip.z.js', 'site_media/jsmol/j2s/core/coremenu.z.js', 'site_media/jsmol/j2s/core/corebio.z.js', 'site_media/jsmol/j2s/J/shape/Measures.js', 'site_media/jsmol/j2s/J/shape/Mesh.js', 'site_media/jsmol/j2s/J/render/MeasuresRenderer.js', 'site_media/jsmol/j2s/J/render/MeshRenderer.js', 'site_media/jsmol/j2s/J/util/Hermite.js', 'site_media/jsmol/j2s/J/thread/SpinThread.js', 'site_media/jsmol/j2s/J/g3d/HermiteRenderer.js' ] for fn in extraDownloads: os.system('cd %s; wget --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 http://%s/%s'%\ (self.protocol._getExtraPath(),SERVERDIR,fn)) fh = open(fnResult, encoding="utf-8") for line in fh.readlines(): if 'function loadSummaryPicture' in line: tokens = line.split('function loadSummaryPicture') otherId = tokens[1].split('(')[0] fnSummary = os.path.join( self.protocol._getExtraPath( SERVERDIR, 'StructPredV2', 'myjobs', '%ssummary_data' % otherId)) os.system('cd %s; wget --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 http://%s/%s'%\ (self.protocol._getExtraPath(),SERVERDIR,'StructPredV2/myjobs/%ssummary_data'%otherId)) urlId = url.split("_")[1] pwutils.createLink( fnSummary, os.path.join( self.protocol._getExtraPath( SERVERDIR, 'StructPredV2', 'myjobs', '%s.all_in_one.zip' % urlId))) fnPDB = os.path.join( self.protocol._getExtraPath( SERVERDIR, 'StructPredV2', 'myjobs', '%ssummary_pdb_image' % otherId)) os.system('cd %s; wget --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 http://%s/%s'%\ (self.protocol._getExtraPath(),SERVERDIR,'StructPredV2/myjobs/%ssummary_pdb_image'%otherId)) pwutils.createLink( fnPDB, os.path.join( self.protocol._getExtraPath( SERVERDIR, 'StructPredV2', 'myjobs', '%s.pdb' % urlId))) pwutils.createLink( fnPDB, self.protocol._getExtraPath('%s.pdb' % urlId)) if ".pdb'" in line: fn = line.split(' = ')[1].replace(';', '').strip() os.system('cd %s; wget --mirror -p --convert-links -P . -r --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 http://%s/%s.gz' % \ (self.protocol._getExtraPath(), SERVERDIR, fn)) fn = fn.replace("'", "")[1:] fnDomain = self.protocol._getExtraPath( os.path.split(fn)[1] + ".gz") pwutils.copyFile( self.protocol._getExtraPath(SERVERDIR + "/" + fn + ".gz"), fnDomain) os.system('cd %s; gunzip %s' % (self.protocol._getExtraPath(), os.path.split(fnDomain)[1])) fh.close() os.system('rm %s/wget-log*' % self.protocol._getExtraPath()) fnBaseDir = self.getResultsDir() if fnBaseDir: url = os.path.abspath(os.path.join(fnBaseDir, "index.html")) pwutils.runJob( None, "python", Plugin.getPluginHome('utils/showRaptorXResults.py') + " " + url) if not hasattr(self.protocol, "outputPdb"): for fn in glob.glob(self.protocol._getExtraPath('*.pdb')): suffix = '' fnBase = os.path.split(fn)[1] if '_' in fnBase: suffix = '_Domain%s' % fnBase.split('_')[1].replace( '.pdb', '') self.constructOutput(fn, suffix) return views
def runXmippProgram(program, args=""): """ Internal shortcut function to launch a Xmipp program. """ runJob(None, program, args, env=getEnviron())
def runScript(inputScript, log=None, cwd=None): args = " %s" % inputScript shellPath = '/bin/bash' runJob(log, shellPath, args, env=imagic.Plugin.getEnviron(), cwd=cwd)
def runScript(inputScript, log=None, cwd=None): args = " %s" % inputScript shellPath = '/bin/bash' runJob(log, shellPath, args, env=getEnviron(), cwd=cwd)