Ejemplo n.º 1
0
def getEnviron():
    """ Load the environment variables needed for Spider.
    If SPIDER_DIR is defined, the bin, man and proc folders will be 
    defined from it. If not, each of them should be defined separately. 
    """
    global SPIDER
    env = Environ(os.environ)
    SPIDER_PATH = env.getFirst((SPIDER_HOME, SPIDER_DIR), mandatory=True)  #
    # Scipion
    # definition

    # env.setInstalled(os.path.exists(SPIDER_DIR))

    if SPIDER_PATH is None:
        errors = ''
        for var in [SPBIN_DIR, SPMAN_DIR, SPPROC_DIR]:
            if not var in env:
                errors += "\n   Missing SPIDER variable: '%s'" % var
        if len(errors):
            print "ERRORS: " + errors
    else: 
        env.update({SPBIN_DIR: join(SPIDER_PATH, 'bin') + '/', # Spider needs this extra slash at the end
                    SPMAN_DIR: join(SPIDER_PATH, 'man') + '/',
                    SPPROC_DIR: join(SPIDER_PATH, 'proc') + '/'
                    })
    
    # Get the executable or 'spider' by default
    SPIDER = join(env[SPBIN_DIR], env.get('SPIDER', 'spider_linux_mp_intel64'))
    # expand ~ and vars
    SPIDER = abspath(os.path.expanduser(os.path.expandvars(SPIDER)))
        
    env.set('PATH', env[SPBIN_DIR], env.END)
    
    return env
Ejemplo n.º 2
0
    def getEnviron(cls):
        """ Load the environment variables needed for Imagic.
        IMAGIC_ROOT is set to IMAGIC_HOME MPI-related vars
        are set if IMAGIC_HOME/openmpi path exists
        IMAGIC_BATCH is needed for batch files to work.
        """
        env = Environ(os.environ)
        env.update({
            'IMAGIC_ROOT': cls.getHome(),
            'IMAGIC_BATCH': "1",
        })
        env.set('LD_LIBRARY_PATH', cls.getHome('lib'), env.BEGIN)

        mpidir = cls.getHome('openmpi')

        if os.path.exists(mpidir):
            env.update({
                'MPIHOME': mpidir,
                'MPIBIN': mpidir + '/bin',
                'OPAL_PREFIX': mpidir
            })
            env.set('PATH', mpidir + '/bin', env.BEGIN)

        else:
            print("Warning: IMAGIC_ROOT directory (", cls.getHome(),
                  ") does not contain openmpi folder.\n",
                  "No MPI support will be enabled.")

        return env
Ejemplo n.º 3
0
def getVmdEnviron():
    """ Return the proper environ to launch VMD.
    VMD_HOME variable is read from the ~/.config/scipion.conf file.
    """
    environ = Environ(os.environ)
    environ.set("PATH", os.path.join(os.environ["VMD_HOME"], "bin"), position=Environ.BEGIN)
    return environ
Ejemplo n.º 4
0
    def test_Environ(self):
        """ Test the Environ class with its utilities. """
        from pyworkflow.utils import Environ
        env = Environ({
            'PATH': '/usr/bin:/usr/local/bin',
            'LD_LIBRARY_PATH': '/usr/lib:/usr/lib64'
        })
        env1 = Environ(env)
        env1.set('PATH', '/usr/local/xmipp')
        self.assertEqual(env1['PATH'], '/usr/local/xmipp')
        self.assertEqual(env1['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH'])

        env2 = Environ(env)
        env2.set('PATH', '/usr/local/xmipp', position=Environ.BEGIN)
        self.assertEqual(env2['PATH'],
                         '/usr/local/xmipp' + os.pathsep + env['PATH'])
        self.assertEqual(env2['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH'])

        env3 = Environ(env)
        env3.update(
            {
                'PATH': '/usr/local/xmipp',
                'LD_LIBRARY_PATH': '/usr/local/xmipp/lib'
            },
            position=Environ.END)
        self.assertEqual(env3['PATH'],
                         env['PATH'] + os.pathsep + '/usr/local/xmipp')
        self.assertEqual(
            env3['LD_LIBRARY_PATH'],
            env['LD_LIBRARY_PATH'] + os.pathsep + '/usr/local/xmipp/lib')
Ejemplo n.º 5
0
def getEnviron():
    """ Load the environment variables needed for Spider.
    If SPIDER_DIR is defined, the bin, man and proc folders will be 
    defined from it. If not, each of them should be defined separately. 
    """
    global SPIDER
    env = Environ(os.environ)
    SPIDER_DIR = env.getFirst(('SPIDER_HOME', 'SPIDER_DIR'), mandatory=True)  #
    # Scipion
    # definition

    if SPIDER_DIR is None:
        errors = ''
        for var in ['SPBIN_DIR', 'SPMAN_DIR', 'SPPROC_DIR']:
            if not var in env:
                errors += "\n   Missing SPIDER variable: '%s'" % var
        if len(errors):
            print "ERRORS: " + errors
    else:
        env.update({
            'SPBIN_DIR': join(SPIDER_DIR, 'bin') +
            '/',  # Spider needs this extra slash at the end
            'SPMAN_DIR': join(SPIDER_DIR, 'man') + '/',
            'SPPROC_DIR': join(SPIDER_DIR, 'proc') + '/'
        })

    # Get the executable or 'spider' by default
    SPIDER = join(env['SPBIN_DIR'], env.get('SPIDER',
                                            'spider_linux_mp_intel64'))
    # expand ~ and vars
    SPIDER = abspath(os.path.expanduser(os.path.expandvars(SPIDER)))

    env.set('PATH', env['SPBIN_DIR'], env.END)

    return env
