Skip to content

Commit

Permalink
Merge branch 'interactions' of github.com:karolamik13/ProDy into inte…
Browse files Browse the repository at this point in the history
…ractions
  • Loading branch information
karolamik13 committed May 7, 2024
2 parents 549523a + c0f8cd6 commit 6c103f4
Show file tree
Hide file tree
Showing 55 changed files with 86,640 additions and 231 deletions.
6 changes: 3 additions & 3 deletions .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"]
python-version: ["2.7", "3.8", "3.9", "3.10", "3.11"]

steps:
- uses: actions/checkout@v2
Expand All @@ -29,8 +29,8 @@ jobs:
if [[ ${{ matrix.python-version }} != "2.7" ]]; then conda config --add channels conda-forge; fi
conda create --yes -n test python=${{ matrix.python-version }}
source activate test
conda install --yes numpy scipy nose pyparsing requests
if [[ ${{ matrix.python-version }} == "2.7" ]]; then conda install --yes unittest2; else conda install --yes pdbfixer; fi
conda install --yes numpy scipy nose requests
if [[ ${{ matrix.python-version }} == "2.7" ]]; then conda install --yes unittest2; else conda install --yes pdbfixer mdtraj; fi
pip install mmtf-python scikit-learn
pip install .
python setup.py build_ext --inplace --force
Expand Down
4 changes: 2 additions & 2 deletions PKG-INFO
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Topic :: Scientific/Engineering :: Chemistry
Requires: numpy (>=1.10)
Requires: pyparsing
Requires: pyparsing (<=3.1.1)
Requires: biopython
Requires: scipy
Provides: prody (2.1.2)
Provides: prody
53 changes: 53 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,57 @@ API is for interactive usage as well as application development. ProDy also
comes with several analysis applications and a graphical user interface for
visual analysis.

Further details are described in the ProDy papers:

| Bakan A, Meireles LM, Bahar I.
| *ProDy*: Protein Dynamics Inferred from Theory and Experiments.
| *Bioinformatics* **2011** 27(11):1575-1577.
| Bakan A, Dutta A, Mao W, Liu Y, Chennubhotla C, Lezon TR, Bahar I.
| *Evol* and *ProDy* for Bridging Protein Sequence Evolution and Structural Dynamics.
| *Bioinformatics* **2014** 30(18):2681-2683.
| Zhang S, Krieger JM, Zhang Y, Kaya C, Kaynak B, Mikulska-Ruminska K, Doruker P, Li H, Bahar I.
| *ProDy* 2.0: Increased Scale and Scope after 10 Years of Protein Dynamics Modelling with Python.
| *Bioinformatics* **2021** 37(20):3657-3659.
MODULES
--------

ProDy has a modular structure with modules inside various subpackages.

The main ones are:

