Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New release 3.4.0 #70

Open
wants to merge 388 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
388 commits
Select commit Hold shift + click to select a range
0638dcc
optional cflex animation
jamesmkrieger Dec 11, 2023
ee068a2
fix lda summary
jamesmkrieger Dec 12, 2023
e64abfd
add keepAlignment option to pca
jamesmkrieger Dec 12, 2023
feeb5c3
some potential fixes
jamesmkrieger Dec 12, 2023
38047e0
add ens viewer
jamesmkrieger Dec 18, 2023
5ea29f8
clean up
jamesmkrieger Dec 18, 2023
5f979dd
better help for uniteChains
jamesmkrieger Dec 19, 2023
9f18960
add unite_chains to ensemble
jamesmkrieger Nov 6, 2023
c930dbb
log unmapped
jamesmkrieger Dec 18, 2023
01d356d
delete right ref
jamesmkrieger Nov 24, 2023
d34fb52
add pca selstr and aligned
jamesmkrieger Dec 12, 2023
7d5fe90
better warning before failing from out of range
jamesmkrieger Dec 19, 2023
abb98fe
add SetOfTrajFrames to DataViewer
jamesmkrieger Oct 26, 2023
debbbd9
add ref to tars inside create match dic
jamesmkrieger Dec 19, 2023
2540b73
add missing uniteChains
jamesmkrieger Dec 19, 2023
b070d81
get chmap from matchDic not form
jamesmkrieger Dec 19, 2023
e27e3c7
handle empty box
jamesmkrieger Dec 19, 2023
32172b2
default empty box
jamesmkrieger Dec 19, 2023
b1f875a
add weights
jamesmkrieger Dec 19, 2023
e8cd07d
fix reset ref=0
jamesmkrieger Dec 19, 2023
a731864
merge in ens viewer
jamesmkrieger Dec 21, 2023
a032525
better install with openmm and tempy
jamesmkrieger Oct 20, 2023
6d62ec4
add clustenm fitting
jamesmkrieger Oct 20, 2023
fba801a
clean up other tests
jamesmkrieger Oct 20, 2023
1515879
no limit on labels for custom match
jamesmkrieger Oct 20, 2023
74009be
reduce fit test
jamesmkrieger Oct 20, 2023
19291fc
finalise fit test
jamesmkrieger Oct 20, 2023
cfc2d0b
allow multi volume from 1 pdb
jamesmkrieger Oct 20, 2023
028236a
import fixer and clustenm like normal
jamesmkrieger Oct 26, 2023
35af10c
copy installcmd
jamesmkrieger Oct 26, 2023
71ab8d9
working fixer with script
jamesmkrieger Oct 26, 2023
8b212f8
check num atoms
jamesmkrieger Oct 26, 2023
d509e1a
fix plain clustenm
jamesmkrieger Oct 26, 2023
025aad6
fix clustenm expected outputs
jamesmkrieger Oct 26, 2023
928f776
clustenm replace filtered
jamesmkrieger Oct 26, 2023
b3b3134
fix clustenm structs order
jamesmkrieger Oct 26, 2023
eb0fe16
improved small tests
jamesmkrieger Oct 27, 2023
016f965
fix pca test docstring
jamesmkrieger Oct 31, 2023
8bc82a1
use pyworkflow logger
jamesmkrieger Oct 31, 2023
4396930
better help for uniteChains
jamesmkrieger Dec 19, 2023
a1d83a5
add uniteChains to atoms protocols
jamesmkrieger Dec 21, 2023
e21de05
Merge branch 'lda' into reset_ano_plus
jamesmkrieger Dec 22, 2023
e4b407e
fix test core for uniteChains
jamesmkrieger Dec 22, 2023
1c31419
add doAnimation condition to edit protocol
jamesmkrieger Dec 22, 2023
a77aab1
fix weights index out of range
jamesmkrieger Dec 27, 2023
e1b6582
add uniteChains to biomol form
jamesmkrieger Dec 27, 2023
25411b9
clean up struct not found exception
jamesmkrieger Dec 27, 2023
b2b9453
use scipion prody branch again
jamesmkrieger Dec 27, 2023
d7f18a6
better core tests
jamesmkrieger Dec 27, 2023
15448e2
fix pca aligned
jamesmkrieger Dec 27, 2023
bca6c4d
fix tars undefined
jamesmkrieger Dec 27, 2023
05297fd
use tars below
jamesmkrieger Dec 27, 2023
705335f
remove duplicated labels to array
jamesmkrieger Dec 27, 2023
cb2ca51
many ensemble fixes incl allowing diff orders
jamesmkrieger Dec 27, 2023
5e94c1a
new objs Atom SetOfAtoms and protocol for them
jamesmkrieger Jan 8, 2024
9bb388d
fix gnm viewer label
jamesmkrieger Jan 8, 2024
f0f59cf
make fixer test use 3hsyB
jamesmkrieger Jan 16, 2024
5114016
fixer test indent fixes
jamesmkrieger Jan 16, 2024
1c05233
rename new prot to ProDyToBiopythonMetadata
jamesmkrieger Jan 16, 2024
5b77e50
Merge branch 'devel' of github.com:scipion-em/scipion-em-prody into r…
jamesmkrieger Jan 16, 2024
d58a8a8
update templates
jamesmkrieger Jan 17, 2024
67b9a02
do not replace labels
jamesmkrieger Jan 18, 2024
5a0e116
fix overwriting createMatchDic
jamesmkrieger Jan 23, 2024
355714c
add row numbers to matchDic
jamesmkrieger Jan 23, 2024
ae3aef3
add shuffles to lda
jamesmkrieger Jan 23, 2024
f89355b
add lda viewer
jamesmkrieger Jan 23, 2024
bb21512
always have matchDic on lda form
jamesmkrieger Jan 23, 2024
cb90d4a
remove collectivity threshold on lda and clean up
jamesmkrieger Jan 23, 2024
63d1547
fix lda to create matchDic if not filled
jamesmkrieger Jan 23, 2024
d02b67c
update insert number when recovering
jamesmkrieger Jan 30, 2024
e2227ea
add reorder ens option
jamesmkrieger Jan 31, 2024
f7e3ff0
better atoms protocols uniteChains help
jamesmkrieger Jan 31, 2024
20f3662
fix self.atoms for import ens
jamesmkrieger Feb 2, 2024
703fd2d
add kmedoids and frame classes
jamesmkrieger Feb 7, 2024
dba0135
clean up clustenm outputs
jamesmkrieger Feb 7, 2024
0138c69
fix select tests
jamesmkrieger Feb 7, 2024
f427e09
clean up unneeded imports viewer lda
jamesmkrieger Feb 7, 2024
06c9ec5
fix compare help
jamesmkrieger Feb 7, 2024
46505e9
delete reference from ensemble viewer
jamesmkrieger Feb 8, 2024
ccd13b7
fix seqid and pwalign
jamesmkrieger Feb 8, 2024
4800a2b
fix protocol edit to know if gnm
jamesmkrieger Feb 8, 2024
0c2cb90
bump version
jamesmkrieger Feb 8, 2024
4844a4e
rename to RMSD clustering as reorder is an option not a job
jamesmkrieger Feb 8, 2024
17ac913
fix ens viewer path
jamesmkrieger Feb 8, 2024
aff08a6
default pca selstr to all
jamesmkrieger Feb 8, 2024
e1e4abb
fix test pca box labels to n_ca
jamesmkrieger Feb 8, 2024
9de24ac
fix more labels on rmsd cluster
jamesmkrieger Feb 8, 2024
a032bbe
fix mode type and nmd file handling
jamesmkrieger Feb 9, 2024
e793b85
fix pca tests
jamesmkrieger Feb 9, 2024
04a38bf
add .vscode to .gitignore
jamesmkrieger Feb 9, 2024
a3aeeec
fix gnm viewer
jamesmkrieger Feb 9, 2024
6219b12
fix clustenm fit test for new stderr log behaviour
jamesmkrieger Feb 9, 2024
1bb6ae7
update modes viewer for nmd filenames
jamesmkrieger Feb 20, 2024
d4d6f61
clean up unneeded comment
jamesmkrieger Feb 20, 2024
47216ec
remove unneeded pass on SetOfClassesTraj
jamesmkrieger Feb 20, 2024
ed4e690
sonarcloud fix ensemble.dcd repetition
jamesmkrieger Feb 20, 2024
4c46a3f
clean up lda imports
jamesmkrieger Feb 20, 2024
71f0769
clean up protocol rmsd
jamesmkrieger Feb 20, 2024
586b697
repeated to const in test core
jamesmkrieger Feb 20, 2024
cb0c833
replace repeat vec.%d with vecstr
jamesmkrieger Feb 20, 2024
46b8388
remove import star and other sonar fixes
jamesmkrieger Feb 20, 2024
31f0fb2
simplify and fix modes viewer
jamesmkrieger Feb 20, 2024
8cadfb8
reduce complexity modes base
jamesmkrieger Feb 20, 2024
10beff1
more anm and rtb sonar fixes
jamesmkrieger Feb 20, 2024
ee260e8
remove model type
jamesmkrieger Feb 20, 2024
5987c0a
fix missing vecstr def
jamesmkrieger Feb 20, 2024
84b9169
clean away anm and rtb duplicate code
jamesmkrieger Feb 20, 2024
7f47b0e
fix sonar lda
jamesmkrieger Feb 20, 2024
fe06f58
more sonar from modes base children
jamesmkrieger Feb 20, 2024
444908e
fix lda and add nmwiz to its viewer
jamesmkrieger Feb 20, 2024
f0a03d6
clean up duplicate load ens code
jamesmkrieger Feb 20, 2024
6b76758
fix lda viewer for backcompatibility
jamesmkrieger Feb 21, 2024
0168d31
almost working replace coordsets
jamesmkrieger Feb 22, 2024
bbad9b5
Fix viewer_lda.py get nmdfile
jamesmkrieger Feb 23, 2024
e544532
fix rmsd classes
jamesmkrieger Feb 27, 2024
10668d1
Merge branch 'reset_ano_plus' of github.com:scipion-em/scipion-em-pro…
jamesmkrieger Feb 27, 2024
81dbe18
fix pca realignment
jamesmkrieger Feb 27, 2024
d1cd7d6
fix anm and rtb nzeros
jamesmkrieger Feb 29, 2024
8a23067
fix clustenm fit test including replace
jamesmkrieger Mar 1, 2024
7ff9cc5
control nprocs through openmm env var
jamesmkrieger Mar 1, 2024
245f662
add mode number to lda viewer
jamesmkrieger Mar 1, 2024
333b759
extend lda viewer to other modes
jamesmkrieger Mar 1, 2024
2e2e0b2
higher precision lda outputs
jamesmkrieger Mar 1, 2024
02b18b5
only have LDA degeneracy option if setAS input
jamesmkrieger Mar 13, 2024
9944cc6
fix matchDic reset
jamesmkrieger Mar 13, 2024
173bd01
fix matchDic reset duplication
jamesmkrieger Mar 13, 2024
2037a74
ensemble pdbFilename to variable
jamesmkrieger Mar 14, 2024
37046f8
multi-pointer in lda
jamesmkrieger Mar 14, 2024
84569ae
fix viewer lda to loadModel to catch shuffles
jamesmkrieger Mar 14, 2024
f262eda
only show num bins in viewer proj when using density
jamesmkrieger Mar 14, 2024
662251d
no bins in viewer proj x lim
jamesmkrieger Mar 14, 2024
9ab40c2
add logistic and fixes
jamesmkrieger Mar 19, 2024
4a0d0b3
fix lda viewer for prody changes
jamesmkrieger Mar 19, 2024
6c19dd5
override all zero weights import ens
jamesmkrieger Mar 21, 2024
208ffe1
better override all zero weights import ens
jamesmkrieger Mar 21, 2024
63a79ca
remove duplicate weight columns from ens
jamesmkrieger Mar 21, 2024
9fc4703
fix weights as floats
jamesmkrieger Mar 21, 2024
ec69589
fix indexing for clusters
jamesmkrieger Mar 21, 2024
ad6215e
simplify duplicate code
jamesmkrieger Mar 21, 2024
1416e37
introduce fix and restore verbo sec
jamesmkrieger Mar 21, 2024
ea8396a
use fix restore v s throughout
jamesmkrieger Mar 21, 2024
7a55ebe
clean up viewers
jamesmkrieger Mar 21, 2024
f7d5c00
try adding psf to import ens
jamesmkrieger Mar 21, 2024
3624533
faster summary for big ens
jamesmkrieger Mar 21, 2024
ed04b78
rename LRC to LRA
jamesmkrieger Mar 21, 2024
5a0e31c
use psf in output
jamesmkrieger Mar 21, 2024
96afc54
link psf if selstr all
jamesmkrieger Mar 21, 2024
a0b62e5
out MDSystem for selstr all and import dcd
jamesmkrieger Mar 21, 2024
f9b65d2
move selstr def up
jamesmkrieger Mar 21, 2024
2f1755c
fix selstr all conditions
jamesmkrieger Mar 21, 2024
d584565
more general pca inputs
jamesmkrieger Mar 21, 2024
a72f51e
fix hierarc cluster weights to fracts
jamesmkrieger Mar 21, 2024
5580028
update rmsf viewer defaults
jamesmkrieger Mar 21, 2024
8e8f2f8
fix and move loadAndWriteEnsemble
jamesmkrieger Mar 22, 2024
bc3877d
fix viewer compare for 1x1
jamesmkrieger Mar 22, 2024
30205ad
fix lda viewer label for LRA too
jamesmkrieger Mar 22, 2024
92060f0
fix ensemble viewer for subsets
jamesmkrieger Mar 22, 2024
5e7888c
write pdb and link dcd when importing
jamesmkrieger Mar 22, 2024
25d57be
add DcdMDSystem and use it
jamesmkrieger Mar 22, 2024
0a0c384
parseDCD into PDBEnsemble
jamesmkrieger Mar 22, 2024
3356b0c
update project for pre-calc
jamesmkrieger Mar 26, 2024
76d3c2e
more efficient weights and labels
jamesmkrieger Mar 26, 2024
35d9e64
add bioexcel cv19 database parsing
jamesmkrieger Apr 9, 2024
fd78534
simplify protocol cluster
jamesmkrieger Apr 9, 2024
1a04b57
fix repeat mode str in viewer proj
jamesmkrieger Apr 9, 2024
777f76c
fix secondary true for atomic and rtb
jamesmkrieger Apr 9, 2024
05502c6
simpler modes viewer nmd
jamesmkrieger Apr 9, 2024
0408e34
better nmd filenames anm gnm membrane
jamesmkrieger Apr 9, 2024
ef2fd82
fix test pca inputs
jamesmkrieger Apr 9, 2024
e84d175
simpler compare edit import nmd filename
jamesmkrieger Apr 9, 2024
84c5041
fix pca realigned ensemble output
jamesmkrieger Apr 11, 2024
3704117
easier enum modes for protocol proj
jamesmkrieger Apr 11, 2024
de6424a
fix viewer proj labels
jamesmkrieger Apr 11, 2024
add9573
fix proj 1x1
jamesmkrieger Apr 11, 2024
bf19283
add weights loadAndWriteEnsemble
jamesmkrieger Apr 11, 2024
d784f4a
fix the fix for 2d
jamesmkrieger Apr 11, 2024
3fb0ec5
fix pca recentering
jamesmkrieger Apr 12, 2024
1029416
Merge pull request #66 from scipion-em/reset_ano_plus
jamesmkrieger Apr 12, 2024
4e9cd82
fix proj viewer
jamesmkrieger Apr 12, 2024
a961aba
Merge pull request #68 from scipion-em/reset_ano_plus
jamesmkrieger Apr 12, 2024
b33b80c
Merge branch 'devel' of github.com:scipion-em/scipion-em-prody into e…
jamesmkrieger Apr 12, 2024
2160610
merge better
jamesmkrieger Apr 12, 2024
ffa76a3
Merge pull request #69 from scipion-em/ensemble
jamesmkrieger Apr 12, 2024
0a8490b
bump version
jamesmkrieger Apr 12, 2024
ab2f0aa
unbump version
jamesmkrieger Apr 12, 2024
e33a6f6
improve align atoms
jamesmkrieger May 17, 2024
2193bcb
add renumber protocol
jamesmkrieger May 28, 2024
363332b
Merge pull request #71 from scipion-em/jmk_improve_align_atoms
jamesmkrieger May 30, 2024
cb03591
fix align atoms selstr option
jamesmkrieger May 30, 2024
6ff6701
Merge pull request #72 from scipion-em/jmk_improve_align_atoms
jamesmkrieger May 30, 2024
89c1ef3
reorganize consts and funcs
jamesmkrieger May 30, 2024
be40db7
remove lda to legacy
jamesmkrieger May 30, 2024
8832ee9
faster dcd pca
jamesmkrieger May 30, 2024
1f1a28c
ensemble fixes
jamesmkrieger May 30, 2024
12c33f7
completely remove swap LDA
jamesmkrieger May 31, 2024
2e6ad8c
Merge pull request #73 from scipion-em/fix_ens
jamesmkrieger May 31, 2024
3126582
reduce duplication with ProDyAtomicBase
jamesmkrieger May 31, 2024
5bf8fc2
include selection False for biomol
jamesmkrieger May 31, 2024
56487a8
fix missing args
jamesmkrieger May 31, 2024
50dc033
explicitly renumber selection true
jamesmkrieger May 31, 2024
35fb053
add includeSelection to each _defineParams
jamesmkrieger May 31, 2024
f1fdcbd
Merge pull request #74 from scipion-em/fix_ens
jamesmkrieger May 31, 2024
444fadc
Merge branch 'master' into devel
jamesmkrieger May 31, 2024
f922a2e
Merge branch 'devel' of github.com:scipion-em/scipion-em-prody into d…
jamesmkrieger May 31, 2024
a148c5d
add renum test
jamesmkrieger May 31, 2024
3e29098
fix tests
jamesmkrieger Jun 4, 2024
dc6f3e9
fix viewer proj for fewer modes
jamesmkrieger Jun 4, 2024
0b87281
fix protocol project to have nmd
jamesmkrieger Jun 4, 2024
6cab668
fix protocol pca to have nmd
jamesmkrieger Jun 4, 2024
2859b95
test pca msg fix
jamesmkrieger Jun 4, 2024
3b3f374
fix nmdwiz viewer for nmdFileName
jamesmkrieger Jun 4, 2024
dcc7ed8
fix rmsf viewer for atoms from nmd
jamesmkrieger Jun 4, 2024
de2100d
better rmsf fix
jamesmkrieger Jun 4, 2024
c11c379
reduce dup str in proc pca
jamesmkrieger Jun 4, 2024
9c134b9
much better installation and config
jamesmkrieger Jun 4, 2024
841b5e2
add test LRA
jamesmkrieger Jun 4, 2024
394b938
add test LRA
jamesmkrieger Jun 4, 2024
f13ed8b
limit pyparsing
jamesmkrieger Jun 4, 2024
f2825f9
fix proj viewer 1 mode axes
jamesmkrieger Jun 4, 2024
7472fad
fix pca summary for no npz
jamesmkrieger Jun 5, 2024
cefa66b
Merge branch 'devel' of github.com:scipion-em/scipion-em-prody into d…
jamesmkrieger Jun 5, 2024
9fd080f
pca copy pdb from md system
jamesmkrieger Jun 5, 2024
ad165fb
clean up install
jamesmkrieger Jun 5, 2024
1a3f961
replace 2.4.1 with master
jamesmkrieger Jun 5, 2024
38b39dc
fix proj out modes num
jamesmkrieger Jun 5, 2024
8a39be6
fix viewer proj early overriding labels
jamesmkrieger Jun 5, 2024
675ace6
replace measures with projection so not undefined
jamesmkrieger Jun 7, 2024
4caeb2d
extend cc viewer to pca
jamesmkrieger Jun 7, 2024
50ae699
really only support scipion branch of prody
jamesmkrieger Jun 10, 2024
9d729b6
init protocol ensemble weights
jamesmkrieger Jun 11, 2024
84153c8
handle DcdMDSystem better
jamesmkrieger Jun 11, 2024
51e67ca
fix custom chain orders help
jamesmkrieger Jun 18, 2024
9ffbc9d
fix cluster protocol
jamesmkrieger Jun 27, 2024
52be59f
add gap to gnm viewer
jamesmkrieger Jul 7, 2024
61a0bc7
clean up rmsf viewer
jamesmkrieger Jul 7, 2024
599d5f0
upper case New nodes in edit form
jamesmkrieger Jul 7, 2024
b8aea47
add mode algebra
jamesmkrieger Jul 7, 2024
9e41cc2
add gap to range msf rmsf
jamesmkrieger Jul 8, 2024
3968a25
add renum chains
jamesmkrieger Aug 11, 2024
aa038bf
improve prot algebra
jamesmkrieger Aug 11, 2024
277d4e1
better besidesAnimation
jamesmkrieger Aug 11, 2024
592facb
everywhere besidesAnimation
jamesmkrieger Aug 11, 2024
f461d3c
remove verbosity secondary
jamesmkrieger Sep 2, 2024
be0eadb
update prody website
jamesmkrieger Sep 2, 2024
c85228c
remove numModes from animate
jamesmkrieger Sep 2, 2024
5e0ae73
fix align custom match
jamesmkrieger Sep 2, 2024
24d88fa
saveEnsemble after reorder
jamesmkrieger Sep 12, 2024
e7163d6
add remote upstream
jamesmkrieger Sep 19, 2024
c01b512
fetch upstream main
jamesmkrieger Sep 19, 2024
1134936
fix 0 gen for minim
jamesmkrieger Sep 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ prody2/protocols/__pycache__/

