Home

Welcome to my Wiki page! My name is Jason Swails and, as of 07/16/2013, I am a Ph.D. graduate, and I will be continuing research at Rutgers University with Prof. David Case. I predominantly use this page as a source of useful information and tricks for my research and work, which I periodically use as a reference.

Please feel free to add-on to this page or use it in any way you'd like (but please be nice to the existing material). If you find any of the information useful and wish to copy pieces (large or small), I ask only to be credited in some way — a link to the page or an "I got this from this jswails-guy's Wiki" is fine. I still have to build a (hopefully good) reputation for my career :).

Setting up a computer for use with Computational Chemistry software

Choosing a computer

There are 3 typical choices for personal computers:

  1. Apple computer + Mac OS X
  2. "Windows" computer + Linux
  3. "Windows" computer + Windows

Apple computer + Mac OS X

Pros:

  • UNIX operating system works quite fluidly with computational chemistry programs
  • Easy-to-use
  • Access to commercial software (iTunes, Microsoft Office, etc.)
  • Free compilers
  • Native terminal (emulator) for working with the command-line
  • Can run a VM (virtual machine, like VirtualBox) so you can run other operating systems if you need something only another OS has to offer
  • Commercially supported by many companies

Cons:

  • Limited hardware selection (I actually see this as a Pro more often than not — not inundated with choices)
  • Case-insensitive (but case-aware) file system by default means a subtle split with the behavior of other standard Unices (like Linux)
  • GDB debugger does not work that well for me
  • Machines tend to be rather expensive
  • They have quirks that make it slightly different from Linux. For instance, X11 is buggy on the Mac in some corner cases, and other packages don't install as easily as "./configure && make && make install"; hence the need for MacPorts.

"Windows computer" + Linux

Pros:

  • Highly customizable
  • Works seamlessly (natively) with most computational chemistry softwares (especially Amber, Gaussian, etc.)
  • Most supercomputers run Linux or some other form of Unix, so it's more compatible here (although all you really need is an SSH client, which can be installed on Windows, and comes natively on the Mac)
  • The Operating System is free — as in Open Source free (!)
  • There is a very rich suite of open-source solutions to many commercial packages that are not available
  • You can use a Virtual Machine (VM) to run other operating systems if a specific need arises (see VirtualBox)
  • Some are easy to use and install

Cons:

  • No access to some commercial softwares (iTunes, Microsoft Office, etc.)
  • It can be difficult to get the system configured the way you want
  • Troubleshooting OS issues can be difficult
  • Maintaining it can be difficult
  • May be tricky finding drivers for your hardware, especially if it is very new

"Windows" computer + Windows

Pros:

  • Easy-to-use
  • Supported by just about any popular open source or commercial software company
  • Cygwin emulates a UNIX environment so you can work with UNIX-friendly softwares, like Amber.
  • Can run a VM (virtual machine, like VirtualBox) so you can run other operating systems if you need something only another OS has to offer

Cons:

  • Cygwin is a bad UNIX compared to a real UNIX.
  • Fewer and fewer people in the field are still using Windows OS based on my experience and observation (and even fewer do not have a UNIX alternative readily available for "real" work).

Suggestion

I typically have either a Mac OS X or Windows computer so that I have access to commercial software (e.g., iTunes, Microsoft Office, etc.) For that reason, I typically always have a Mac laptop for personal use, but I can also do work with it. If I have access to more than 1 computer, I would choose "Windows" computer + Linux for the rest of the machines.

I have not personally owned or operated a machine with the Windows OS (except in a VM to help test Amber on CYGWIN) for ~6 years. However, I wouldn't suggest changing unless you expect it to make your life easier very soon. However, I would still say I'm fairly good at troubleshooting and working with Windows, which is a testament to how easy-to-use and intuitive the interface is (or perhaps how ingrained it is :)).

In terms of actual operation, all 3 choices are really converging to the same place…

How-to Set Up Your Computer (for Amber)

These are based on my suggestions for the different platforms

I have the most experience with Mac and Ubuntu, although I share specifics I've picked up using Fedora/Red Hat/CentOS, and Windows.

Computer Maintenance Tips

These pages are mostly designed to be a reference for me, but may prove helpful. It's just a hodgepodge of various tricks I've picked up while troubleshooting problems or playing around.

HOW TO-s with Programs

In this section, I put tutorials and walkthroughs on how to use specific programs that I stumbled upon and have found useful in my work.

