rmera edited this page Jul 5, 2017 · 34 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.

The developer is Dr. Raúl Mera Adasme.

Gochem contains contributions from Doc. Janne Pesonen. The superimposing function was implemented with help from Prof. Verónica Jimenez C. (Universidad de Concepción, Chile). Advice from Prof. Dr. Dage Sundholm is gratefully acknowledged.

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 specifies what atoms from each molecule are to be 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 ellipsoid 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 Clifford 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, runs and recovers results from QM calculations with Orca, NWChem and MOPAC (which must be obtained independently from their respective distributors). Interfacing gochem to other QM codes is fairly simple.

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


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

go get github.com/rmera/gochem

If you want to install the other components of the library, a few more "go get" commands are needed. Take a look at the user's guide for more info.


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


A few practical examples of goChem's usage.

Moment tensor analysis.

Geometry manipulation and QM input building.

Aligning a given plane with the XY plane.


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 programming language mascot, by Renée French.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.