Skip to content

Commit

Permalink
merge update
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesmkrieger committed Dec 3, 2024
2 parents 26a61dd + e4c0fa8 commit 3d68579
Show file tree
Hide file tree
Showing 50 changed files with 9,384 additions and 510 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["2.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["2.7", "3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v2
Expand Down
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ include prody/*/*.cpp
include prody/*/*/*.cpp
include prody/*/*.h
include prody/*/*/*.h
include prody/*/*/*/*.so
include prody/tests/*/*.py
include prody/tests/datafiles/*.coo
include prody/tests/datafiles/*.dcd
Expand All @@ -20,3 +21,4 @@ include prody/utilities/datafiles/*.dat
include prody/utilities/datafiles/*.txt
include scripts/prody*
include scripts/evol*
include prody/protein/tabulated_energies.txt
25 changes: 18 additions & 7 deletions docs/about/people.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,22 @@ Development Team
`James Krieger`_ was helping develop *ProDy* from 2017 and became the main
overseer and developer in mid 2020.

`Hongchun Li`_ is currently maintaining and developing ANM and GNM servers,
`Hongchun Li`_ has helped maintain and develop ANM and GNM servers,
and made significant contributions to :mod:`.database` and :mod:`.dynamics`
including *SignDy* and Adaptive ANM.

`JiYoung Lee`_ is the main developer of :mod:`.Pharmmaker`, for constructing pharmacophore models using the outputs from :mod:`.DruGUI`.

`Yan Zhang`_ contributed significantly to the development of
the *cryo-EM* module, :mod:`.protein.emdmap`.

`Burak Kaynak`_ contributed significantly to the development of
:mod:`.domain_decomposition`, :mod:`.dynamics.essa`, and
:mod:`.dynamics.clustenm`.

`Karolina Mikulska-Ruminska`_ contributed significantly to the development of
`Karolina Mikulska-Ruminska`_ is one of the main developers since 2022, with the addition of the new modules
:mod:`.protein.interactions` (*InSty*), :mod:`.protein.waterbridges`
(*WatFinder*), and :mod:`.dynamics.mechstiff` (*MechStiff*).
(*WatFinder*), in addition to being the developer of :mod:`.dynamics.mechstiff` (*MechStiff*).

`Anthony Bogetti`_ is overseeing the overall development of *ProDy* since
2024.
Expand All @@ -50,6 +52,12 @@ Blocks and Membrane ENM.
`Lidio Meireles`_ provided insightful comments on the design of *ProDy*,
and contributed to the development of :ref:`prody-apps`.

`Mustafa Tekpinar`_ contributed to the development of MechStiff.

`Luca Ponzoni`_ contributed to the development of SignDy.

`David Koes`_ contributed to the development of drug discovery tools.

Contributors
------------

Expand All @@ -67,17 +75,16 @@ contributions and feedback from the following individuals:
insights.



.. _Ahmet Bakan: https://scholar.google.com/citations?user=-QAYVgMAAAAJ&hl=en
.. _Cihan Kaya: https://www.linkedin.com/in/cihan-kaya/
.. _Bahar Lab: http://www.bahargroup.org/Faculty/bahar/
.. _University of Pittsburgh: http://www.pitt.edu/
.. _Anindita Dutta: http://www.linkedin.com/pub/anindita-dutta/5a/568/a90
.. _Wenzhi Mao: http://www.linkedin.com/pub/wenzhi-mao/2a/29a/29
.. _Lidio Meireles: http://www.linkedin.com/in/lidio
.. _Ying Liu: http://www.linkedin.com/pub/ying-liu/15/48b/5a9
.. _Ying Liu: https://www.linkedin.com/in/yingliu03/
.. _Kian Ho: https://github.com/kianho
.. _Gökçen Eraslan: http://blog.yeredusuncedernegi.com/
.. _Gökçen Eraslan: https://github.com/gokceneraslan
.. _Tim Lezon: https://scholar.google.pl/citations?user=1MwNI3EAAAAJ&hl=pl&oi=ao
.. _Chakra Chennubhotla: http://www.csb.pitt.edu/Faculty/Chakra/
.. _She (John) Zhang: https://www.linkedin.com/in/she-zhang-49164399/
Expand All @@ -87,4 +94,8 @@ insights.
.. _Burak Kaynak: https://scholar.google.pl/citations?user=gP8RokwAAAAJ&hl=pl&oi=ao
.. _Karolina Mikulska-Ruminska: https://scholar.google.pl/citations?user=IpyPHRwAAAAJ&hl=pl
.. _Anthony Bogetti: https://scholar.google.pl/citations?hl=pl&user=9qQClIcAAAAJ
.. _Frane Doljanin: https://github.com/fdoljanin
.. _Frane Doljanin: https://github.com/fdoljanin
.. _JiYoung Lee: https://scholar.google.com/citations?user=odKQmZcAAAAJ&hl=en
.. _David Koes: https://bits.csb.pitt.edu/
.. _Luca Ponzoni: https://scholar.google.it/citations?user=8vfPOYUAAAAJ&hl=en
.. _Mustafa Tekpinar: https://scholar.google.com/citations?user=qeVv6o8AAAAJ&hl=en
13 changes: 8 additions & 5 deletions docs/apps/docapps.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
#!/usr/bin/python

import os
import imp
import sys
import importlib
from subprocess import Popen, PIPE

path = [importlib.util.find_spec("prody").submodule_search_locations[0]]
apps = imp.load_module('prody.apps',
*imp.find_module('apps', path))
from prody.utilities.misctools import impLoadModule

for cmd, subcmds in [('prody', apps.PRODY_APPS), ('evol', apps.EVOL_APPS)]:
path_apps = importlib.util.find_spec("prody.apps").submodule_search_locations[0]

prody_apps = impLoadModule('prody.apps.prody_apps', path_apps + '/prody_apps/', '__init__')
evol_apps = impLoadModule('prody.apps.evol_apps', path_apps + '/evol_apps/', '__init__')

for cmd, subcmds in [('prody', prody_apps.PRODY_APPS), ('evol', evol_apps.EVOL_APPS)]:

pipe = Popen([cmd, '-h'], stdout=PIPE, stderr=PIPE)
with open(os.path.join(cmd, cmd + '.txt'), 'w') as rst:
Expand Down
4 changes: 2 additions & 2 deletions docs/devel/website.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This is a short guide for building the ProDy website.
Environment Setup
--------------

First log in to the ProDy webserver (prody.csb.pitt.edu) then run the following::
First log in to your ProDy webserver and then run the following::

$ conda deactivate

Expand All @@ -34,7 +34,7 @@ ProDy-website-workdir. You can then copy files back over afterwards.

It's recommended to have the symbolic link called test_prody pointing to
your build directory instead and then you can monitor changes by going to
http://prody.csb.pitt.edu/test_prody/_build/html/ in your web browser.
http://yourdomainname/test_prody/_build/html/ in your web browser.


Updating from GitHub
Expand Down
2 changes: 1 addition & 1 deletion docs/docs
2 changes: 1 addition & 1 deletion docs/reference/proteins/waterbridges.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ Water bridge finder (WatFinder)

.. automodule:: prody.proteins.waterbridges
:members:
:undoc-members:
:undoc-members:
3 changes: 2 additions & 1 deletion docs/release/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ Release Notes
.. toctree::
:maxdepth: 2
:glob:


v2.5_series
v2.4_series
v2.3_series
v2.2_series
Expand Down
18 changes: 12 additions & 6 deletions prody/apps/evol_apps/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""This module defines some sequence evolution applications."""

import imp
import importlib
import sys

Expand All @@ -9,14 +8,22 @@
except ImportError:
from .. import argparse

from ..apptools import *
from prody.apps.apptools import *
from prody.utilities.misctools import impLoadModule

if sys.version_info[0] == 2:
import imp
path_prody = imp.find_module('prody')[1]
else:
path_prody = importlib.util.find_spec("prody").submodule_search_locations[0]
path_apps = imp.find_module('apps', [path_prody])[1]
path_apps = imp.find_module('evol_apps', [path_apps])[1]

try:
import imp
path_apps = imp.find_module('apps', [path_prody])[1]
path_apps = imp.find_module('evol_apps', [path_apps])[1]
except ModuleNotFoundError:
path_apps = importlib.util.find_spec("prody.apps").submodule_search_locations[0]
path_apps += '/evol_apps/'

EVOL_APPS = ['search', 'fetch', 'filter', 'refine', 'merge', 'occupancy',
'conserv', 'coevol', 'rankorder']
Expand Down Expand Up @@ -81,8 +88,7 @@

for cmd in EVOL_APPS:
cmd = 'evol_' + cmd
mod = imp.load_module('prody.apps.evol_apps.' + cmd,
*imp.find_module(cmd, [path_apps]))
mod = impLoadModule('prody.apps.evol_apps.', cmd, path_apps)
mod.APP.addApplication(evol_commands)


Expand Down
19 changes: 12 additions & 7 deletions prody/apps/prody_apps/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""This module defines structure and dynamics analysis applications."""

import imp
import importlib
import sys

Expand All @@ -9,14 +8,22 @@
except ImportError:
from .. import argparse

from ..apptools import *
from prody.apps.apptools import *
from prody.utilities.misctools import impLoadModule

if sys.version_info[0] == 2:
import imp
path_prody = imp.find_module('prody')[1]
else:
path_prody = importlib.util.find_spec("prody").submodule_search_locations[0]
path_apps = imp.find_module('apps', [path_prody])[1]
path_apps = imp.find_module('prody_apps', [path_apps])[1]

try:
import imp
path_apps = imp.find_module('apps', [path_prody])[1]
path_apps = imp.find_module('prody_apps', [path_apps])[1]
except ModuleNotFoundError:
path_apps = importlib.util.find_spec("prody.apps").submodule_search_locations[0]
path_apps += '/prody_apps/'

PRODY_APPS = ['anm', 'gnm', 'pca', 'eda', 'align', 'blast', 'biomol',
'catdcd', 'contacts', 'fetch', 'select', 'energy',
Expand Down Expand Up @@ -44,11 +51,9 @@

for cmd in PRODY_APPS:
cmd = 'prody_' + cmd
mod = imp.load_module('prody.apps.prody_apps.' + cmd,
*imp.find_module(cmd, [path_apps]))
mod = impLoadModule('prody.apps.prody_apps.', cmd, path_apps)
mod.addCommand(prody_commands)


def prody_main():

if len(sys.argv) == 1:
Expand Down
5 changes: 4 additions & 1 deletion prody/atomic/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,10 @@ def extendAtoms(nodes, atoms, is3d=False):
if res is None:
raise ValueError('atoms must contain a residue for all atoms')
if isinstance(res, list):
raise ValueError('not enough data to get a single residue for all atoms')
if len(res) == 1:
res = res[0]
else:
raise ValueError('not enough data to get a single residue for all atoms')

res_atom_indices = res._getIndices()
if not fastin(res, residues):
Expand Down
4 changes: 2 additions & 2 deletions prody/chromatin/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ def showEmbedding(modes, labels=None, trace=True, headtail=True, cmap='prism'):
X, Y, Z = V[:,:3].T

f = figure()
ax = f.add_subplot(projection="3d")
ax = f.add_subplot(1,1,1,projection="3d")
if trace:
ax.plot(X, Y, Z, ':', color=[0.3, 0.3, 0.3])
if labels is None:
Expand Down Expand Up @@ -240,4 +240,4 @@ def getDomainList(labels):
ends = sites[1:]
domains = np.array([starts, ends]).T

return domains
return domains
12 changes: 12 additions & 0 deletions prody/dynamics/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,14 @@
* :class:`.AdaptiveANM` - generate transitions between two conformers using best overlapping modes
ENM-MD hybrid methods
===================
The following classes and functions can be used to generate conformers using ENM-MD hybrid methods:
* :class:`.ClustENM` - generate conformers by exploring combinations of modes and clustering, using minimisation and optionally MD
* :function:`.ANMD` - generate conformers by traversing a number of individual modes, applying minimisation to each conformer
Essential Site Scanning Analysis (ESSA)
========================================
Expand Down Expand Up @@ -367,3 +375,7 @@
from . import logistic
from .logistic import *
__all__.extend(logistic.__all__)

from . import anmd
from .anmd import *
__all__.extend(anmd.__all__)
Loading

0 comments on commit 3d68579

Please sign in to comment.