Notable changes to PyAutoFEP will be documented here. As of 2023-08-01, there is no versioned release, so for now major changes are referenced by commit. Sorry for this inconvenience.
This commit improves handling of pre-solvated systems. prepare_dual_topology.py
now can correctly handle pre-solvated
systems supplied along with topologies that uses a water molecule name different from SOL. Also, topology handling
improved allowing for better parse of ParmEd topologies.
- In the runscript, call to
mpirun
now uses--oversubscribe
by default. This prevents errors when running in a system with fewer CPUs than lambda windows. However, in case there is a problematic configuration, it may be less obvious to spot. - Using other residue and molecule names for water molecules in pre-solvated systems now correctly works.
- Fixed #113
- Fixed #119
This commit improves handling of pre_solvated systems. First, it adds the internal selection method to
prepare_dual_topology.py
, so that MDAnalysis is no longer required for working with such input. Second,
prepare_dual_topology.py
will try to automatically generate topology and position restraints for pre-solvated systems.
- Automated topology generation for pre-solvated systems
- The default value:
selection_method=internal
now works - Water molecules are now renamed to SOL for pre-solvated systems
- Fixed #78
- Fixed #95
This commit sets a new default value: output_collecttype=python
. Previously, the default collect script was a binary
created using PyInstaller. This was done because back in 2020 not every cluster had a modern enough Python3 version, so
this could save users some time in setting up an env just for a simple script. Nowadays Python3 is everywhere and
keeping the old binary as default makes no sense. Note that output_collecttype=bin
is still allowed, but I expect to
drop support in the upcoming updates.
- New default value:
output_collecttype=python
- Fixed #75
- Fixed #90
This commit changes the poses reading. Before it, prepare_dual_topology.py
would read poses for every molecule in the
input molecules, although only the poses for which the A states are needed would ever be used. Now, only the poses
needed will be read. This speeds up execution, specially when using pose_loader=superimpose
.
- Sterechemistry code added to
mol_util.obmol_to_rwmol
docking_readers.vina_loader
now usesread_small_molecule_from_pdbqt
merge_topologies.constrained_embed_shapeselect
andmerge_topologies.constrained_embed_forcefield
now enforce stereochemistryprepare_dual_topology.py
only reads/generates poses for molecules in A states
- Fixed #68
- Fixed #59
This commit fixes the restraint code. Restraints can be selected by passing mdp_substitution
to
prepare_dual_topology.py
, eg:
mdp_substitution = define: -DPOSRES_PROTEIN_CA
The following restraints are automatically generated and can bu used in this manner.
Molecule | make_ndx selection restraint |
Affected atoms | Define |
---|---|---|---|
Ligand | LIG | All atoms | POSRES_LIG |
Protein | Protein-H | Protein's heavy atoms | POSRES_PROTEIN |
Protein | C-alpha | Protein's Cα | POSRES_PROTEIN_CA |
Protein | Backbone | Protein's backbond | POSRES_PROTEIN_BB |
Water | Water | Water molecules | POSRES_WATER |
- Position restraints are now supported
[DEBUG]
verbosity level now prints molecule info in function calls
- Fixes #65
This commit contains a massive backport of upcoming charge-changing perturbations to the topology reading code. This new code broadens the topology support, allowing for the following:
- Topologies containing A and B states. Note, however, that B states will not be used to prepare the dual topology!
Dual topology is built from distinct molecules. In case the input topology has both A and B states,
prepare_dual_topology.py
will merely check that states A and B match (eg, as generated by SwissParam), and use data from state A. - New code for concomitant perturbing charge and VdW parameter of atoms. Not really used yet, but paves way for charge-changing perturbations and perturbing atoms in rings.
- General topology coverage. Online dihedrals and more terms are now supported.
- Massive addition of code to
all_classes.py
, much better topology support - SMILES can now be read when reading input molecules as PDB to set bond orders, valences etc
- AcPYPE now run using
OMP_NUM_THREADS=1
- Fixes #62
- Fixes #5
This commit brings three new major features:
- OpenBabel 3.X is now supported, along with backward compatibility with OpenBabel 2.4. Because OpenBabel 3 series is the one actively maintained upstream, all users are recommended to upgrade.
- Reading of poses from Vina (and derivatives) .pdbqt files.
prepare_dual_topology.py
now acceptspose_loader=vina
which reads .pdbqt files. Poses in a ligand file can be selected settingposes_advanced_options
cluster_docking_data
(see manual for more info). - Automated parameterization of input ligands.
prepare_dual_topology.py
can now run external small molecule parameterization tools automatically (usingparameterize
and related options, see manual for further info). Currently, the only parameterization software supported is AcPYPE, but I hope others can be added soon.
Furthermore, this update fixes some bugs and improves 3D MCS code, which is now more robust. Two defaults changed: in
prepare_dual_topology.py
, gmx_bin_run=gmx_mpi
is now the default, as a MPI-enabled gmx
executable is required and
GROMACS compiles a gmx_mpi
when using MPI. Also, generate_perturbation_map.py
now will not save full_graph.svg and
result_plot.svg unless the verbosity is at least INFO.
As always, please, fill issues should you experience any problems.
- OpenBabel 3.X now supported
- Vina poses now supported
- Automated parameterization using AcPYPE
- New default:
gmx_bin_run=gmx_mpi
- Fixes #62
- Fixes #5
This commit introduces a bunch of new features and code changes. Even though I tested newly implemented and rewritten code, things may break. Please, fill issues should you experience any problem. Main changes:
- Modifications to the atom matching functions in PyAutoFEP were done to implement support for user-supplied atom maps.
- User-supplied atom maps are also available for the superimpose pose loader
- Selecting 3D MCS for merge_topologies.merge_topologies is now supported (3D MCS in generate_perturbation_map.py and superimpose loader coming soon)
- 3D MCS code rewritten for better support for ligand pairs with multiple atom matches
- Custom atom maps now supported (
mcs_custom_atommap
) - Selecting between 3D and graph based MCS now possible (
mcs_type
)
- 3D MCS code rewritten, improved
- Fixes #29