My main occupation is my PhD. My research uses machine learning techniques to predict zinc binding in proteins.
I also run a web design company called Goodwright with my friend Alex. We design and make websites for labs and other scientific organisations.
In my spare time I like working on various other coding projects. If you'd like to collaborate on something, I'd love to hear from you!
A lightweight, fast, modern parser of protein structure files. atomium is a Python 3 library that models macromolecules, and makes analysing them easy and straightforward.
Structural biology is the study of molecular structures - usually big molecules like proteins, with hundreds or thousands of atoms. When analysed computationally they are stored in files such as the PDB file format, or mmCIF.
atomium parses these, and creates models of the molecules from them. These can be analysed, queried by atom type, rotated, transformed, or a variety of other operations.
This is the project where optimisation of speed has been most important. Often many hundreds of structures have to be opened and then processed in series, so any hundredths of a second that can be shaved off the time taken to parse per atom is important. I use the SnakeViz profile visualiser to do this, which is useful for finding bottlenecks.
A database of zinc binding sites created as part of my PhD. They are searchable, viewable, and accessible via a GraphQL API.
For my PhD I am trying to create predictive models that can predict zinc binding in proteins. As part of this I created ZincBind, which queries the RCSB web services to identify all proteins with zinc in, finds the zinc binding site(s) in the protein, and saves the details to this database. The data is then accessible via a django app and graphql server.
A Python client for accessing GraphQL APIs. Initially just a thin wrapper around the requests library, this is intended to be a sophisticated but intuitive means of using Python to access modern web services.
This started out as a learning exercise to learn how the GraphQL syntax worked, but over time it has evolved into a stable client capable of talking to any GraphQL server.
A general purpose self-analytics app. It lets you track all kinds of things about yourself and tries to find correlations.
This is in the relatively early stages right now but it is one of the projects I am most excited about. The aim is for this app to track any metric about yourself you like, from any aspect of your life - and then visualise trends, find correlations, and offer insights.
Very much a long term project.
I'm midway through a PhD at UCL, and my research currently focuses on zinc binding sites in proteins - identifying them, predicting them, and analysing them.
Here is a recent publication: