js850 / pygmin Goto Github PK
View Code? Open in Web Editor NEWglobal optimization and energy landscape exploration
License: Other
global optimization and energy landscape exploration
License: Other
method analogous to removeMinimum() require for transition states
e.g. in quench if step has failed
Solution: make specialized exceptions for these problems and only catch these
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.
describe what the parameters do
we have a huge mess of mixed code. can we make this more consistent?
Also there should be only 1 lj implementation and maximum 1 fallback option (if at all)
separate rigid body transformations from potential
espresso soon will have a python interface. this will make it a lot easier. otherwise, espresso can be compliled as a library.
Move this to a separate sub class, interaction lists do not make sense for all potentials
e.g. for crystal structure code
Currently it's a bit inconsistent. We should probably separate initial pushoff relaxation + final quench. the latter should use a handle of the get_minimize from system class
numerical one by default
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
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:
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.
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.
this could be done in a wrapper class NEB_driver
The database should be able to save only the N minima with the lowest energy.
use it in storage + basin hopping
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
do not use i % iprint == 1
this doesn't work for iprint == 1, use i % iprint == 0 instead.
are you ok with that? you can do that in the admin page for the repository.
get NEB to work with rigid bodies
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.
I am planning to create a MolecularSystem class inheriting from BaseSystem. Its purpose will be to:
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[]
writing new scripts has lots of redundancy, add a system class and derive from that to also define standard crystal system
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
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?).
Don't redraw everything but update curves instead could be better?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.