I collected this experience from a combination of the following:

  • Jump right in — I launched the program and saw what happened. Where tutorials existed (e.g., Amber), I ran a couple first to get the hang of running the program.
  • Read the man pages. Many programs have detailed manual pages accessible via the Unix man program. You would be shocked how much valuable, helpful information is available here.
  • Read the manuals — When I wanted to do something but couldn't figure it out quickly on my own, I consulted a reference manual if there was an official one.
  • Google it — This is usually the most helpful, and at least tells you where to get started.

Amber (Assisted Model Building with Energy Refinement)

AMBER is a computational chemistry package developed, maintained, and distributed by a collaboration of researchers in both academia and industry. You can learn more about it at the website here. It is distributed as two separate packages: AmberTools, which is freely distributed under various open source licenses (variations of the GPL), and Amber (which are basically just the simulation engines pmemd and sander).

AMBER is used to carry out computational investigations of molecular systems at an atomistic level of detail. What that means is that it performs calculations on tiny systems using computational models that treat each atom individually and predicts how each atom interacts with every other atom in the system.

AMBER typically employs classical mechanics to study large systems of biological interest. Related packages are NAMD, CHARMM, Desmond, and Gromacs. (This is hardly an exhaustive list)

Installing Amber

Before you embark on Installing Amber, make sure you have set your computer up properly. See above for details about how to set up various platforms for use with Amber.

Installing AmberTools 14 and older Amber
Installing Amber14 and AmberTools14
Installing Amber Development

Using Amber

This section is a repository for running a handful of different types of simulations using the Amber molecular dynamics package. It has only selected tutorials that are not well-covered on the official Amber tutorials site.

Click here to go to the simulation tutorial page

GNUPLOT

gnuplot is a very powerful open source plotting program capable of generating publication-quality plots and figures. It is used frequently to generate images and plots on Wikipedia as well, which is, as we all know, the source of sources.

It is the package that I use the most to plot data. I include a tutorial and reference that I will update as I gain more experience using gnuplot.

Click here to go to the gnuplot tutorial page

PBS (Portable Batch System)

PBS is a scheduling system, and its derivatives (e.g., torque) are often used on computer clusters to manage large numbers of jobs over large numbers of processors and compute nodes.

If you are experienced with PBS and know how to take advantage of many of its features, it can give you a serious advantage as far as efficiently submitting jobs and getting them to run faster.

Click here to go to the PBS tutorial page

Git (Version Control System)

The git project is a distributed version control system initially written by Linus Torvalds to manage the Linux kernel. The design goal, implementation, and usage are all significantly different than CVS, Subversion (svn), and other centralized models. Furthermore, git is the version control system used to manage Amber and AmberTools. Knowing how to use git will make development activities within Amber (and other projects that use git) much easier.

Click here to go to the git tutorial page

Gitosis (git repository management)

There are some features of CVS and svn that are nice. For instance, it can be nice in a collaborative project to have a centralized place where people can dump changes, rather than relying on everyone pulling from each other as they see fit (firewalls and network hindrances, you understand). The gitosis project is a way to do just that. This page is directed at gitosis managers and those that will be administering git servers. Normal git users don't need to know gitosis.

Click here to go to the gitosis tutorial page

PyMOL (Molecular Visualization Program)

I have used VMD for most of my visualization needs, and there are still some things it does much better than PyMOL. For instance, visualizing and analyzing molecular dynamics (MD) trajectories is not supported in PyMOL (to my knowledge), so you must use VMD for that.

PyMOL is useful for analyzing and comparing single structures as well as a host of other things. It also has a convenient Python API so you can leverage PyMOL's visualization capabilities in your own scripts.

Click here to go to the PyMOL tutorial page

As a note, my experience with PyMOL is still painfully limited, and is more of a public notebook than a tutorial. (While the above programs I detailed are public notebooks in a way, too, my experience with those is much higher).

Programming Tools

This section contains information I've learned through my experience programming (for Amber and for my own scripts). It will list some of the languages and/or APIs that I've used.

Message Passing Interface (MPI)

MPI is a standard for detailing a method for writing parallel programs. It has a well-defined API, and is typically the method chosen to parallelize massively parallel programs in our field.

Click here to go to the MPI tutorial page

Helpful Scripts I've Written

During the course of my research, I often write little scripts that I find helpful. Those that I have polished up and made professional-looking (of sorts), with some modest error checking, etc., I will dump to a dedicated scripts page with a short description about what it does and how to use it.

Most of the scripts are written in Python, and some just provide a class for you to use in your own Python scripts.

Click here to go to the helpful scripts page

Quotes

Who doesn't love quotes? For those that don't know me, I give you a small bit of advice prior to clicking: expect little to no enlightenment.

Click here to go to the quotations page

LIST OF ALL PAGES ON MY WIKI

Below I compiled a list of all of the pages on my Wiki (excluding this one) for convenience.

Outdated pages

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License