# IDE files
.idea
.vscode
17 changes: 17 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
12 April 2024 - major release v3.4.0
1. Added logistic regression analysis (LRA) instead of LDA as a much better way for comparing ensemble subsets
2. Added protocols for fetching data from the BioExcel-CV19 simulation database
3. Many fixes, especially to ensembles, PCA and viewers

8 February 2024
1. Added linear discriminant analysis (LDA) for comparing ensemble subsets
2. Many fixes, especially to ensemble building

20 October 2023
1. Overhauled installation to install ProDy itself in scipion3 env
and also ProDy, OpenMM, PDBFixer and TEMPy in its own env with activation for apps
2. Added new ClustENM fitting based on MDeNMD-EMFit

16 October
General improvements to ensemble analysis

13 August 2023 - major release v3.3.0
Substantial integration and improvements of everything:
1. Improved ensembles and alignments including custom chain matching
Expand Down
6 changes: 6 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ python with conda ones. One example of this could can be seen below but
depending on your conda version and shell you will need something different:
CONDA_ACTIVATION_CMD = eval "$(/extra/miniconda3/bin/conda shell.bash hook)"

*PRODY_ENV_ACT*: If undefined, it will point to the prody-github as the default:
PRODY_ENV_ACT = conda activate prody-github

It could be changed as follows:
PRODY_ENV_ACT = conda activate prody-2.4.1


