Spencer A. Hill Postdoc UCLA AOS & Caltech GPS


Home Research Publications CV aospy DIYnamics Resources Programming About Me
Programming

Python

I am an avid user of the Python programming language, which is modern, powerful, elegant, open-source, and well-documented. I use the IPython environment and rely on the xarray, NumPy, SciPy, and matplotlib modules to analyze climate model data via the free Anaconda distribution.

In addition to the aospy project, I also have a few other, less polished open-source Python packages that I have created as side projects; they are available on my Github.

Pangeo-data

There is a growing discrepancy between the scale of data that is generated by climate models and observational products and the capability of tools commonly used by scientists to analyze that data. Fortunately, the dask Python package enables parallel computations on a single node and works with xarray largely with little effort by the user. For multi-node computing environments, dask.distributed provides the same functionality across nodes, and it is actively being developed to work with data represented via xarray to provide similarly user-friendly computations on climate data that is parallelized across multiple nodes.

pangeo-data is an organization of climate scientists and computer scientists that seeks to build tools useful to climate data analysis and that harness the power of xarray + dask + dask.distributed. We are actively seeking new users and contributions; please see the Github page linked above for more information.

Python packages I use

xarray "N-D labeled arrays and datasets in Python"
dask Parallel computing and memory chunking
cartopy An alternative library to Basemap for plotting maps
SciPy Extensive library for scientific computations
pandas "Easy-to-use data structures and data analysis tools"
matplotlib Plotting library that mimics MATLAB's commands
windspharm Python interface to SPHEREPACK library for spherical harmonic transforms

Python packages I haven't tried but look cool

Take a look at my Github "stars" for a list of the many packages that I've found interesting or useful.

Python environments and package managers

Anaconda Great, free package manager
IPython "Interactive Python": more IDE-like Python environment
Jupyter Notebook Amazing web-based interface for IPython
Python The official, bread-and-butter Python

Other Python resources

Talk Python To Me Great weekly podcast on Python
PyFormat Simple, clear guide to understanding string formatting
PyData "A community for developers and users of Python data tools"
EarthPy Misc. examples of python applications in earth sciences
PyAOS Collection of useful Python-related tools for AOS researchers

Emacs & Org-Mode

Overview

Emacs is a powerful text editor that I use for as many tasks as I can. Org-mode is an extension of Emacs for creating outline-like documents, with many powerful tools for embedding to-do lists, links, code, and images and for converting the files to LaTeX, HTML, and other formats.

This integration of elements typically found in scientific manuscripts makes Org-mode a potentially useful vehicle for reproducible research – checkout this YouTube video by John Kitchin, a chemical engineering professor at Carnegie Mellon. He also has a nice page highlighting the powers of Org-mode in reproducible research and beyond.

In fact, my website and CV are written entirely as org-mode files, which I then publish to HTML (and PDF for the CV) using Org-Mode's Publish functionality. The source code for all this is available as a Github repository.

Resources

Emacs for Mac OS X Easily install GUI version of Emacs on Mac OS X/macOS
exec-path-from-shell Library for linking environment variables that Emacs sees with your system values.
  Especially useful for the GUI version of Emacs on OS X/macOS.

LaTeX

http://latexcolor.com/ Copy-pasteable color definitions for LaTeX documents
A very minimal introduction to TikZ Great entry into LaTeX plotting packages TikZ and PGF

Others

netCDF Operator (NCO) toolkit Library of command-line tools for interacting with netCDF data
Oh shit, git! Accessible, humorous take on fixing common mistakes when using the git version control system
colordiff Colorize/prettify the diff command-line tool