Ejemplo n.º 6
0
def getChimeraEnviron(): 
    """ Return the proper environ to launch chimera.
    CHIMERA_HOME variable is read from the ~/.config/scipion.conf file.
    """
    environ = Environ(os.environ)
    environ.set('PATH', os.path.join(os.environ['CHIMERA_HOME'], 'bin'),
                position=Environ.BEGIN)
    return environ    
Ejemplo n.º 7
0
def getVmdEnviron():
    """ Return the proper environ to launch VMD.
    VMD_HOME variable is read from the ~/.config/scipion.conf file.
    """
    environ = Environ(os.environ)
    environ.set('PATH', os.path.join(os.environ['VMD_HOME'], 'bin'),
                position=Environ.BEGIN)
    return environ
Ejemplo n.º 8
0
def getChimeraEnviron(): 
    """ Return the proper environ to launch chimera.
    CHIMERA_HOME variable is read from the ~/.config/scipion.conf file.
    """
    environ = Environ(os.environ)
    environ.set('PATH', os.path.join(os.environ['CHIMERA_HOME'], 'bin'),
                position=Environ.BEGIN)

    if "REMOTE_MESA_LIB" in os.environ:
        environ.set('LD_LIBRARY_PATH', os.environ['REMOTE_MESA_LIB'],
                    position=Environ.BEGIN)
    return environ    
Ejemplo n.º 9
0
    def getEnviron(cls):
        """ Load the environment variables needed for Spider.
        If SPIDER_HOME is defined, the bin, man and proc folders will be
        defined from it. If not, each of them should be defined separately.
        """
        env = Environ(os.environ)
        if cls.getHome():
            env.update(  # Spider needs this extra slash at the end
                {SPBIN_DIR: cls.getHome('spider/bin') + '/',
                 SPMAN_DIR: cls.getHome('spider/man') + '/',
                 SPPROC_DIR: cls.getHome('spider/proc') + '/'})
        else:
            errors = ''
            for var in [SPBIN_DIR, SPMAN_DIR, SPPROC_DIR]:
                if var not in env:
                    errors += "\n   Missing SPIDER variable: '%s'" % var
            if len(errors):
                print("ERRORS: " + errors)

        env.set('PATH', env[SPBIN_DIR], env.END)
        return env
Ejemplo n.º 10
0
    def getEnviron(cls):
        """ Setup the environment variables needed to launch Relion. """
        environ = Environ(os.environ)
        binPath = os.pathsep.join([cls.getHome('bin'), Config.MPI_BINDIR])
        libPath = os.pathsep.join([cls.getHome('lib'), cls.getHome('lib64'), pwem.Config.MPI_LIBDIR])

        if binPath not in environ['PATH']:
            environ.update({'PATH': binPath,
                            'LD_LIBRARY_PATH': libPath
                            }, position=Environ.BEGIN)

        # Get Relion CUDA library path if defined
        cudaLib = cls.getVar(RELIONTOMO_CUDA_LIB, pwem.Config.CUDA_LIB)
        environ.addLibrary(cudaLib)

        if 'RELION_MPI_LIB' in os.environ:
            environ.addLibrary(os.environ['RELION_MPI_LIB'])

        if 'RELION_MPI_BIN' in os.environ:
            environ.set('PATH', os.environ['RELION_MPI_BIN'],
                        position=Environ.BEGIN)
        return environ
Ejemplo n.º 11
0
 def test_Environ(self):
     """ Test the Environ class with its utilities. """
     from pyworkflow.utils import Environ
     env = Environ({'PATH': '/usr/bin:/usr/local/bin',
                    'LD_LIBRARY_PATH': '/usr/lib:/usr/lib64'
                    })
     env1 = Environ(env)
     env1.set('PATH', '/usr/local/xmipp')
     self.assertEqual(env1['PATH'],'/usr/local/xmipp')
     self.assertEqual(env1['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH'])
     
     env2 = Environ(env)
     env2.set('PATH', '/usr/local/xmipp', position=Environ.BEGIN)
     self.assertEqual(env2['PATH'],'/usr/local/xmipp' + os.pathsep + env['PATH'])
     self.assertEqual(env2['LD_LIBRARY_PATH'], env['LD_LIBRARY_PATH'])
     
     env3 = Environ(env)
     env3.update({'PATH': '/usr/local/xmipp', 
                  'LD_LIBRARY_PATH': '/usr/local/xmipp/lib'},
                 position=Environ.END)
     self.assertEqual(env3['PATH'],env['PATH'] + os.pathsep +  '/usr/local/xmipp')
     self.assertEqual(env3['LD_LIBRARY_PATH'],env['LD_LIBRARY_PATH'] + os.pathsep +  '/usr/local/xmipp/lib')