A Go-based tracking of cosmic velocity fields through the use of tetrahedra
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



gotetra is a Go-based package which uses phase-space tesselation techniques to extract information about cosmological N-body simulations. The key applications of this code are the measurement of splahsback shells around halos and the generation of high resolution images of density fields.

Extremely unfinished function documentation can be found in this README and at http://godoc.org/github.com/phil-mansfield/gotetra.

An example image



Coming soon...

(Briefly: it works like any other Go package. Just build the scripts in the various main/ subdirectories with either go build or go install.)

Project Structure

There are three major branches:

  • render/: Generates 3D and 2D (projected) density fields from a particle snapshot generated by a cosmological N-body simulation.

  • los/: Measures density along lines of sight from the center of halos. These densities can be used to measure the splashback shells of halos.

  • compress/: Compresses the position space data from cosmological N-body simulations. (Very not finished. Currently lots of uncommitted ideas and tests.)

There are also a number of helper directories:

  • cosmo/: Library with a few useful functions that calculate cosmological quantities.

  • math/: Library for computing a potpourri of useful mathematical functions. In a lot of cases, this just means reimplementing things from the Go standard library in a better way.


Python code for interfacing with gotetra output is provided in the python/ directory. gotetra.py is both a python library and a command line utility. Running it as $ python gotetra.py my_gotetra_file.gtet will print out information about the file, and importing it will give you access to functions which can read in gotetra headers and arrays.

The documentation for this is not fantastic, and I plan to make it better later.

Description of command line tools

Coming soon...

Relavent Papers

Coming soon...


Here are some things which I would love to add to this project but do not currently have the time to do so. In no particular order:

  • Create a Python librarywhich captures the behavior of the command-line utilities. Write Python bindings for all the important functions. (Difficulty: Medium)

  • Higher order tesselation techniques. (Difficulty: High)

  • Generalization from uniform initial conditions to adaptively refined initial conditions. (Difficulty: Low)

  • Improved documentation. (Difficulty: Low)

  • Convert various gtet_foo applications to a single gtet application with a foo argument. (Diffifulty: Low)

  • Restructure project in a number of ways. The most obvious and easiest would be to move all the packages in los/ which are imported by files in los/ to some top level package. (Diffifulty: Low to Medium)

  • Write an introduction somewhere for the uninitiated. (Diffifulty: Low, but only Phil can do it.)



This project is not even close to stable yet.