Protocols
----------
Expand Down
129 changes: 83 additions & 46 deletions prody2/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
# * e-mail address '[email protected]'
# *
# **************************************************************************

from collections import OrderedDict
import os
import pwem
import pyworkflow.utils as pwutils
Expand All @@ -32,15 +32,19 @@
from .constants import *


__version__ = "3.3.0"
__version__ = "3.4.0"
_logo = "icon.png"
_references = ['Zhang2021']
_references = ['ProDy2']


class Plugin(pwem.Plugin):
_supportedVersions = VERSIONS
_url = "https://github.com/scipion-em/scipion-em-prody"

@classmethod
def _defineVariables(cls):
cls._defineVar(PRODY_ENV_ACT, "conda activate prody-{0}".format(PRODY_DEFAULT_VER_NUM))

@classmethod
def getEnviron(cls):
""" Setup the environment variables needed to launch ProDy. """
Expand All @@ -65,65 +69,98 @@ def getDependencies(cls):
def defineBinaries(cls, env):
for ver in VERSIONS:
cls.addProDyPackage(env, ver,
default=ver == PRODY_DEFAULT_VER_NUM)
default=(ver==PRODY_DEFAULT_VER_NUM))

@classmethod
def addProDyPackage(cls, env, version, default=False):
PRODY_INSTALLED = 'prody_%s_installed' % version
installCmd = []