- :mod:`~prody.atomic`` handles all :class:`~prody.atomic.Atomic` objects including :class:`~prody.atomic.AtomGroup` and :class:`.Selection`

- :mod:`~prody.database` interfaces with databases such as CATH, DALI, UniProt and Pfam

- :mod:`~prody.dynamics` provides all the modules for normal mode analysis with various elastic network models,
as well as PCA, SignDy (:mod:`~prody.dynamics.signature`), hybrid methods such as :mod:`~prody.dynamics.clustenm`,
allosteric signal propagation methods :mod:`~prody.dynamics.perturb` (PRS) and :func:`~prody.dynamics.analysis.calcHitTime` (Markovian hitting time),
and various analysis and plotting functions.

- :mod:`~prody.ensemble` enables construction of heterogeneous structural ensembles for exploring dynamics from experiments and simulations

- :mod:`~prody.proteins` provides various modules for parsing different kinds of protein structure files including PDB, mmCIF, MMTF and maps,
as well as tools to align and compare structures, and analysis of :mod:`~prody.proteins.interactions` within and between proteins (InSty) and
find :mod:`~prody.proteins.waterbridges` (WatFinder).

- :mod:`~prody.sequence` has all the sequence alignment and evolutionary analysis tools of Evol


Smaller ones include:

- :mod:`~prody.chromatin` specific to chromatin dynamics (ChromDy) including :mod:`~prody.chromatin.hic` and :mod:`~prody.chromatin.cluster`

- :mod:`~prody.compounds` for parsing small molecule compounds/ligands from the PDB and related databases

- :mod:`~prody.domain_decomposition` for Spectrus dynamical domain decomposition

- :mod:`~prody.trajectory` for trajectories in DCD format

- :mod:`~prody.utilities`


GETTING PRODY
-------------
Expand All @@ -45,6 +96,8 @@ DOCUMENTATION

* Changes: http://prody.csb.pitt.edu/manual/release

See also https://github.com/prody/ProDy-website for latest versions.


SOURCE CODE
-----------
Expand Down
2 changes: 1 addition & 1 deletion docs/docs
4 changes: 2 additions & 2 deletions docs/reference/dynamics/signature.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Signature Dynamics of Protein Families
======================================
Signature Dynamics of Protein Families (SignDy)
===============================================

.. automodule:: prody.dynamics.signature
:members:
4 changes: 2 additions & 2 deletions docs/reference/proteins/interactions.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Interactions Tools
======================
Interactions and Stability (InSty)
===================================

.. automodule:: prody.proteins.interactions
:members:
Expand Down
6 changes: 6 additions & 0 deletions docs/reference/proteins/waterbridges.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Water bridge finder (WatFinder)
===================================

.. automodule:: prody.proteins.waterbridges
:members:
:undoc-members:
20 changes: 16 additions & 4 deletions prody/apps/prody_apps/prody_clustenm.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@
('write_params', 'whether to write parameters', False),
('fitmap', 'map to fit by filtering conformations like MDeNMD-EMFit', None),
('fit_resolution', 'resolution for blurring structures for fitting cc', 5),
('map_cutoff', 'min_cutoff for passing map for fitting', 0)]:
('map_cutoff', 'min_cutoff for passing map for fitting', 0),
('replace_filtered', 'whether to keep sampling again to replace filtered conformers', False),
('platform', 'openmm platform (OpenCL, CUDA, CPU or None)', None)]:

DEFAULTS[key] = val
HELPTEXT[key] = txt
Expand Down Expand Up @@ -85,6 +87,7 @@ def prody_clustenm(pdb, **kwargs):
model = kwargs.pop('model')
altloc = kwargs.pop('altloc')
turbo = kwargs.pop('turbo')
nproc = kwargs.pop('nproc')

ngens = kwargs.pop('ngens')
nconfs = kwargs.pop('nconfs')
Expand Down Expand Up @@ -153,7 +156,8 @@ def prody_clustenm(pdb, **kwargs):
outlier=outlier, mzscore=mzscore,
sparse=sparse, kdtree=kdtree, turbo=turbo,
parallel=parallel, fitmap=fitmap,
fit_resolution=fit_resolution, **kwargs)
fit_resolution=fit_resolution,
nproc=nproc, **kwargs)

single = not kwargs.pop('multiple')
outname = join(outdir, prefix)
Expand Down Expand Up @@ -199,7 +203,7 @@ def addCommand(commands):
$ prody clustenm 1aar -s "calpha and chain A and resnum < 70" -A""",
test_examples=[0, 1])

group = addNMAParameters(subparser, include_nproc=False)
group = addNMAParameters(subparser, include_nproc=True)

group.add_argument('-c', '--cutoff', dest='cutoff', type=str,
default=DEFAULTS['cutoff'], metavar='FLOAT',
Expand Down Expand Up @@ -267,7 +271,7 @@ def addCommand(commands):
default=DEFAULTS['ionicStrength'], metavar='FLOAT',
help=HELPTEXT['ionicStrength'] + ' (default: %(default)s)')

group.add_argument('-P', '--padding', dest='padding', type=float,
group.add_argument('-Q', '--padding', dest='padding', type=float,
default=DEFAULTS['padding'], metavar='FLOAT',
help=HELPTEXT['padding'] + ' (default: %(default)s)')

Expand Down Expand Up @@ -331,6 +335,14 @@ def addCommand(commands):
default=DEFAULTS['map_cutoff'], metavar='FLOAT',
help=HELPTEXT['map_cutoff'] + ' (default: %(default)s)')

group.add_argument('-O', '--replace_filtered', dest='replace_filtered',
action='store_true',
default=DEFAULTS['replace_filtered'], help=HELPTEXT['replace_filtered'])

group.add_argument('-V', '--platform', dest='platform', type=str,
default=DEFAULTS['platform'], metavar='STR',
help=HELPTEXT['platform'] + ' (default: %(default)s)')

subparser.add_argument('pdb', help='PDB identifier or filename')

subparser.set_defaults(func=lambda ns: prody_clustenm(ns.__dict__.pop('pdb'),
Expand Down
34 changes: 29 additions & 5 deletions prody/atomic/flags.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,15 @@

'nucleobase': set(['GUN', 'ADE', 'CYT', 'THY', 'URA']),
'nucleotide': set(['DA', 'DC', 'DG', 'DT', 'DU', 'A', 'C', 'G', 'T', 'U']),
'nucleoside': set(['AMP', 'ADP', 'ATP', 'CDP', 'CTP', 'GMP', 'GDP', 'GTP',
'TMP', 'TTP', 'UMP', 'UDP', 'UTP']),
'nucleoside': set(['ADN', 'AMP', 'ADP', 'ATP',
'CMP', # cyclic AMP
'A2P', 'A3P', # multi site diphosphates
'AGS', # ATP-gamma-S
'CTN', 'C5P', 'CDP', 'CTP',
'C2P', 'C3P', # other site monophosphates
'GMP', '5GP', 'GDP', 'GTP',
'THM', 'TMP', 'TPP', 'TTP',
'URI', 'UMP', 'UDP', 'UTP']),

'at': set(['ADE', 'A', 'THY', 'T']),
'cg': set(['CYT', 'C', 'GUN', 'G']),
Expand Down Expand Up @@ -418,19 +425,36 @@ def changeBackbone(flag, names):
======= ==================================
nucleoside
indicates following nucleoside derivatives that are recognized by *PDB*:
indicates following nucleosides and their derivatives that are recognized by *PDB*:
======= ================================
`AMP`_ adenosine monophosphate
`ADN`_ adenosine
`AMP`_ adenosine-5'-monophosphate
`ADP`_ adenosine-5'-diphosphate
`ATP`_ adenosine-5'-triphosphate
`AGS`_ adenosine-5'-triphosphate-gamma-S
`CMP`_ cyclic adenosine-3',5'-monophosphate
`A2P`_ adenosine-2',5'-diphosphate
`A3P`_ adenosine-3',5'-diphosphate
`CTN`_ cytidine
`C2P`_ cytidine-2'-monophosphate
`C3P`_ cytidine-3'-monophosphate
`C5P`_ cytidine-5'-monophosphate
`CDP`_ cytidine-5'-diphosphate
`CTP`_ cytidine-5'-triphosphate
`GMP`_ guanosine
`5GP`_ guanosine-5'-monophosphate
`GDP`_ guanosine-5'-diphosphate
`GTP`_ guanosine-5'-triphosphate
`TMP`_ thymidine-5'-phosphate
`THM`_ thymidine
`TMP`_ thymidine-5'-monophosphate
`TPP`_ thymidine-5'-diphosphate
`TTP`_ thymidine-5'-triphosphate
`URI`_ uridine (uracil plus ribose)
`UMP`_ 2'-deoxyuridine 5'-monophosphate
`UDP`_ uridine 5'-diphosphate
`UTP`_ uridine 5'-triphosphate
Expand Down
6 changes: 3 additions & 3 deletions prody/compounds/pdbligands.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,9 @@ def fetchPDBLigand(cci, filename=None):
resnums = np.ones(n_atoms, dtype=ATOMIC_FIELDS['charge'].dtype)

alternate_atomnames = np.zeros(n_atoms, dtype=ATOMIC_FIELDS['name'].dtype)
leaving_atom_flags = np.zeros(n_atoms, np.bool)
aromatic_flags = np.zeros(n_atoms, np.bool)
stereo_configs = np.zeros(n_atoms, np.bool)
leaving_atom_flags = np.zeros(n_atoms, bool)
aromatic_flags = np.zeros(n_atoms, bool)
stereo_configs = np.zeros(n_atoms, bool)
ordinals = np.zeros(n_atoms, int)

name2index = {}
Expand Down
18 changes: 16 additions & 2 deletions prody/database/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,21 @@
Interpro
====
The following functions can be used to search and retrieve Pfam_ data:
The following functions can be used to search and retrieve Interpro_ data:
* :func:`.searchInterpro` - search for domain families of a protein
.. _Pfam: https://www.ebi.ac.uk/interpro/
.. _Interpro: https://www.ebi.ac.uk/interpro/
BioExcel-CV19
====
The following functions can be used to retrieve BioExcel-CV19_ data:
* :func:`.fetchBioexcelPDB` - fetch PDB files for starting structures for trajectories
.. _BioExcel-CV19: https://bioexcel-cv19-dev.bsc.es/
"""

__all__ = []
Expand Down Expand Up @@ -108,3 +118,7 @@
from . import interpro
from .interpro import *
__all__.extend(interpro.__all__)

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

0 comments on commit 6c103f4

Please sign in to comment.