Dr Edward J. Parkinson

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

View on GitHub

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

View on GitHub

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.


Monte Carlo Radiative Transfer

View on GitHub

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.


Next Generational Computational Modelling

View on GitHub

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

View on GitHub

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

View on GitHub

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

View on GitHub

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.