Coder Social home page Coder Social logo

degrootlab / pmx Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dseeliger/pmx

121.0 16.0 48.0 217.66 MB

Toolkit for free-energy calculation setup/analysis and biomolecular structure handling

License: GNU Lesser General Public License v3.0

Makefile 1.01% Python 82.82% C 15.77% C++ 0.16% TeX 0.22% Shell 0.03%

pmx's Introduction

pmx

Introduction

(The 'master' branch is written in Python 2. For Python 3 version and Icolos support use 'develop' branch.)

pmx (formerly pymacs) has started as a small bunch of classes to read structure files such as pdb or gro and trajectory data in gromacs xtc format. Over the years it has been extended towards a versatile (bio-) molecular structure manipulation package with some additional functionalities, e.g. gromacs file parsers and scripts for setup and analysis of free energy calculations.

Citations:

D. Seeliger and Bert L. de Groot, Biophys. J. 98(10):2309-2316 (2010)

V. Gapsys, S. Michielssens, D. Seeliger, B. L. de Groot. J. Comput. Chem. 2014, DOI: 10.1002/jcc.23804

Purpose

I mostly use pmx to write short scripts which perform some changes in pdb files, e.g. changing atom or residue names, applying some geometric transformations or doing some kind of analysis. The critical issue for these things is usually not calculation time but straightforward selection of some atoms/residues of interest, quick file parsing and data visualization, which renders a well-organized data structure and easy programming style more important than computation performance. Hence, and ideal task for Python.

Installation

Checkout the source code and run the usual python installation

git clone https://github.com/deGrootLab/pmx pmx
cd pmx

The 'master' branch is written in Python 2. For Python 3 version and Icolos support use 'develop' branch; to switch to 'develop' branch type:

git checkout develop

For installation type the command:

python setup.py install

or

  pip install .

Software Requirements

Getting Started

Once installed, you can access the scripts via the command line tool pmx. Type pmx -h to view the help message. The command pmx gmxlib will help you locate the pmx force field libraries, which are placed in the data folder where pmx was installed.

pmx stores structure data in Python classes. The "Model" class is the uppermost class which contains severals lists of Atoms, Molecules and Chains. The following script reads a pdb file, prints some atom properties and writes the structure in gro format.

pmx data structure

The figure above shows the most important data structure. A "Model" instance contains list of chains, residues and atoms. A "Chain" instance of residues and atoms and a "Molecule" instance of a list of atoms only. Check the example scripts for how to navigate trough particular storage classes.

pmx Modules

pmx currently contains the following modules. Click on the links below for a (short) documentation

pmx Classes (the most important ones)

Using pmx

pmx's People

Contributors

dseeliger avatar matteoaldeghi avatar servaas avatar ssnbehera avatar vgapsys avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pmx's Issues

Cannot do mutation with certain reside

I'm trying to mutate FAQ to AAA.
The gro file for FAQ is