if version == DEVEL:
# Use latest scipion branch of prody on my github
installCmd.append('cd .. &&')
clonePath = os.path.join(pwem.Config.EM_ROOT, "ProDy")
if not os.path.exists(clonePath):
installCmd.append('git clone -b master https://github.com/prody/ProDy.git ProDy &&')
installCmd.append('cd ProDy &&')

# Install downloaded code
installCmd.append('pip install -U -e . && python setup.py build_ext --inplace --force &&')
ENV_NAME = getProDyEnvName(version)

if version == DEVEL:
installCmd.append('cd .. && cd prody-github &&')

installCmd.append('python -c "import os; os.environ.setdefault(\'HOME\', \'{0}\')" &&'.format(Config.SCIPION_HOME + os.path.sep))
installCmd = [
cls.getCondaActivationCmd(),
f'conda create -y -n {ENV_NAME} python=3.9 &&',
f'conda activate {ENV_NAME} &&']

# Flag installation finished
installCmd.append('touch %s' % PRODY_INSTALLED)
# Install TEMPy for ClustENM fitting, scikit-learn-extra for Kmedoids
# and threadpoolctl for control of thread pools for apps generally
TEMPY_INSTALLED = 'tempy_installed'
installTEMPy = installCmd.copy()
installTEMPy.append('pip install biotempy==2.0.0 scikit-learn-extra '
'threadpoolctl requests mdtraj pyparsing==3.1.1 && touch %s' % TEMPY_INSTALLED)
installCmd.pop(1) # remove conda create to only do it the first time

