Source code for continuousflex

# **************************************************************************
# *
# * Authors:
# * Mohamad Harastani (mohamad.harastani@upmc.fr)
# * Slavica Jonic (slavica.jonic@upmc.fr)
# *
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# * 02111-1307  USA
# *
# *  All comments concerning this program package may be sent to the
# *  e-mail address 'scipion@cnb.csic.es'
# *
# **************************************************************************
import os

import pwem
from continuousflex.constants import *
import pyworkflow.utils as pwutils
getXmippPath = pwem.Domain.importFromPlugin("xmipp3.base", 'getXmippPath')
from pyworkflow.tests import DataSet

_logo = "logo.png"
__version__ = "3.1.4"

[docs]class Plugin(pwem.Plugin): _homeVar = CONTINUOUSFLEX_HOME _pathVars = [CONTINUOUSFLEX_HOME] _supportedVersions = [VV] _url = CONTINUOUSFLEX_URL @classmethod def _defineVariables(cls): cls._defineEmVar(CONTINUOUSFLEX_HOME, 'xmipp') cls._defineEmVar(NMA_HOME,'nma') cls._defineEmVar(GENESIS_HOME, 'genesis-1.4.0') cls._defineVar(VMD_HOME,'/usr/local/lib/vmd') cls._defineVar(MATLAB_HOME, '~/programs/Matlab') # @classmethod # def getEnviron(cls): # """ Setup the environment variables needed to launch the program. """ # environ = Environ(os.environ) # environ.update({ # 'PATH': Plugin.getHome(), # }, position=Environ.BEGIN) # # return environ
[docs] @classmethod def getEnviron(cls, xmippFirst=True): """ Create the needed environment for Xmipp programs. """ environ = pwutils.Environ(os.environ) pos = pwutils.Environ.BEGIN if xmippFirst else pwutils.Environ.END environ.update({ 'PATH': getXmippPath('bin'), 'LD_LIBRARY_PATH': getXmippPath('lib'), 'PYTHONPATH': getXmippPath('pylib') }, position=pos) # environ variables are strings not booleans if os.environ.get('CUDA', 'False') != 'False': environ.update({ 'PATH': os.environ.get('CUDA_BIN', ''), 'LD_LIBRARY_PATH': os.environ.get('NVCC_LIBDIR', '') }, position=pos) return environ
[docs] @classmethod def isVersionActive(cls): return cls.getActiveVersion().startswith(VV)
[docs] @classmethod def defineBinaries(cls, env): os.environ['PATH'] += os.pathsep + env.getBinFolder() lapack = env.addLibrary( 'lapack', tar='lapack-3.5.0.tgz', flags=['-DBUILD_SHARED_LIBS:BOOL=ON', '-DLAPACKE:BOOL=ON'], cmake=True, neededProgs=['gfortran'], default=False) arpack = env.addLibrary( 'arpack', tar='arpack-96.tgz', neededProgs=['gfortran'], commands=[('cd ' + env.getBinFolder() + '; ln -s $(which gfortran) f77', env.getBinFolder() + '/f77'), ('cd ' + env.getTmpFolder() + '/arpack-96; make all', env.getLibFolder() + '/libarpack.a')]) # See http://modb.oce.ulg.ac.be/mediawiki/index.php/How_to_compile_ARPACK # Cleaning the nma binaries files and folder before expanding if os.path.exists(env.getEmFolder() + '/nma-2.0.tgz'): os.system('rm ' + env.getEmFolder() + '/nma-2.0.tgz') # env.addPackage('nma', version='3.0', deps=[arpack, lapack], env.addPackage('nma', version='3.1', deps=[arpack, lapack], url='https://github.com/continuousflex-org/NMA_basic_code/raw/master/nma_v5.tar', createBuildDir=False, buildDir='nma', target="nma", commands=[('cd ElNemo; make; mv nma_* ..', 'nma_elnemo_pdbmat'), ('cd NMA_cart; LDFLAGS=-L%s make; mv nma_* ..' % env.getLibFolder(), 'nma_diag_arpack')], neededProgs=['gfortran'], default=True) if os.path.exists(env.getEmFolder() + '/genesis.tgz'): os.system('rm ' + env.getEmFolder() + '/genesis.tgz') target_branch = "nmmd" env.addPackage('genesis', version='1.4.0', deps=[lapack], url='https://github.com/mms29/nmmd/archive/%s.tar.gz' %target_branch, tar='genesis.tgz', createBuildDir=True, buildDir='genesis', commands=[('tar -xf ../genesis.tgz -C .;' 'mv nmmd-%s/* .;' 'rm -r nmmd-%s;' './configure LDFLAGS=-L%s ;' 'make install;' % (target_branch,target_branch,env.getLibFolder()), "bin/atdyn")], neededProgs=['mpif90'], target="genesis", default=False)
files_dictionary = {'pdb': 'pdb/AK.pdb', 'particles': 'particles/img.stk', 'vol': 'volumes/AK_LP10.vol', 'precomputed_atomic': 'gold/images_WS_atoms.xmd', 'precomputed_pseudoatomic': 'gold/images_WS_pseudoatoms.xmd', 'small_stk': 'test_alignment_10images/particles/smallstack_img.stk', 'subtomograms':'HEMNMA_3D/subtomograms/*.vol', 'precomputed_HEMNMA3D_atoms':'HEMNMA_3D/gold/precomputed_atomic.xmd', 'precomputed_HEMNMA3D_pseudo':'HEMNMA_3D/gold/precomputed_pseudo.xmd', 'charmm_prm':'genesis/par_all36_prot.prm', 'charmm_top':'genesis/top_all36_prot.rtf', '1ake_pdb':'genesis/1ake.pdb', '1ake_vol':'genesis/1ake.mrc', '4ake_pdb':'genesis/4ake.pdb', '4ake_aa_pdb':'genesis/4ake_aa.pdb', '4ake_aa_psf':'genesis/4ake_aa.psf', '4ake_ca_pdb':'genesis/4ake_ca.pdb', '4ake_ca_top':'genesis/4ake_ca.top', } DataSet(name='nma_V2.0', folder='nma_V2.0', files=files_dictionary, url='https://raw.githubusercontent.com/continuousflex-org/testdata-continuousflex/main')