forked from rmera/gochem
cornerot/gochem
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published
Languages
- Go 99.0%
- Other 1.0%