MDANALYSIS FRAME 0: Created by PDBWriter
   50
    1PHE      N    1   5.894   7.535   8.466
    1PHE     H1    2   5.925   7.620   8.511
    1PHE     H2    3   5.869   7.549   8.369
    1PHE     H3    4   5.806   7.502   8.504
    1PHE     CA    5   5.998   7.433   8.483
    1PHE     HA    6   5.950   7.338   8.458
    1PHE     CB    7   6.127   7.451   8.403
    1PHE    HB1    8   6.195   7.368   8.423
    1PHE    HB2    9   6.161   7.552   8.429
    1PHE     CG   10   6.122   7.460   8.252
    1PHE    CD1   11   6.017   7.409   8.180
    1PHE    HD1   12   5.930   7.365   8.227
    1PHE    CE1   13   6.003   7.449   8.049
    1PHE    HE1   14   5.919   7.410   7.993
    1PHE     CZ   15   6.099   7.525   7.982
    1PHE     HZ   16   6.089   7.555   7.879
    1PHE    CE2   17   6.210   7.566   8.057
    1PHE    HE2   18   6.281   7.628   8.005
    1PHE    CD2   19   6.219   7.539   8.193
    1PHE    HD2   20   6.306   7.574   8.247
    1PHE      C   21   6.026   7.423   8.635
    1PHE      O   22   6.073   7.525   8.691
    2ALA      N   23   6.020   7.305   8.698
    2ALA      H   24   6.001   7.221   8.645
    2ALA     CA   25   6.063   7.285   8.837
    2ALA     HA   26   6.026   7.358   8.908
    2ALA     CB   27   6.004   7.153   8.880
    2ALA    HB1   28   6.049   7.064   8.837
    2ALA    HB2   29   6.020   7.152   8.988
    2ALA    HB3   30   5.896   7.151   8.868
    2ALA      C   31   6.214   7.293   8.855
    2ALA      O   32   6.261   7.334   8.961
    3GLN      N   33   6.292   7.255   8.754
    3GLN      H   34   6.241   7.201   8.685
    3GLN     CA   35   6.431   7.272   8.745
    3GLN     HA   36   6.467   7.353   8.808
    3GLN     CB   37   6.503   7.147   8.800
    3GLN    HB1   38   6.588   7.112   8.742
    3GLN    HB2   39   6.445   7.055   8.796
    3GLN     CG   40   6.541   7.165   8.949
    3GLN    HG1   41   6.585   7.075   8.990
    3GLN    HG2   42   6.449   7.174   9.007
    3GLN     CD   43   6.635   7.275   8.992
    3GLN    OE1   44   6.755   7.281   8.952
    3GLN    NE2   45   6.591   7.359   9.080
    3GLN   HE21   46   6.492   7.353   9.097
    3GLN   HE22   47   6.641   7.435   9.123
    3GLN      C   48   6.485   7.312   8.604
    3GLN    OC1   49   6.541   7.420   8.586
    3GLN    OC2   50   6.477   7.228   8.512
  12.28070  12.28070  13.81770

However, I got
pmx mutate -f FAQ_ligand.gro -o FAQ_ligand.mutant.gro
Choose a force field:

[i] name description


[1] amber14sbmut MUT_Amber_ff14sb (ported by Man Hoang Viet, North Carolina State University)
[2] amber99sb-star-ildn-bsc1-mut [Protein, DNA] Amber99sb-star-ildn-bsc1 for DNA (Best & Hummer 2009, Lindorff-Larsen et al. 2010)
[3] amber99sb-star-ildn-dna-mut [Protein, DNA] Amber99sb-star-ildn (Best & Hummer 2009, Lindorff-Larsen et al. 2010)
[4] amber99sb-star-ildn-mut [Protein] Amber99sb-star-ildn (Best & Hummer 2009, Lindorff-Larsen et al. 2010)
[5] charmm22star-mut CHARMM22* all-atom force field
[6] charmm36m-mut [Protein, DNA] Charmm36m all-atom force field (November 2016)

Enter the index [i] of the chosen forcefield: 1

Select residue to mutate:
1-PHE- 2-ALA- 3-GLN-
Enter residue number: 1

Select new amino acid for 1-PHE:
Three- or one-letter code (or four-letter for ff specific residues): ALA
Will apply mutation F->A on residue PHE-1
log_> Residue to mutate: 1 | PHE |
log_> Mutation to apply: F->A
log_> Hybrid residue name: F2A
Traceback (most recent call last):
File "/Users/XXX/opt/miniconda3/envs/pmx/bin/pmx", line 10, in
sys.exit(entry_point())
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/scripts/cli.py", line 86, in entry_point
PmxCli()
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/scripts/cli.py", line 41, in init
getattr(self, args.command)()
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/scripts/cli.py", line 45, in mutate
mutate.entry_point()
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/scripts/mutate.py", line 578, in entry_point
main(args)
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/scripts/mutate.py", line 564, in main
verbose=True)
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/alchemy.py", line 82, in mutate
mtp_file=mtp_file, refB=refB, verbose=verbose)
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/alchemy.py", line 116, in apply_aa_mutation
bb_super(residue, hybrid_res)
File "/Users/XXX/opt/miniconda3/envs/pmx/lib/python3.7/site-packages/pmx/geometry.py", line 135, in bb_super
assert len(atoms1) == len(atoms2), "%s -> %s" % ('-'.join(map(lambda a: a.name, atoms1)), '-'.join(map(lambda a: a.name, atoms2)))
AssertionError: N-CA-C-O-HA -> N-CA-C-H-O-HA

