Programming
Below is a selection of software I worked on during my Ph.D. or in my free time.
Given my background, most of these projects are for data analysis and
visualisation of both real and simulated astrophysical data. But there are a few
projects included which I did for fun!
atomix is a terminal based atomic data viewer. Written in C, atomix
uses the ncurses library to provide a simple, but efficient user interface.
The purpose of atomix is to provide a way to browse and gain intuition
of the atomic data files used in Python. As such, it has quite a niche
use case and requires Python to be installed to be used to it’s fullest.
However, it is still possible to play around with test data provided with
the program and it can also be told to search a directory for Python compatible
atomic data.
Kris is a simple terminal based text editor written in C, implementing
it’s own TUI interface, rather than using something sane like ncurses.
It is based on the text editor Kilo and supports reading from and writing
to disk. Kris also features basic syntax highlighting for C, Fortran
and Python and includes a rudimentary search function for the text
buffer. The project is named after my cat.
This project consists of the same radiative transfer model implemented using
different programming styles and languages. The model consists of a single
1D semi-infinite slab of material, which a purely scattering and grey atmosphere.
The output is the intensity as a function of angle and moments of the radiation
field as a function of depth in the slab. These programs provide a helpful
sandbox environment, or stepping stone, for developing more complicated and
physically realistic simulations. For example, my other project
Variance Reduction
uses the Python class based approach to test the performance of variance reduction
methods in MCRT simulations, and my other project
Minji,
uses the C implementation as a stepping stone to simulating 3D photon transport.
As part of the Next Generational Modelling Centre of Doctoral Training (NGCM-CDT),
the first year of my PhD included a taught masters year in computational and
numerical techniques. To the left are are some of the projects which I worked on
during the course.
pypython is a python package developed to make using Python a bit easier. It was
originally a way to standardise plots and analysis for Python models, to
avoid creating bespoke scripts for each model/project. At the heart of pypython
is the idea of having flexible functions to suit plotting as many models as
possible. pypython has now evolved, for better or worse, into a beast of its own
and has become a fully-featured companion for Python. pypython features scripts
to create and run a grid of models, including basic logging and email
notification functionalities to keep track of the progress of simulations.
Various utility scripts and functions are also included to deal with otherwise
tedious tasks associated with using python and scientific computing in general.
Python is a (confusingly named) state-of-the-art Monte Carlo radative transfer
and ionization software suite written in (mostly pre-ANSI) C. Currently under
active development, Python has been around since the mid-90’s developed by Knox
Long, Christian Knigge, Stuart Sim, Nick Higginbottom, James Matthews,
Sam Mangham, Mandy Hewitt and me. Python has a flexible interface for inputting
your own computational grids, or can be configured to use several hard-wired,
but parameterised, kinematic models. It has been used for a variety of research
projects involving the winds, but not limited to, of cataclysmic variables,
active galactic nuclei and tidal disruption events.
Slashbot is a Discord robot written using Disnake. It was originally written to
automatically moderate moderators, and to shame them for abusing their powers.
But it has since evolved into a robot which spams your Discord server with
useless embeds and Markov Chain generated messages, which use the chat
in the server as input.