Skip to content
rmera edited this page Jul 31, 2013 · 38 revisions

chemistry gopher

Gochem is an open source (LGPL2.1) library for chemistry, with some emphasis on computational biochemistry, written in the Go programing language. Gochem development started at the Laboratory for instruction in Swedish, Department of Chemistry, University of Helsinki, Finland. It is currently developed at [Prof. Ochsenfeld's Theoretical Chemistry group] (http://www.cup.uni-muenchen.de/pc/ochsenfeld/), Ludwig Maximilan University, Munich, Germany.

The developer is Dr. Raúl Mera Adasme.

Gochem contains contributions from Prof. Verónica Jimenez C. (Universidad de Concepción, Chile) and Doc. Janne Pesonen. It has been developed under Doc. Pesonen's and Prof. Dage Sundholm's advice.

The developer dedicates his effort to the long life of the Ven. Khenpo Phuntzok Tenzin Rinpoche.

#Current capabilities

  1. Reads/writes PDB and XYZ files.

  2. Reads XTC and DCD trajectory 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 Turbomole, Orca and MOPAC (which must be obtained independently from their respective
    distributors). Interfacing gochem to other QM codes is fairly simple.

#Installation After you have installed the Go toolchain and set up the environment variables (instructions here), you can install gochem by simply typing the following on a terminal:

go get github.com/rmera/gochem

Notice that you also need to have git and mercurial installed on your machine (mercurial is required by the Plotinum library).

#Documentation The User's guide is a work in progress, but it already contains some explanations and examples.

The types, functions, etc. of gochem can be found in the corresponding GoDoc page:

Gochem at GoDoc

Example programs

Some simple programs are provided, with an explanation, to illustrate the usage of gochem.

Superimposing two structures.

Analysis on the moment of inertia tensor of a molecule.

Geometry manipulation and QM-calculations input building.

#Disclaimer

Copyright 2012 Raúl Mera Adasme.

The code in this wiki, is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

The code in this wiki 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.

See http://www.gnu.org/licenses/ for more information.

The gochem mascot is a modification by Sebastian Franchini of the Go programing language mascot, by Renée French.

Clone this wiki locally