Confusion in [ dihedrals ] section in hybrid topology

Hi, I generated a hybrid topology of two ligands, the [ dihedrals ] section of the hybrid topology looks like this:
[ dihedrals ]
; ai aj ak al funct c0 c1 c2 c3 c4 c5
1 10 9 3 1 180 15.3215155 2 180 0 2 ; C1x C10x C9x C3x (AAAA->DDDD)
1 10 9 3 1 180 0 2 180 15.3215155 2 ; C1x C10x C9x C3x (AAAA->DDDD)
1 10 9 8 1 180 15.3215155 2 180 0 2 ; C1x C10x C9x C8x (AAAA->DDDD)
1 10 9 8 1 180 0 2 180 15.3215155 2 ; C1x C10x C9x C8x (AAAA->DDDD)
1 11 2 3 1 180 24.7411728 2 180 0 2 ; C1x N1x C2x C3x (AAAA->DDDD)
1 11 2 3 1 180 0 2 180 24.7411728 2 ; C1x N1x C2x C3x (AAAA->DDDD)
1 11 2 23 1 180 15.6141438 2 180 0 2 ; C1x N1x C2x H2x (AAAA->DDDD)
1 11 2 23 1 180 0 2 180 15.6141438 2 ; C1x N1x C2x H2x (AAAA->DDDD)
2 3 4 12 1 180 4.8669776 2 180 0 2 ; C2x C3x C4x C11x (AAAA->DDAA)
2 3 4 12 1 180 0 2 180 0.48669776 2 ; C2x C3x C4x C11x (AAAA->DDAA)
....

The dihedrals for almost all the pairs are defined twice. So, I have 2 questions about this [ dihedrals ] output:

  1. I want to simulate just the end states A and B in equilibrium runs. Are all the force constants for dihedrals for state A turned to 0, as the latest entries for the dihedrals will be considered?
  2. If I want to write ifdef LIGAND_A and ifdef LIGAND_B sections for the dihedrals, which contain the dihedrals for ligand A and ligand B on both the left and right sides in the entries, respectively, should it look like this? :
    [ dihedrals ]
    #ifdef LIGAND_A
    1 10 9 3 1 180 15.3215155 2 180 15.3215155 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 3 1 180 0 2 180 0 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 8 1 180 15.3215155 2 180 15.3215155 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 10 9 8 1 180 0 2 180 0 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 11 2 3 1 180 24.7411728 2 180 24.7411728 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    1 11 2 3 1 180 0 2 180 0 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    ....
    #endif
    #ifdef LIGAND_B
    1 10 9 3 1 180 0 2 180 0 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 3 1 180 15.3215155 2 180 15.3215155 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 8 1 180 0 2 180 0 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 10 9 8 1 180 15.3215155 2 180 15.3215155 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 11 2 3 1 180 0 2 180 0 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    1 11 2 3 1 180 24.7411728 2 180 24.7411728 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    1 11 2 23 1 180 0 2 180 0 2 ; C1x N1x C2x H2x (AAAA->DDDD)
    1 11 2 23 1 180 15.6141438 2 180 15.6141438 2 ; C1x N1x C2x H2x (AAAA->DDDD)
    ....
    #endif
    #ifdef LIGAND_AB
    1 10 9 3 1 180 15.3215155 2 180 0 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 3 1 180 0 2 180 15.3215155 2 ; C1x C10x C9x C3x (AAAA->DDDD)
    1 10 9 8 1 180 15.3215155 2 180 0 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 10 9 8 1 180 0 2 180 15.3215155 2 ; C1x C10x C9x C8x (AAAA->DDDD)
    1 11 2 3 1 180 24.7411728 2 180 0 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    1 11 2 3 1 180 0 2 180 24.7411728 2 ; C1x N1x C2x C3x (AAAA->DDDD)
    1 11 2 23 1 180 15.6141438 2 180 0 2 ; C1x N1x C2x H2x (AAAA->DDDD)
    1 11 2 23 1 180 0 2 180 15.6141438 2 ; C1x N1x C2x H2x (AAAA->DDDD)
    2 3 4 12 1 180 4.8669776 2 180 0 2 ; C2x C3x C4x C11x (AAAA->DDAA)
    2 3 4 12 1 180 0 2 180 0.48669776 2 ; C2x C3x C4x C11x (AAAA->DDAA)
    2 3 4 18 1 180 4.8669776 2 180 0 2 ; C2x C3x C4x C14x (AAAA->DDAA)
    2 3 4 18 1 180 0 2 180 0.48669776 2 ; C2x C3x C4x C14x (AAAA->DDAA)
    ...
    #endif