# Install PDBFixer and OpenMM for ClustENM
OPEN_MM_INSTALLED = 'openmm_installed'
installOpenMM = 'conda install -c conda-forge pdbfixer -y && touch %s' % OPEN_MM_INSTALLED

prody_commands = [(" ".join(installCmd), PRODY_INSTALLED),
(installOpenMM, OPEN_MM_INSTALLED)]
OPENMM_INSTALLED = 'openmm_installed'
installOpenMM = installCmd.copy()
installOpenMM.append('conda install -c conda-forge openmm==7.6 pdbfixer -y && touch %s' % OPENMM_INSTALLED)

prodyCommands = [(" ".join(installTEMPy), TEMPY_INSTALLED),
(" ".join(installOpenMM), OPENMM_INSTALLED)]

PRODY_INSTALLED_OWN = 'prody_%s_installed_own_env' % version
PRODY_INSTALLED_SCIPION = 'prody_%s_installed_scipion_env' % version
for i, PRODY_INSTALLED in enumerate([PRODY_INSTALLED_OWN, PRODY_INSTALLED_SCIPION]):
if i == 0:

installCmd.append('git clone https://github.com/jamesmkrieger/ProDy.git ProDy &&')
installCmd.append('cd ProDy &&')
installCmd.append('git fetch &&')

