Giter VIP home page Giter VIP logo

pygmin's People

Contributors

js850 avatar ss2029 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

lsmeeton yfyh2013

pygmin's Issues

cleanup BasinHopping & MC class

  • there is lots of redundant code, improve inheritance
  • the creation of the basin hopping object takes too long, move initial quench to run
  • update documentation

suggested change in global organization

We should ensure that no function or class is more than two levels deep in import statements. i.e. no more of import pygmin.potenials.lj.LJ This should instead be import potenials.LJ

Steps to get there:

every file should declare an all variable at the top. This declares which objects are public and will be imported in an import * statement.

all init.py files should have statements like "
from myfile1 import *

This has the potential to cause name conflicts. If file NEB.py has class NEB(). Thus most files should be renamed like _NEB.py.

Also, functions and classes need to have names which make their use obvious even when divorced from their file name. Example: function start() in pymolwrapper.py wouldn't make any sense if imported as from pygmin.utils import start

Functions and classes in the same directories must have unique names. Problem areas are our 12 different implementations of LJ, and two implementations of transition state search.

If we do this, almost all import statements will break, so we will need to be careful.

vec_random is used in a wrong way

vec_random generates a random unit vector of length 1. If used in a takestep routine, this should be multiplied by a random scalar! This was not done in all cases. check this

Make takestep a class

  • adaptive step taking shouold be applicable in 1 line
  • what about reseeding -> superclass of reseeding

Create Topology module

As discussed in Create MolecularSystem class, it would be nice if we could create some sort of topology module for PyGMIN.

So far, we want to be able to include:

  • Molecular systems with bonding, angles and dihedrals;
  • Crystal systems (including information on boundary conditions);
  • Angle-axis topologies (e.g. water networks).

I am wondering whether we also need to separate all this information from information about symmetry and our various forms of coarse-graining.

I think we also need to think carefully about how this module will be related to the System classes, e.g. when individual particles are bonded by harmonic potentials, such as in AMBER, they cannot dissociate and you can't meaningfully rearrange the system to some other type of connectivity.

mindist exact alignment

we need routines to check for exact alignment before using minDistStochastic. This is possible without the N! scaling. We should never be missing exact alignments.

add check if database does not exist

If one wants to use an existing database, it often happens that a new one is created since e.g. there was a type in name. Add a flag to explicitly create a new database and check how to best integrate it at the various places in the code

bug in iprint

do not use i % iprint == 1

this doesn't work for iprint == 1, use i % iprint == 0 instead.

replace module rmdrvt

this module calculates derivatives of rotation matrices. But it is in fortran and passes multidimensional matrices. Four 3X3 matrices are copied for each call to this function. This should be changed. Probably rewriting it in cython is the easiest.

Create MolecularSystem class

I am planning to create a MolecularSystem class inheriting from BaseSystem. Its purpose will be to:

  • Act as a superclass for AMBERSystem and any future CHARMM, GROMOS etc. style systems;
  • Identify topological features of molecular symmetry;
  • Allow for interconversion between AMBER, CHARMM and other potentials;
  • Implement easy I/O and visual representations.

The two important classes for this will be MolecularSystem and Atom, which are outlined below:

class MolecularSystem(BaseSystem)
    atoms
    bonds
    angles
    torsions
    topology_search()
    import_pdb()
    import_xyz()

class Atom()
    mass
    element
    charge
    lj_terms[]
    bonded_atoms[]

add system class

writing new scripts has lots of redundancy, add a system class and derive from that to also define standard crystal system

Database.number_of_minima()

it would be nice to have fast access to the number of minima, transition states and distances in the database. len(database.minima()) is problematic for large databases

Fix the examples/scripting examples

Currently all the numbered examples in pygmin/examples/scripting do not use the system classes derived from BaseSystem.

We should update them to do this (and remove the old functionality?).

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.