Using pmx with parmed generated gromacs topologies

Dear PMX developers,
I am trying to setup FEP calculations for a protein-peptide system where the peptide has some non-natural amino acids which I have parameterized using Antechamber with gaff2. My workflow is as follows.

  1. Use antechamber to parameterize non-natural amino acids.
  2. Use tleap to generated Amber format topologies of the complex using ff14SB force field.
  3. Use Parmed to convert Amber format topologies to Gromacs format.
  4. Run simulations using gromacs.

My question is that if I generate gromacs systems for both WT and mutant using the above protocol, can I use pmx to generate hybrid topologies and run FEP simulations?

the calculation of transitions between ligands with different total charges

Hello,

I have a question regarding the calculation of transitions between ligands with different total charges.

As per the tutorial, I've followed the steps to prepare equilibrium simulation files for each end-point using ligandhybrid. However, I've encountered an issue where the net charge is not 0 during the production run, and I anticipate charge changes during the transition path as well.

Could you please provide guidance on how to set up the system appropriately to address this?

Thank you in advance for your assistance.

py3 compatibility

The following modules are not py3 compatible yet:

  • options
  • _xdrio

I'll fix this at some point...

add script to test ff libraries

Add a script to test the correctness of the mutant ff libraries. No need for this to be a module too, as it will be run ad-hoc. This relates to #5

option to generate whole DNA/RNA library

at the moment generate_hybrid_residue.py has an option to create a protein library by running over all possible amino acid pairs, using pmx Models stored in the data folder. We could allow the same for DNA/RNA...

Request to add branch

Dear deGrootLab, I would like to humbly ask if possible for the original code for pymacs library as it is integral to run the tconcoord gui plugin.

Python 3 error loading pickle

When using pmx from the develop branch with python3 I get the following error:

TypeError: a bytes-like object is required, not 'str'
The error occurs in the following line:

return pickle.load(open(data_file))

The fix seems quite easy, just open the file with mode "rb" and pass bytes to pickle.load, and that seems to work both in python2 and 3. I can open a PR for you to review if you want.

Repartitioning dummy atom hydrogen mass

Hi,
I've been using PMX for a while now and a thought has just popped in to my head: I'm repartitioning hydrogen mass with a scale factor of 3, but noticed in my top files that the dummy atoms added will not be scaled. I.e. I will have hydrogens that are non-dummy with a mass of 3, but the dummy hydrogen atoms will have a mass of 1. Does it matter if the dummy atoms that are being transitioned into /away from are not the same mass as the non-dummy atoms?

I feel like this shouldn't be an issue but I wanted to check just incase,

Thanks.

Error in atom.py

In the function readPDBString, there is an instance, self.x that reads the coordinates of the pdb files.

Currently self.x=[float(line[30:38]), float(line[39:46]), float(line[47:54])]

But it should be self.x=[float(line[30:38]), float(line[39:46]), float(line[46:54])]

Gromacs 4.6 with an alternative soft-core function

Hi,

I'm looking at setting up non-equilibrium FEP calculations and have settled on PMX as a toolkit and parameter file repository to do this. In the PL benchmarking directory I saw in the readme the following line:

These files are meant to be used with a custom gmx4.6 version with an alternative soft-core formulation:
pmx.mpibpc.mpg.de/gromacs462_newsc.tar
and on the pmx website
Using the default Gromacs soft-core may cause artifacts during the non-equilibrium transitions. We have implemented an alternative soft-core version into Gromacs 4.6.2 version (unfortunately GPU support here is not yet supported with the free energy calculations): gromacs462_newsc.tar The default soft-core parameters in this Gromacs version are hardcoded following the original publication: DOI: 10.1021/ct300220p

