Below is a summary of some of the commercial and academic projects I've worked on.
The Marinerg project aims to build a European distributed research infrastructure for offshore renewable energy. ICHEC are part of a work-package to build the e-infrastructure to support the project, including the design of web portals to support facility access and a data management system. The project is at an early stage, but some of the content is open-source and available here.
Django
Angular
Recently at ICHEC we've started building up a collection of documentation and software tools to help us standardize some of our workflows across projects. The documentation takes the form of a handbook which has a public version. The software takes the form of a collection of open-source Python packages, including functionality for technical report generation, system monitoring, batch task processing on HPC systems and workflow management.
Python
Jupyter Book
Gitlab CICD
As part of the IO-SEA project for developing next generation exascale storage systems, ICHEC developed an API and implementation for interfacing a collection of diverse storage backends under a hierarchical storage management (HSM) paradigm.
The developed software package Hestia is a C++ application including Http and S3 client and server implementations and an interface to to CEA's Phobos tape storage library.
C++/CMake
Curl
RPM Packaging
Image: The Webex App running on Ubuntu 22.04
At Cisco I was the technical lead on the project to bring the Webex App to the Linux platform, supporting Ubuntu and Red Hat. My main technical work was on the installer, build system integration and platform integrations (e.g. keychain).
C++
CMake
Qt
UI FrameworkVideos: Left - A browser-based 3D modelling tool based on graphical programming being used to create a 3D model of a table. Right - Scripted morphing of a table with photorealistic rendering.
Most 3D model creation is highly manual with the typical process not being well suited for automation. While at ZEG.ai I worked on developing different ways to build 3D content that are better suited for automation. One project involved building a browser-based 3D modelling engine and a new graphical programming language. The engine was built using C++
and integrated with Three.js
and Angular
in the browser using WebAssembly
. The language was expressive and user-friendly, allowing commercial quality 3D models to be created by non-expert users. See the ZEG.ai Sketchfab channel for nice examples.
A related project involved creating a cloud-based renderer so that models built in the browser could be quickly used to create photo-realistic renders and animations. This involved Python wrapping the C++
3D engine with PyBind
and integrating it with Blender/Cycles
on AWS
. Render tasks were managed with RabbitMQ
and Celery
.
C++
, Python
, PyBind
, Clang
Angular
, WebAssembly
ThreeJS
, Blender
RabbitMQ
, Celery
Video: Fully automatic 3D model generation from a single image in the browser. This example was based on the Pix2Mesh
architecture running on AWS.
While at ZEG.ai I worked on several projects for automatic 3D model generation from single images. This involved researching, assessing and building on many state-of-the-art architectures from the academic literature. These covered 3D CNNs, custom octree-based architectures, graph CNNs and differentiable renderers. One particularly interesting approach was based on Neural Programming via RNNs allowing the graph created in the browser-based graphical programming language to be directly predicted.
PyTorch
CNN
s, RNN
sVideo: Automatic generation of 3D models from single images using computer vision and mesh morphing approaches.
One of the early projects I worked on at ZEG.ai involved the generation of 3D models automatically from single images using computer vision techniques. The most effective approach involved item segmentation, classification and mesh morphing via optimization to best fit the resulting shape. This worked reasonably well for items with simple topology such as low poly containers, footwear, and clothing. I also evaluated more sophisticated computer vision approaches based on pose-estimation and non-rigid registration.
OpenCV
scikit-image
Image: Left - An early prototype of an automatic shape generator for lamps. This idea later evolved into a powerful approach for general 3D model generation, such as the room and contents on the Right.
While at Entrepreneur First most of my activities were related to company building and customer research, however my partner and I did build a snazzy automatic lamp model generator on a 4-day coding binge. This was written from scratch in Python
with Blender
and Cycles
integration in a Docker
container, while my partner built a React
/Node
web platform for it. I'm quite proud of this one as it was pulled together very quickly under pressure. The source code is available here.
Blender
Docker
Image: A segmented tumour microvessel network and a computer simulation of red blood cells flowing through it (thanks to Dr. Miguel Bernabeu, University of Edinburgh).
The availability of oxygen in tumours affects malignancy and responsiveness to treatments such as radiotherapy. Tumour oxygenation depends on how red blood cells are distributed throughout the microvasculature. Suitable rules for modelling the distribution of red blood cells in the pathological vasculature of tumours have not yet been determined. I worked on studying how red blood cells distribute at branching points in the tumour, and ultimately making better predictions of oxygenation. This study was in collaboration with Prof. Ruth Muschel's group at the University of Oxford, Dr. Miguel Bernabeu at the University of Edinburgh and Prof. Tomas Alarcon's group at the CRM, Barcelona.
My role here was segmentation of 3D image stacks from mulit-photon microscopy in mice, design of microfluidics chambers for flow experiments, particle tracking for measuring red blood cell flux and help in post-processing and 3D visualization of experimental and simulation results.
Image: A simulation of two cells deforming a semi-flexible network (thanks to Dan Humphries).
The extracellular matrix is a fibre network through which cells can communicate mechanically. The fibrous nature of the network allows cells to communicate over surprisingly large distances. Dr. Dan Humphries, Prof. Eamonn Gaffney and I investigated how the architecture of these fibre networks affects cell-cell communication.
D.L. Humphries, J.A. Grogan, E.A. Gaffney, The Mechanics of Phantom Mikado Networks, Journal of Physics Communications, 2:055015, 2018.
D.L. Humphries, J.A. Grogan, E.A. Gaffney, Mechanical Cell-Cell Communication in Fibrous Networks: The Importance of Network Geometry, Bulletin of Mathematical Biology, 79:498-524, 2017.
Image: A simulation of sprouting angiogenesis in a corneal micropocket assay experiment.
Sprouting angiogenesis is a process in which new vasculature is formed. It is of central importance in the diagnosis and treatment of many cancers. It is a complex combination of biophysical processes, which are the focus of much on-going research. I worked on the development and application of open-source software for multi-scale modelling of this process and integration with intravital imaging data, in collaboration with Prof. Ruth Muschel's group at the University of Oxford.
J.A. Grogan, J.M. Pitt-Francis, P.K. Maini, H.M. Byrne, The Importance of Geometry in the Corneal Micropocket Angiogenesis Assay, PLoS Computational Biology 14(3):e1006049, 2018.
J.A. Grogan, A.J. Connor, B. Markelc, R.J. Muschel, P.K. Maini, H.M. Byrne, J.M. Pitt-Francis, Microvessel Chaste: An Open Library for Spatial Modelling of Vascularized Tissues, Biophysical Journal, 112(9):1767-1772, 2017.
Image: A multi-scale, agent-based simulation of radiotherapy using a real tumour microvessel network.
The responsiveness of tumours to radiotherapy depends on oxygen availability, which in turn depends on the structure of the tumour microvessel network. I studied the relationship between the 3D structure of the microvasculature and radiotherapy response. This involved simulating tumour growth and radiotherapy using multi-scale, agent-based soft tissue models.
Image: Finite element simulation of stent delivery in a stenosed, curved, vessel.
Accurate simulation of coronary stent deployment in the body can reduce reliance on costly experimental testing and accelerate device design. Detailed simulations, including curved, stenosed arteries and folded balloons encompass many challenging areas of solid mechanics. This includes, large deformations of anisotropic elastic materials, finite sliding contact, and construction of complex 3D geometries. I developed techniques for high-resolution stent deployment modelling, and applied them in studying bioabsorbable magnesium devices.
Image: 3D Scanning electron microscopy of a bioabsorbable magnesium alloy post corrosion.
A new generation of temporary, bioabsorbable metallic medical devices is showing great promise. New computational techniques are required for simulating the bio-corrosion of these devices and predicting long term performance and risk. I developed several models of magnesium bio-corrosion, based on experimental testing of long-term corrosion of AZ31 alloy under static loading and applied these in the study of bioabsorbable metal stents.
Image: A crystal plasticity finite element simulation of a deforming stent strut.
The struts of coronary stents are less thick than a human hair. At this size-scale the assumptions of continuum plasticity theory begin to break-down, as metallic grains become comparable in dimension to the the strut. Explicitly modelling individual grains when simulating the deformation of stent struts allows 'statistical size effects', resulting in unexpectedly low failure strains, to be investigated. I studied the deformation of stent struts using crystal plasticity theory for a range of candidate stent materials, including magnesium.