A library for computational Chemistry in the Go programming language
Branch: master
Clone or download
rmera rmera
rmera and rmera Merge branch 'devel'
Fixed silly conflict between master and devel.

by mistake I fixed a file in master, which one is not supposed to do in goChem. That caused a conflict when I merged devel, in which I had later also fixed the same problem. It is all ok now, although this commit makes the git history less nice. What can one do.
Latest commit ddd7ef9 Jan 23, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
chemjson API corrections (breaking change!). Also improved (hopefully) and add… Jul 27, 2017
chemplot Merge branch 'devel' Jan 23, 2018
dcd Updates in qm: The errors in qm.go, orca, nwchem and mopac has been u… May 11, 2015
images One more fix to the gopher license file Mar 26, 2014
qm Removed leftover print statements from previous debugging efforts Jan 23, 2018
test RotateP should be quite efficient now, also the test has been added t… Jan 13, 2015
v3 Removed leftover print statements from previous debugging efforts Jan 23, 2018
xtc Updates in qm: The errors in qm.go, orca, nwchem and mopac has been u… May 11, 2015
.gitignore Added support for v3 in the qm subpackage, Also added v3 dir to repo Mar 16, 2015
LICENSE Better format for the license Jan 10, 2014
Makefile Reading XTC files implemented Sep 1, 2012
README Merge branch 'devel' Oct 12, 2017
chem.go Moved the calculation part of the Ramachandran plot directly into goChem Sep 26, 2017
clifford.go Removed leftover print statements from previous debugging efforts Jan 23, 2018
conversion.go Various minor API fixes Nov 12, 2013
coord_test.go go fmt'd Jul 22, 2017
doc.go Improved the labels for functions/interfaces that should change soon,… Sep 29, 2014
files.go Removed leftover print statements from previous debugging efforts Jan 23, 2018
geometric.go API corrections (breaking change!). Also improved (hopefully) and add… Jul 27, 2017
gochem_test.go API corrections (breaking change!). Also improved (hopefully) and add… Jul 27, 2017
handy.go Removed leftover print statements from previous debugging efforts Jan 23, 2018
hydrogens.go Passes the tests with Go 1.6 and my current (i.e. downloaded ~20/02/2… Feb 23, 2016
interfaces.go Reduced the size of some interfaces and removed uneeded ones. May 17, 2015
matrixhelp.go go fmt'd Jul 22, 2017
other_info chemplot now uses gonum/plot instead of Plotinum. Jul 25, 2017
ramacalc.go Added the file with the Ramachandran functions that I forgot to add b… Oct 9, 2017

README

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 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)


NOTES 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.