So I have a few questions surrounding this modified potential:

  1. Are they still required in this format, or is there another way to specify them/are there any work arounds that allow running the latest version of GMX?
  2. Due to the lack of GPU support in this package, if given the option I'd like to run this version of gromacs only for the transitions, so the bulky equilibrium end state simulations can receive GPU support. Is this possible/is mixing GMX versions in this manner okay/appropriate?

Many thanks,
Noah

Error with Zn atom

Hello,

I am trying to prepare a DSSB system with pmx doublebox, but I get an error with a Zn atom. I have tried saving the pdb in several ways but still get this error:

Traceback (most recent call last):
  File "/home/almeida/.local/bin/pmx", line 8, in <module>
    sys.exit(entry_point())
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/scripts/cli.py", line 97, in entry_point
    PmxCli()
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/scripts/cli.py", line 44, in __init__
    getattr(self, args.command)()
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/scripts/cli.py", line 68, in doublebox
    make_double_box.entry_point()
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/scripts/make_double_box.py", line 72, in entry_point
    main(args)
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/scripts/make_double_box.py", line 65, in main
    mout = double_box(m1=m1, m2=m2, r=args.r, d=args.d,
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/model.py", line 1165, in double_box
    com1, rad1 = _get_com_radius(m1)
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/model.py", line 1087, in _get_com_radius
    amass = _get_mass(a)
  File "/home/almeida/.local/lib/python3.8/site-packages/pmx/model.py", line 1036, in _get_mass
    return(library._atommass[aname[0]])
KeyError: 'Z'

Any help will be appreciated.
Best

ff libraries in develop are unchecked/untested (and likely problematic)

These ff libraries come from merging master (dna ff) and proline branches (protein ff), and then merging dna and protein forcefields so that they are in a single folder. It is likely the resulting libraries might be broken in some way or another. I have been using bits and pieces (either only protein, dna, or rna) of the amber forcefields for testing of refactored code, which seemed fine, but at some point for any real usage we should re-build the libraries from scratch, maybe after having implemented some automated energy tests/checks.

Writing multifile topology fails to parse path

I am using the develop branch.
I have a system of three protein chains, thus by default, topol.top refers to three .itp files for each chain. pmx reads them correcly, but tries to write the .itp files nested, due to line 154 of src/pmx/scriptsgenerate_hybrid_topology.py:
out_fn = '{0}/pmx_{1}'.format(basepath,itp_fn)
This obviously throws an error.
Line 147 goes like this:
basepath = outfile.rsplit('/',1)[0]
for now, my workaround was to change that to
basepath = os.path.dirname(os.path.abspath(outfile))
so at least all files are written, but due to the str representation of the topol object and link 154, it writes files such: pmx_topol_Protein_chain_A.itp. I can rename them and work on.
However, I am not entirely sure I understood the intended behaviour. Perhaps I could only work on the itp which has the mutation, but in general, there can be more than one. Either way, I suggest a fix and a revision to that piece of code, even if more comprehensive exception handling is not affordable at the moment.

Which license? LGPL or GPL?

https://github.com/deGrootLab/pmx/blob/develop/LICENSE and https://degrootlab.github.io/pmx/ says LGPL 3.0, but setup.py (and thus https://pypi.org/project/pmx/ and https://pypi.org/project/biobb-pmx/ and ) say GPL 3.0. Which is the license of (this fork of) PMX?

I assume it is meant to be LGPL 3.0 (as in dseeliger/pmx), unless the Python package is adding a GPL dependency? Would you fix the mix-up?

It is still unclear if the "or any later" condition applies - so in formal SPDX identifiers either:

..should be added to the README - as the file license headers do not declare LGPL.

Is it possible to run non-equilibrium FEP from pre-equilibrated end points?

Hi,

I've been following the pmx tutorial found here. In this tutorial, the hybrid molecule with both A and B end states is created at the start of the protocol, and subjected to energy minimisation, equilibration and then transition stages.

I was wondering whether it is possible to create the hybrid molecule post-equilibration, and pre-transition. I.e., Run the EM and EQ protocol with a single molecule A, extract the frames, and then at every frame you combine molecule A with molecule B to create the hybrid molecule using PMX ligandHybrid. I guess you would have to do some sort of alignment procedure to ensure that B is aligned with the positions of A in the frame. You would also have to do some fiddling with the coordinate files to extract the original molecule and re-insert the hybrid molecule.

Do you have any ideas whether this would work, and do you have any advice for achieving this?

Thanks.

Using hydrogen mass repartitioning and non-equilibrium FEP.

Hi all,

I've been looking at speeding up my FEP calculations. While I've been looking at increased end state sampling using a variety of enhanced sampling methods, an easy win looks like using hydrogen mass repartitioning (HMR) and increasing the timestep from 2fs to 4fs.

Has anyone had experience doing this using the non-eq RFBE approach? I have run some test simulations, and while 3/4 worked, one simulation broke during the first eq_nvt stage (following a successful minimisation) due to LINCS warnings and the following fatal error:

Fatal error:
There are 52 perturbed non-bonded pair interactions beyond the pair-list
cutoff of 1.26 nm, which is not supported. This can happen because the system
is unstable, or because intra-molecular interactions are excluded. The latter
case is usually triggered by the use of couple-intramol=no. The issue can be
either due to a too small box, which can cause a molecule and its periodic
image to end up in the pairlist. In this case increase the box size. Or it can
happen because interactions at distances longer than rlist are excluded, in
which case you can try to increase nstlist or rlist to avoid this.

This system attempts to convert a methyl R group into a propyl R group, and hence there are quite a few hydrogens in the hybrid topology (pictured in orange)
image

Any suggestions as to what may have caused this system to break? Any thoughts about using HMR with non-eq FEP?
My plan is to try and stabilise the system with non-HMR EM / EQ prior to increasing timestep / repartitioning hydrogens and running a longer simulation.

Thanks,
Noah

Controlling how many threads/cores are used when running PMX command line

Is it possible to set the number of threads/cores used when running PMX via command line? It appears as if it automatically uses maximum number of CPU cores, this is certainly the case for atomMapping, unclear if it applies to other functions though. I haven't been able to see any CLI flags that allow control of this.

Thanks,
Noah

charmm36mut force field failed with Fatal error: Atom type ON2 (residue TPO) not found in atomtype database

Hi, thanks for your amazing work. I try to pmx to create hybrid topology and protein files. I used charmm36mut force field to generate mutate protein ( works well). after that, I used pdb2gmx to create hybrid topology files with charmm36mut force field, but it shows:

Fatal error:
Atom type ON2 (residue TPO) not found in atomtype database

It works well when i input the same force field and protein file on the website server, and it also works if i change the force field into charmm22 on the terminal command.

I think the charmm36 force field has something wrong, but I have no idea how to fix this problem as i am a new student here. could you please help me fix it? thanks!
Screenshot from 2024-01-11 10-41-42

add special ions

Hi, i wonder if there is a way to use some special ions, like TB3P (Terbium), DY3P(Dysprosium)?

Thanks

AttributeError: module 'configparser' has no attribute 'SafeConfigParser'. Did you mean: 'RawConfigParser'?

python setup.py install
/usr/local/pmx/versioneer.py:421: SyntaxWarning: invalid escape sequence '\s'
LONG_VERSION_PY['git'] = '''
Traceback (most recent call last):
File "/usr/local/pmx/setup.py", line 43, in
version=versioneer.get_version(),
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/pmx/versioneer.py", line 1480, in get_version
return get_versions()["version"]
^^^^^^^^^^^^^^
File "/usr/local/pmx/versioneer.py", line 1412, in get_versions
cfg = get_config_from_root(root)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/pmx/versioneer.py", line 342, in get_config_from_root
parser = configparser.SafeConfigParser()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'configparser' has no attribute 'SafeConfigParser'. Did you mean: 'RawConfigParser'?

develop branch - Multiple indentation errors

Hi,

I have cloned the repo and switched to the develop branch in order to use Python3. However, I get multiple indentation errors in atoms_to_morph.py (I haven't check the other files yet). It seems there is a mix of tabs and spaces in the file and that is raising errors. I tried to replace "\t" with 8 spaces (it seems to be the case here) but even that failed on lines like 329, for instance, in which you have an odd number of spaces.

I am not sure that is a known issue but I just wanted to let you known.
Thanks!

How to interpret wplots?

Hi,

I've been using the pmx module for a while now to create single-topology merged molecules.
While I have a good understanding of most of the output, I havevn't found documentation explaining how the wplots should be interpreted.

I have two plots here, showing a transition from ligand A -> ligand B, in complex with protein.
image
image

Am I right in thinking that the overlap of the two histograms indicates good convergence? And more overlap reflects more overlap of the forward and reverse snapshots? With EQ FEP I believe you expect the forward and reverse energy values to converge towards the end of the time-series. Is this the same with non-EQ FEP? Or would good convergence / overlap of the forward/reverse work values be more present over the whole graph?

Thanks.

Why does PMX ligandHybrid fail for this specific ligand?

Hi,

I'm attempting to run non-eq FEP and using some PMX tools to help generate the topologies to do so. Using ligandHybrid fails when I include a certain single ligand (ejm46) in the pair, while working fine with all other ligand pairs.
The command I'm using is:
'pmx ligandHybrid -i1 ejm42.pdb -i2 ejm46.pdb -itp1 ejm42.top -itp2 ejm46.top -pairs pairs_a.dat -oA merged.pdb -oitp merged.itp -offitp ffmerged.itp'

The resulting error is as follows:

b'ligandHybridTop__log_> Reading ligand 1 from: "/home/noah/Documents/md/toolkit/output/ejm42_ejm46/input/ejm42.pdb"'
b'ligandHybridTop__log_> Reading ligand 2 from: "/home/noah/Documents/md/toolkit/output/ejm42_ejm46/input/ejm46.pdb"'
b'ligandHybridTop__log_> Reading topology 1 from: "/home/noah/Documents/md/toolkit/output/ejm42_ejm46/input/ejm42.top"'
b'ligandHybridTop__log_> Reading topology 2 from: "/home/noah/Documents/md/toolkit/output/ejm42_ejm46/input/ejm46.top"'
b'Traceback (most recent call last):'
b' File "/home/noah/anaconda3/envs/biosimspace/bin/pmx", line 33, in '
b" sys.exit(load_entry_point('pmx==0+untagged.879.gb0b5684', 'console_scripts', 'pmx')())"
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/scripts/cli.py", line 97, in entry_point'
b' PmxCli()'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/scripts/cli.py", line 44, in init'
b' getattr(self, args.command)()'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/scripts/cli.py", line 64, in ligandHybrid'
b' ligandHybrid.entry_point()'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/scripts/ligandHybrid.py", line 189, in entry_point'
b' main(args)'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/scripts/ligandHybrid.py", line 246, in main'
b' itp2 = TopolBase(args.itp2)'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/forcefield.py", line 140, in init'
b' self.read()'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/forcefield.py", line 177, in read'
b' self.read_molecules(lines)'
b' File "/home/noah/anaconda3/envs/biosimspace/lib/python3.9/site-packages/pmx-0+untagged.879.gb0b5684-py3.9-linux-x86_64.egg/pmx/forcefield.py", line 249, in read_molecules'
b' self.molecules.append([entr[0], int(entr[1])])'
b'IndexError: list index out of range'

Input files are here. Is there any reason this might be happening? Have checked the top files and the pdb files but can't see any issues. Again, since this works for other pairs including ejm42, but always fails if ejm46 is included in a pair, it's safe to say this issue is specific to ejm46 input data.

Error in ligand_alchemy.py

b'  File "/home/---/miniconda3/envs/AZtutorial/lib/python3.7/site-packages/pmx/ligand_alchemy.py", line 774, in _isTriple'
b'    if(getBondLength(mol,a.GetIdx(),neighb.GetIdx())<1.25 ): # need to check bond length (in Angstroms)'

Maybe it shouldn't be getBondLength, but self._getBondLength

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.