Common cryoem applications and tools packaged into a singularity container.
One of the pains of setting up cryoem software is that it often difficult to setup to work in your HPC (or even desktop) environment. This repo contains a singularity recipe to automatically build a common set of cryoem tools and applications to ease the process of getting started.
Why Singularity?
Singularity is a container technology, that like VMs, allow portability of applications and codes across different computer (linux) environments. The most popular container technology is Docker.
However, due to the way Docker works, it is quite insecure and assumes that you have administrative priviledges on the system that you are running on. (Un)fortunately, most users of HPC resources do not have sudo or root; in addition, most HPC centers do not or cannot run the latest kernels to enable Docker (reliably). This is where Singularity steps in. You can build the image from another machine (where you do have administrative priviledges) and simply copy the entire (resultant) container image to your HPC shared file system (with Docker you have to fluff around with repositories etc) and start using your containerised environment immediately (as long as the singularity runtime is enabled on your HPC system)
The following are to be implemented (suggestions welcome! pull requests even more welcome!)
TBA
Rather than copying binaries (unless necessary) into the container, I strive to compile all applications from source. As anyone who's compile software before, this can be rather hit or miss. In order to ease this process, this container uses spack in order to process and install dependencies. A series of custom spack packages for cryoem have been written and incorporated into this container. As you will note from the singularity definition, the building of this container image simply runs spack commands in order to download, build and install the applications.