installCmd.append('git remote add upstream https://github.com/prody/ProDy.git &&')
installCmd.append('git fetch upstream &&')
installCmd.append('git checkout -t upstream/main &&')

installCmd.append('git checkout scipion &&')
installCmd.append('git pull &&')

installCmd.append('pip install -Ue . && python setup.py build_ext --inplace --force &&')
else:
installCmd = []
installCmd.append('cd ProDy &&')
installCmd.append('pip install -Ue . &&')

installCmd.append('cd .. && touch %s' % PRODY_INSTALLED)

prodyCommands.append((" ".join(installCmd.copy()), PRODY_INSTALLED))

envHome = os.environ.get('HOME', "")
envPath = os.environ.get('PATH', "")
# keep path since conda likely in there, and home since prody needs it to configure
installEnvVars = {'PATH': envPath, 'HOME': envHome} if envPath else {'HOME': envHome}

if version == DEVEL:
env.addPackage('prody', version=version,
tar='void.tgz',
commands=prody_commands,
neededProgs=cls.getDependencies(),
default=default,
vars=installEnvVars)
else:
env.addPackage('prody', version=version,
url='https://github.com/prody/ProDy/archive/refs/tags/v{0}.tar.gz'.format(version),
buildDir='ProDy-{0}'.format(version),
commands=prody_commands,
neededProgs=cls.getDependencies(),
default=default,
vars=installEnvVars)
env.addPackage('prody', version=version,
tar='void.tgz',
buildDir='ProDy',
commands=prodyCommands,
neededProgs=cls.getDependencies(),
default=default,
vars=installEnvVars)

