Skip to content

Commit cf351ad

Browse files
committed
Merge branch 'main' of https://github.com/prody/ProDy into fix_fetchPDB_cif
2 parents 3fc9ba3 + 4acb152 commit cf351ad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+33466
-1269
lines changed

.github/workflows/main.yml

Lines changed: 110 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,120 @@
1-
# This is a basic workflow to help you get started with Actions
2-
31
name: CI
2+
on:
3+
- push
4+
- pull_request
5+
- workflow_dispatch
46

5-
# Controls when the action will run.
6-
on: [push, pull_request, workflow_dispatch]
7-
8-
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
97
jobs:
10-
# This workflow contains a single job called "build"
118
build:
12-
runs-on: ubuntu-latest
9+
runs-on: ${{ matrix.os }}
1310
strategy:
1411
fail-fast: false
1512
matrix:
13+
os: [ubuntu-latest, macos-latest]
1614
python-version: ["3.10", "3.11", "3.12"]
1715

1816
steps:
19-
- uses: actions/checkout@v2
20-
- name: Set up Python ${{ matrix.python-version }}
21-
uses: MatteoH2O1999/setup-python@v2
22-
with:
23-
python-version: ${{ matrix.python-version }}
24-
- name: Add conda to system path
25-
run: |
26-
echo $CONDA/bin >> $GITHUB_PATH
27-
- name: Install dependencies
28-
run: |
29-
conda create --yes -n test python=${{ matrix.python-version }}
30-
source activate test
31-
conda config --add channels conda-forge
32-
conda install --yes numpy scipy nose requests
33-
conda install --yes pdbfixer mdtraj openmm
34-
conda install -c bioconda clustalw
35-
pip install mmtf-python scikit-learn
36-
pip install .
37-
python setup.py build_ext --inplace --force
38-
- name: Test with pytest
39-
run: |
40-
source activate test
41-
conda install --yes pytest
42-
pytest
43-
17+
- name: Checkout
18+
uses: actions/checkout@v2
19+
20+
- name: Set up Miniconda
21+
uses: conda-incubator/setup-miniconda@v2
22+
with:
23+
miniconda-version: "latest"
24+
python-version: ${{ matrix.python-version }}
25+
activate-environment: test
26+
auto-update-conda: true
27+
channels: conda-forge
28+
architecture: ${{ runner.arch }}
29+
30+
- name: Install deps
31+
shell: bash -l {0}
32+
run: |
33+
conda activate test
34+
conda install --yes -c conda-forge compilers gfortran
35+
conda install --yes \
36+
"numpy" \
37+
"pyparsing<=3.1.1" \
38+
scipy nose pytest requests \
39+
pdbfixer mdtraj openmm
40+
conda install -c bioconda --yes clustalw
41+
pip install mmtf-python scikit-learn
42+
43+
- name: Build & compile HPB (Linux)
44+
if: runner.os == 'Linux'
45+
shell: bash -l {0}
46+
run: |
47+
conda activate test
48+
pip install -e .
49+
python setup.py build_ext --inplace --force
50+
echo "Verifying hpb.so file properties on Linux:"
51+
ls -lh prody/proteins/hpb.so || { echo "hpb.so not found on Linux!"; exit 1; }
52+
file prody/proteins/hpb.so || { echo "file command failed for hpb.so on Linux!"; exit 1; }
53+
ldd prody/proteins/hpb.so || { echo "ldd failed or found issues on Linux!"; exit 1; }
54+
55+
- name: Build & compile HPB (macOS)
56+
if: runner.os == 'macOS'
57+
shell: bash -l {0}
58+
run: |
59+
conda activate test
60+
61+
echo "Debugging environment variables before compilation:"
62+
echo "PATH: $PATH"
63+
echo "CONDA_PREFIX: $CONDA_PREFIX"
64+
echo "LIBRARY_PATH: $LIBRARY_PATH"
65+
echo "CPATH: $CPATH"
66+
echo "DYLD_LIBRARY_PATH: $DYLD_LIBRARY_PATH"
67+
68+
export CFLAGS="${CFLAGS} -D__NO_FLOAT16"
69+
export CPPFLAGS="${CPPFLAGS} -D__NO_FLOAT16"
70+
71+
pushd prody/proteins/hpbmodule
72+
73+
echo "Contents of hpbmodule directory:"
74+
ls -l
75+
76+
echo "Attempting Fortran compilation..."
77+
gfortran -O3 -fPIC -c reg_tet.f || { echo "Fortran compilation of reg_tet.f failed!"; exit 1; }
78+
echo "reg_tet.f compiled successfully to reg_tet.o."
79+
ls -lh reg_tet.o
80+
file reg_tet.o
81+
82+
PYINC=$(python -c "import sysconfig; print(sysconfig.get_path('include'))")
83+
PYLIBDIR=$(python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
84+
echo "Python Include Dir (PYINC): ${PYINC}"
85+
echo "Python Lib Dir (PYLIBDIR): ${PYLIBDIR}"
86+
87+
[ -d "${PYINC}" ] || { echo "Python Include Dir '${PYINC}' does not exist!"; exit 1; }
88+
[ -d "${PYLIBDIR}" ] || { echo "Python Lib Dir '${PYLIBDIR}' does not exist!"; exit 1; }
89+
90+
export LIBRARY_PATH="$CONDA_PREFIX/lib:$PYLIBDIR:$LIBRARY_PATH"
91+
92+
echo "Attempting C++ compilation..."
93+
g++ -O3 -g -fPIC -I"${PYINC}" -c hpbmodule.cpp -o hpbmodule.o || { echo "C++ compilation of hpbmodule.cpp failed!"; exit 1; }
94+
echo "hpbmodule.cpp compiled successfully to hpbmodule.o."
95+
ls -lh hpbmodule.o
96+
file hpbmodule.o
97+
98+
echo "Attempting HPB linking for macOS..."
99+
g++ -dynamiclib \
100+
-undefined dynamic_lookup \
101+
-o hpb.so hpbmodule.o reg_tet.o \
102+
-L"${PYLIBDIR}" -L"$CONDA_PREFIX/lib" -lgfortran || { echo "HPB shared library linking failed!"; exit 1; }
103+
echo "hpb.so linked successfully."
104+
105+
echo "Verifying hpb.so file properties (macOS):"
106+
ls -lh hpb.so || { echo "hpb.so not found after linking!"; exit 1; }
107+
file hpb.so || { echo "File type check failed for hpb.so!"; exit 1; }
108+
otool -L hpb.so || { echo "otool -L failed or found issues for hpb.so! This usually means it's not a valid Mach-O binary."; exit 1; }
109+
110+
cp hpb.so ../
111+
popd
112+
113+
pip install -e .
114+
python setup.py build_ext --inplace --force
115+
116+
- name: Run tests
117+
shell: bash -l {0}
118+
run: |
119+
conda activate test
120+
pytest

INSTALL.rst

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Installation
66
Required Software
77
-----------------
88

9-
* `Python`_ 2.7, 3.6 or later. We recommend using `Anaconda`_, which provides the conda package and environment manager as well as many useful packages.
9+
* `Python`_ 3.10 or later. We recommend using `Anaconda`_, which provides the conda package and environment manager as well as many useful packages.
1010

1111
.. _Anaconda: https://www.anaconda.com/products/individual
1212

@@ -32,24 +32,14 @@ this package.
3232
Quick Install
3333
-------------
3434

35-
If you have pip_ installed, type the following::
3635

37-
pip install -U ProDy
36+
We officially recommend installing through conda::
3837

39-
If you don't have pip_, please download an installation file and
40-
follow the instructions.
38+
conda install -c conda-forge prody
4139

42-
If you have conda installed, you can also type the following instead::
4340

44-
conda install ProDy
45-
46-
47-
Download & Install
48-
------------------
49-
50-
After installing the required packages, you will need to download a suitable
51-
ProDy source or installation file from http://python.org/pypi/ProDy.
52-
For changes and list of new features see :ref:`changes`.
41+
Installing From Source (not recommended)
42+
----------------------------------------
5343

5444
**Linux**
5545

@@ -72,23 +62,9 @@ schemes in `Installing Python Modules`_.
7262

7363
For installing ProDy, please follow the Linux installation instructions.
7464

75-
**Windows**
76-
77-
Remove previously installed ProDy release from :program:`Uninstall a program`
78-
in :guilabel:`Control Panel`.
79-
80-
Download :file:`ProDy-1.{x}.{y}.win32-py2.{z}.exe` and run to install ProDy.
81-
82-
To be able use :ref:`prody-apps` and :ref:`evol-apps` in command prompt
83-
(:program:`cmd.exe`), append Python and scripts folders (e.g.
84-
:file:`C:\\Python27` and :file:`C:\\Python27\\Scripts`) to :envvar:`PATH`
85-
environment variable.
86-
8765
Recommended Software
8866
--------------------
8967

90-
* `Scipy`_, when installed, replaces linear algebra module of Numpy.
91-
Scipy linear algebra module is more flexible and can be faster.
9268
* `IPython`_ is a must have for interactive ProDy sessions.
9369
* `PyReadline`_ for colorful IPython sessions on Windows.
9470
* `MDAnalysis`_ or `MDTraj`_ for reading molecular dynamics trajectories.
@@ -109,6 +85,9 @@ Following software is included in the ProDy installation packages:
10985
* `argparse`_ is used to implement applications and provided for
11086
compatibility with Python 2.6.
11187

88+
* `Scipy`_, when installed, replaces linear algebra module of Numpy.
89+
Scipy linear algebra module is more flexible and can be faster.
90+
11291
.. _argparse: http://code.google.com/p/argparse/
11392

11493

PKG-INFO

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Metadata-Version: 1.1
22
Name: ProDy
3-
Version: 2.5.0
3+
Version: 2.6.1
44
Summary: A Python Package for Protein Dynamics Analysis
55
Home-page: http://www.csb.pitt.edu/ProDy
66
Author: James Krieger, She Zhang, Hongchun Li, Cihan Kaya, Ahmet Bakan, and others
@@ -84,10 +84,8 @@ Classifier: Intended Audience :: Education
8484
Classifier: Intended Audience :: Science/Research
8585
Classifier: License :: OSI Approved :: MIT License
8686
Classifier: Operating System :: MacOS
87-
Classifier: Operating System :: Microsoft :: Windows
8887
Classifier: Operating System :: POSIX
8988
Classifier: Programming Language :: Python
90-
Classifier: Programming Language :: Python :: 2
9189
Classifier: Programming Language :: Python :: 3
9290
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
9391
Classifier: Topic :: Scientific/Engineering :: Chemistry

README.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
[![ProDy workflow status](https://img.shields.io/github/actions/workflow/status/prody/prody/main.yml)](https://github.com/prody/ProDy/actions/workflows/main.yml)
2+
3+
[![ProDy conda-forge page](https://anaconda.org/conda-forge/prody/badges/version.svg)](https://anaconda.org/conda-forge/prody)
4+
5+
[![ProDy pypi page](https://img.shields.io/pypi/v/ProDy.svg)](https://pypi.org/project/ProDy/)
6+
7+
8+
## **SYNOPSIS**
9+
10+
ProDy is a free and open-source Python package for protein structure, dynamics, and sequence analysis. It allows for comparative analysis and modeling of protein structural dynamics and sequence co-evolution. The fast and flexible ProDy API is designed for interactive usage as well as application development. ProDy also comes with several analysis applications and a graphical user interface for visual analysis.
11+
12+
Further details are described in the ProDy papers:
13+
14+
Bakan A, Meireles LM, Bahar I.
15+
16+
ProDy: Protein Dynamics Inferred from Theory and Experiments.
17+
18+
Bioinformatics 2011 27(11):1575-1577.
19+
20+
Bakan A, Dutta A, Mao W, Liu Y, Chennubhotla C, Lezon TR, Bahar I.
21+
22+
Evol and ProDy for Bridging Protein Sequence Evolution and Structural Dynamics.
23+
24+
Bioinformatics 2014 30(18):2681-2683.
25+
26+
Zhang S, Krieger JM, Zhang Y, Kaya C, Kaynak B, Mikulska-Ruminska K, Doruker P, Li H, Bahar I.
27+
28+
ProDy 2.0: Increased Scale and Scope after 10 Years of Protein Dynamics Modelling with Python.
29+
30+
Bioinformatics 2021 37(20):3657-3659.
31+
32+
## **INSTALLING PRODY**
33+
34+
We recommend downloading and installing the Anaconda package manager to handle dependencies in controlled environments. ProDy can be installed with the following command:
35+
36+
conda install \-c conda-forge ProDy
37+
38+
ProDy is under active development. Install it from the source on GitHub if you want the most recent fixes.
39+
40+
First, download the ProDy code either as a zipped folder or using Git. For example, if you have Git installed, you can do the following:
41+
42+
git clone https://github.com/prody/ProDy.git
43+
44+
Then, change into the ProDy directory and install it by running the following commands:
45+
46+
cd ProDy
47+
python setup.py build\_ext \--inplace \--force
48+
pip install \-Ue .
49+
50+
More instructions can be found at [http://bahargroup.org/prody/downloads/](http://bahargroup.org/prody/downloads/) and [http://bahargroup.org/prody/manual/devel/develop.html](http://bahargroup.org/prody/manual/devel/develop.html).
51+
52+
## **MODULES**
53+
54+
ProDy has a modular structure with modules inside various subpackages.
55+
56+
The main ones are:
57+
58+
* **prody.atomic**: handles all Atomic objects including AtomGroup and Selection
59+
* **prody.database**: interfaces with databases such as CATH, DALI, UniProt and Pfam
60+
* **prody.dynamics**: provides all the modules for normal mode analysis with various elastic network models, as well as PCA, SignDy (prody.dynamics.signature), hybrid methods such as prody.dynamics.clustenm, allosteric signal propagation methods prody.dynamics.perturb (PRS) and calcHitTime (Markovian hitting time), and various analysis and plotting functions.
61+
* **prody.ensemble**: enables construction of heterogeneous structural ensembles for exploring dynamics from experiments and simulations
62+
* **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 prody.proteins.interactions within and between proteins (InSty) and find prody.proteins.waterbridges (WatFinder).
63+
* **prody.sequence**: has all the sequence alignment and evolutionary analysis tools of Evol
64+
65+
Smaller ones include:
66+
67+
* **prody.chromatin**: specific to chromatin dynamics (ChromDy) including prody.chromatin.hic and prody.chromatin.cluster
68+
* **prody.compounds**: for parsing small molecule compounds/ligands from the PDB and related databases
69+
* **prody.domain\_decomposition**: for Spectrus dynamical domain decomposition
70+
* **prody.trajectory**: for trajectories in DCD format
71+
* **prody.utilities**
72+
73+
## **GETTING PRODY**
74+
75+
You can run ProDy on all major platforms. For download and installation instructions see: [http://www.bahargroup.org/prody/downloads/](http://www.bahargroup.org/prody/downloads/)
76+
77+
## **DOCUMENTATION**
78+
79+
* **Homepage**: [http://www.bahargroup.org/prody/](http://www.bahargroup.org/prody/)
80+
* **Tutorials**: [http://www.bahargroup.org/prody/tutorials](http://www.bahargroup.org/prody/tutorials)
81+
* **Reference**: [http://www.bahargroup.org/prody/manual](http://www.bahargroup.org/prody/manual)
82+
* **Applications**: [http://www.bahargroup.org/prody/manual/apps](http://www.bahargroup.org/prody/manual/apps)
83+
* **NMWiz GUI**: [http://www.bahargroup.org/prody/nmwiz](http://www.bahargroup.org/prody/nmwiz)
84+
* **Changes**: [http://www.bahargroup.org/prody/manual/release](http://www.bahargroup.org/prody/manual/release)
85+
* See also [https://github.com/prody/ProDy-website](https://github.com/prody/ProDy-website) for latest versions.
86+
87+
## **SOURCE CODE**
88+
89+
* **Source code**: [https://github.com/prody/ProDy](https://github.com/prody/ProDy)
90+
* **Issue tracker**: [https://github.com/prody/ProDy/issues](https://github.com/prody/ProDy/issues)
91+
92+
## **LICENSE**
93+
94+
ProDy is available under the MIT License. See LICENSE.txt for more details.
95+
96+
* **Biopython**: ([http://biopython.org/](http://biopython.org/)) KDTree and TreeConstruction modules are distributed with ProDy. Biopython is developed by The Biopython Consortium and is available under the Biopython license ([http://www.biopython.org/DIST/LICENSE](http://www.biopython.org/DIST/LICENSE)).
97+
* **Pyparsing**: ([https://github.com/pyparsing/pyparsing](https://github.com/pyparsing/pyparsing)) module is distributed with ProDy. Pyparsing is developed by Paul T. McGuire and is available under the MIT license ([http://www.opensource.org/licenses/mit-license.php](http://www.opensource.org/licenses/mit-license.php)).
98+
* **CEalign module**: ([https://pymolwiki.org/index.php/Cealign\_plugin](https://pymolwiki.org/index.php/Cealign_plugin)) is distributed with ProDy. The original CE method was developed by Ilya Shindyalov and Philip Bourne. The Python version which is used by ProDy is developed by Jason Vertrees and available under the New BSD license.
99+
* **Hbp module**: The calculation of hydrophobic interactions, solvent accessible surface area (SASA) and volume for each residue is using geometric methods based on the information of the atoms in the molecule. The methods have been programmed in C++ and can be compiled as a python module “hpb.so” which is then used by ProDy. Files for compilation are stored at prody/proteins/hpbmodule folder and required C++ and Fortran compiler. After compilation hpb.so file can be stored in prody/proteins folder in ProDy or in the local directory which is used to perform calulations. The precompiled versions for Python 2.7, 3.8, 3.9, and 3.10 are availabe in prody/proteins/hpbmodule. The user can choose the correct version of hpb.so and copy to the prody/proteins or local directory. C++ code of hpb.so was developed by Xin Cao and Fortran code by Xin Cao, Michelle H. Hummel, Bihua Yu, and Evangelos A. Coutsias (License in prody/proteins/hpbmodule folder). Details of the method can be found in the Supplementary Material of InSty manuscript ([https://doi.org/10.1016/j.jmb.2025.169009](https://doi.org/10.1016/j.jmb.2025.169009)).

0 commit comments

Comments
 (0)