Skip to content

cornerot/gochem

 
 

Repository files navigation

To the long life of the Ven. Khenpo Phuntzok Tenzin Rinpoche.


goChem is a library fro Computational Chemistry and Biochemistry
written in the Go programming language. 

Check out www.gochem.org for more information.

goChem's API has very recently been upgraded. The documentation
will be upgraded within a few days to reflect these changes, and this
sign will be removed. Until then, the documentation is unfortunately 
not to be trusted.


goChem uses gonum (https://github.com/gonum/matrix) for matrix
operations. The user can choose to have gonum backed by a pure-go 
(and some assembly) implementation of BLAS (which allows not having 
runtime dependencies) or by the somewhat more efficient cBLAS. 

Ramachandran plots require the Plotinum 
(http://code.google.com/p/plotinum/) library.

Reading xtc files require the xdrfile
library from Gromacs (www.gromacs.org) 


All dependencies of goChem are open source.


Design goals:

*Simplicity (of the code).
*Readability.
*Fast and light
*Concurrent when possible and necessary
*Easy to extend
*Useful for Computational Chemistry/Biochemistry 
at a classical and QM levels.




Current capabilities.

1.  Reads/writes PDB and XYZ files.

2.   Reads XTC and DCD files, both sequentially and concurrently.

3.  Superimposes molecules (especially adequate for non-proteins since  
	doesn't use sequence information). The user specify what 
	atoms to use for the superimposing transformation calculation. 
	Then all the atoms will be superimposed accordingly. This means that
	non-identical molecules can be superimposed.

4.   Calculates RMSD between sets of coordinates.

5.   Allows to select atoms and coordinates by using a go slice 
     of indexes.

6.   Allows to replace selected coordinates for a new set.

7.   Calculates moment tensor and elipsoid of inertia--related properties 

8.   The Molecule object implements the sort.Interface interface, 
     so atoms can easily be sorted by b-factors.

9.   Axis manipulation:
	 + Align a vector with the Z axis
	 + Rotate around the Z axis until the xy projection of a vector becomes 
	  the Y axis
	 + Rotate a sub-group of atoms in a molecule using any 2 coordinates as
      the rotation axis.

	 **The latter is implemented using Clifford algebra and, as a 
	 legacy version, Euler angles and rotation matrices (math for the 
	 Cliffor algebra implementation by Doc. Dr. Janne Pesonen). 
	 The Clifford algebra implementation is concurrent. In general, 
	 Clifford algebra is mathematically better behaving than Euler 
	 angles, which are not defined for certain rotations.*

10.  Calculates and draws Ramachandran plots (uses the Plotinum library).
        for an aminoacidic chain or a subset of it.

11.  Generates input for, run and recover results from QM calculations
	 with NWChem, Turbomole, Orca and MOPAC (which must be obtained independently 
	 from their respective distributors.)

12.	Implements a JSON interface that allows easy communication of goChem
	programs with the PyMOL visualization program (www.pymol.org)


NOTE ON THE API:

On XX/XX/2015 the API has suffered a few changes. The main ones are: 

1) All names involving identification numbers (IDs) have changed
from Id or id to ID. e.g., the Atom.Molid field has become 
Atom.MolID.

2) Some functions have been moved into new packages under the library.
all funcitons for JSON serialization of goChem objects or options
(intended for communicating Go programs with programs written in other
languages, PyMOL plugins in particular) have been moved to their 
own package, "chson" (github.com/rmera/gochem/chson).
Several convenience functions have been taken from the chem package
and upt into the  XXXXX package.

On 13/11/2013 the API has been made stable. This means that only 
backward-compatible changes to the current API will be made 
to it for a year.
In the unlikely event that a serious problem requiring a minor API 
change would arise, Tools to automatically upgrade code will be made 
available.


There is no publication on gochem yet. If you use the library, or a
program based on gochem before such a publication is available,
please support the library by citing in your publication:

Mera-Adasme, R., Savasci, G., Pesonen, J. 
"goChem: a library for computational chemistry".
https://www.github.com/rmera/gochem



Currently, gochem is licensed under LGPL2.1. This might change 
towards BSD in the future. Meanwhile, if you want to use some 
of this for a BSD-licensed project, contact the developer.



LICENSE

Copyright 2012 Raul Mera <rmera{at}chemDOThelsinkiDOTfi> 


This program, including its documentation, 
is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as 
published by the Free Software Foundation; either version 2.1 of the 
License, or (at your option) any later version.
	  
This program and its documentation is distributed in the hope that 
it will be useful, but WITHOUT ANY WARRANTY; without even the 
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.  See the GNU General Public License for more details.
		    
You should have received a copy of the GNU Lesser General 
Public License along with this program.  If not, see 
<http://www.gnu.org/licenses/>. 


The mascot is a modification by Sebastian Franchini of the
Go language mascot by Renee French.


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.0%
  • Other 1.0%