Giter Club home page Giter Club logo

mdrestraintsgenerator's People

Contributors

ialibay avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

mdrestraintsgenerator's Issues

Extend capabilities: Ligand picker

So ideally we would want to not have to have a user defined ligand selection.

Ideas for ligand picking strategies could be:

  1. Calculate an RMSF on all ligand atoms.
    a) We could take two heavy atoms with the lowest RMSF and one with the highest. This should help reduce the flexibility of the ligand.

  2. Use ligand sub-graphs to pick out ring atoms.
    a) At the moment the human side of things usually picks out ring one ring atom (at least for fragments) and it's next two connected heavy atom. We could probably just use sub-graphs or gaff atom naming to pick those out automatically.

Regression failure for scipy>1.8

The circmean & circvar methods have been changed in scipy, with the latter providing a normalised variance. Technically these now better reflect the way in which you calculate circular statistics, however this changes the weighting we had towards the combined variance (which in some ways highlights an issue with the maybe naive way in which we did things). This needs further investigation but I believe that the bond variance now has a greater contribution towards the summed variance.

For now we will pin to scipy<1.8, and then investigate how to move from here.

Add the ability to generate BoreschRestraints via the pull code

As evidenced by the recent gmx redmine issue: https://redmine.gromacs.org/issues/2953, it may be prudent to implement a means of generating Boresch restraints that does not rely on the intermolecular_restraints code. This would allow us to leverage the pull code and help bring the .mdp files closer to those of the hardwall restraint simulations. It would also probably make the restraints easier to understand for new users.

This should be rather simple:

  1. Generate a set of index groups using MDAnalysis which defines each of the 6 atoms involved in a Boresch restraint.
  2. Generate a set of default .mdp options for the restraints.. something like:
    pull-group1-name = atom1
    pull-group2-name = atom2
    ... etc...
    pull-coord1-type = umbrella
    pull-coord2-type = umbrella
    .... etc ...
    pull-coord1-geometry = distance
    pull-coord2-geometry = angle
    ... for pull-coord3
    pull-coord4-geometry = dihedral
    ... for pull-coord[5-6]
    pull-coord1-init = [nm]
    pull-coord2-init = [deg]
    ... etc...

Ideally we can just provide this as a printed output for pasting into future mdp files and/or we can just create idealised template mdp files directly using this protocol.

Travis segfaults on Linux

See #21

I can't seem to be able to reproduce this locally though, and MacOS runs fine.. similarly to the MDA user guide's issues, this one's going to take time to solve..

Add checks for expected topology attributes

This was brought up thanks to @xiki-tempula

The code expects specific topology attributes that are only contained in more detailed topology formats (tpr, parm7, etc...), but does not make it clear that these are necessary & that these topology attributes are missing. Proper checks w/ error messages should be added.

gromacs: avoid dihedrals close to 180/-180 periodicity

Due to the way gromacs calculations dihedrals we end up with issues when crossing from 180 to -180 on a dihedral. To avoid this we should just make sure that angles that are within a given cutoff of that boundary are given really high variances (so that they won't get picked).

To do - this is documented in one of Vytas' recent papers on NEQ absolute binding free energy calculations.

Add the "closest frame" value to the histogram plots

At the moment the histograms plot the mean value for each distribution, ideally we would also want to show the values of the closest frame, this would ensure that we are picking something sensible.

The code update for this will require implementing the rmsd calculation as part of the class object, but it shouldn't cause large increases in computational costs (unless many frames are involved).

Add options for AMBER TI restraints

As a means to test the AMBER GPU-TI code for Boresch restrained TI simulations, it would be useful to use the code to dump out an AMBER topology that has fictitious bonds added via parmed (see the setBond, setAngle and addDihedral + timerge commands). This should allow us to do a set of transformations where we:

A) Transform the system into a bonded one.
B) Do a one or two step charge/vdw perturbation.

Some of the issues here is that the MBAR code may not work properly, but it is worth trying just in case (if anything it'd make a nice tutorial).

Implement interactive restraint picking

Unfortunately these kinds of scenarios can happen...

dihedral1

This is problematic because the lowest RMSD position ends up picking up a rather unfavourable dihedral angle (I'll update if this simulation doesn't fail...).

For cases such as these, it would be useful to implement an interactive mode where the users can limit the sampling selection to a region of interest.

This is going to be rather large thing to implement, it'll probably a need a complete refactoring of the code.

Add proper documentation

Minimal usage documentation should be added temporarily so that people at least know where to look for things.

CN selection will fail if picking on a terminal AA

As per title, in some cases resid+1 doesn't exist or even worse, in some cases you end up chain hopping.

Either way this is generally a terrible idea to try to get a restraint for, but hopefully it should get filtered out by the restraint picker.

plotting is broken

Somehow I managed to make it so that the Angle and Dihedral class objects all have the same filename for plotting, so they just overwrite each other.

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.