@classmethod
def getProgram(cls, program):
def getProgram(cls, program, script=False):
""" Create ProDy command line. """
fullProgram = '%s && prody %s' % (
cls.getCondaActivationCmd(),
program)
if script:
fullProgram = '%s %s && python %s' % (
cls.getCondaActivationCmd(), cls.getEnvActivation(),
PRODY_SCRIPTS+'/'+program)
else:
fullProgram = '%s %s && prody %s' % (
cls.getCondaActivationCmd(), cls.getEnvActivation(),
program)

return fullProgram

@classmethod
def getEnvActivation(cls):
return cls.getVar(PRODY_ENV_ACT)

def parseMatchDict(cls):
if cls.chainOrders.get() != "":
cls.matchDic = eval(cls.chainOrders.get())
else:
cls.matchDic = OrderedDict()

if not isinstance(cls.matchDic, OrderedDict):
cls.matchDic = OrderedDict()

cls.labels = list(cls.matchDic.keys())
32 changes: 28 additions & 4 deletions prody2/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,38 @@
# *
# **************************************************************************

import os
import prody2

def getProDyEnvName(version):
return "prody-%s" % version

DEVEL = 'github'
LATEST = '2.4.1'
VERSIONS = [DEVEL, LATEST]
PRODY_DEFAULT_VER_NUM = LATEST
LATEST = 'master'
RELEASE = '2.4.1'
VERSIONS = [DEVEL]
PRODY_DEFAULT_VER_NUM = DEVEL

PRODY_ENV_ACT = "PRODY_ENV_ACT"

PROJ_COEFFS = "_prodyProjCoefficients"
CLUSTENM_WEIGHTS = "_prodyWeight"
ENSEMBLE_WEIGHTS = "_prodyWeights"
MEASURES = "_prodyMeasures"

PRODY_FRACT_VARS = "_prodyFractVars"

PRODY_SCRIPTS = os.path.join(os.path.dirname(prody2.__file__),
"protocols", "scripts")


# chain matching methods
BEST_MATCH = 0
SAME_CHID = 1
SAME_POS = 2
CUSTOM = 3

# residue mapping methods
NOTHING = 0 # stop trivial mapping if trivial mapping fails
PWALIGN = 1 # biopython pwalign local pairwise sequence alignment after trivial mapping
CEALIGN = 2 # combinatorial extension (CE) as in PyMOL
DEFAULT = 3 # try pwalign then CE
Loading