At the University of Sheffield (and previously at The University of Manchester), I offer a code optimization service for languages such as Mathematica, MATLAB, R and Python. I also work with people external to Sheffield in my own time. Here are some testimonials concerning this service from people I have worked with. Those in the main post were emailed to me and so I copied and pasted here. Those in the comments section were put there directly by the individual in question.
July 2015: Fei He, University of Sheffield, Language used: MATLAB. I am a post-doc researcher in the Department of Automatic Control and Systems Engineering at the University of Sheffield. My current research is on using nonlinear system identification and signal processing methods to reveal the mechanism behind neurological disorders. Since the high sampling rate of real electroencephalogram (EEG) signals and the complexity of the nonlinear models, the Matlab algorithm is quite time consuming to run. Mike used several approaches to help optimise the MATLAB code and now it runs 4 times faster. He also explained the elements of efficient programming for my problem and provided options for potential further speed up of the code. This is very helpful for my future research.
June 2015: Raphaël Démolis, University of Sheffield. Language used: Python. I am a one-year research student of the Department of Civil and Structural Engineering at the University of Sheffield. My project is interested in the buckling of stainless steel square hollow sections, with study of results coming from Monte-Carlo numerical simulations on Iceberg (HPC of the University of Sheffield). As I need to run thousands of simulations, the most efficient method was to code a Pyhton script, working concurrently with Abaqus, but I was struggling on how to run my scripts remotely (on the server) just from a local Python script. Mike helped me to accomplish that last step of the code and I can now launch a full Abaqus submission on Iceberg from one Python code, without any efforts. It is a valuable help in order to run all the simulations. I would like to thank him for his help on the script; I would definitely recommend him for any scripting problem.
May 2015: Yered Pita-Juarez, Harvard. Language used: R I am a graduate student in the Biostatistics Department at Harvard. I am interested in developing new pathway-based methods for functional genomics. I was having a hard time implementing a meta-analysis method to calculate the correlation between gene sets across a fairly large number of gene expression microarrays in R. Given the large number of samples, it took me a couple of days to get results. Mike helped me to optimize the code. With the optimized code, I was able to include more samples and larger collection of gene sets. Before, it took about 2 hours to process each sample, now it takes less than 10 minutes. Mike’s help was crucial to make feasible implementing my method.
October 2014: David McCormick, University of Manchester. Language used: MATLAB and C++. I am a Lecturer in the Sensing Imaging and Signal Processing Group at the University of Manchester working on applied industrial and medical tomography. One of my areas of research interest is in spatial searching algorithms which we use for converting irregular meshes to regular meshes for coregistration of tomographic images from different modalities. The high computational cost of these algorithms is a limiting factor in our research. In 2014 Mike got involved in helping us with code optimisation and was able to realise a speed up of more than an order of magnitude. Images that had previously taken us over 5 minutes to convert could now be converted in little over 20 seconds. Furthermore he has offered excellent advice on further code enhancements and on how we can go about managing and deploying our software for the benefit of other researchers in related fields. Having worked with Mike previously on code optimisation, I can say his work in this area is an invaluable resource which has realised significant benefits to our research.
September 2014: Mitch Mickaliger, University of Manchester. Language used: MATLAB “I am part of the group working on designing the SKA, the next-generation radio telescope array to be built in South Africa and Australia. As part of our prototyping effort, we are required to create a software pipeline in MATLAB against which to test our hardware designs. This code needs to be mathematically perfect, but not fast. However, given its complexity, the code took days to run, which made verifying prototype results on any reasonable timescale difficult. I spent quite a bit of time attempting to speed the code up myself, but was unable to get the runtime down to a usable level. I then learned that Mike offered a service to speed up MATLAB code. I gave Mike my code and he was able to make it run over 65 times faster. Also, the way in which he did this did not reduce the clarity of the code at all, which is important for verifying the code’s mathematical perfection.”
May 2014: Neil Swainston, University of Manchester. Language used: Python. Work done in collaboration with Jonathan Boyle. “My group are interested in applying whole cell gene expression data to computational models of metabolism, in order to integrate experimental ‘omics data with biochemical knowledge to predict metabolic flux patterns that are exhibited in cells. Despite successfully applying the approach to a relatively small organism, Baker’s yeast, when applying the same approach to human gene expression data, our original algorithms were found to be prohibitively slow. Mike and Jonathan were quickly able to optimise our Python code to run up to 3x faster, which greatly impacted both running time and subsequent development and debugging time. In addition to performing the optimisation, Mike and Jonathan were also to provide details of what was performed and crucially, how to avoid such rate-limiting code steps in future. As our code is in continual development, this educational aspect of their optimisation work will prove to be invaluable.”
April 2014: Benjamin Knight-Gregson, University of Manchester. Language used: MATLAB “During my undergraduate degree(Physics) we dabbled in programming but it was never really a major focus, since starting my doctorate I have had to rely heavily on MATLAB. I managed to write a code to construct a focused ultrasound image using data obtained experimentally, but it was in no way efficient, it soon became clear that the way I had written the code was preventing me from running certain experiments due to the large amount of data involved. I was delighted to find out that a code optimisation service was available through my university, and even happier when I realised it would be Michael I’d be working with, as I had come across his blog several times whilst looking on the internet for answers to my problems.
Thanks to Michael my code now runs over 40 times faster which is actually allowing me to run low resolution images in almost real-time, something I didn’t think would be possible using MATLAB. Michael was very helpful and explained the how and why the changes to my code had to be made, from this I have learnt a lot about efficient programming”
February 2014: Victoria Andrew, University of Manchester. Language used: MATLAB My PhD in wave scattering from three dimensional bodies has required me to write a Matlab code to solve a boundary integral equation at thousands of points of a meshgrid. Mike was so helpful in showing me how to optimize my code by parallelizing the outside for loop, so that the execution time was dramatically reduced. For each edit that Mike made to my code, he left comments to explain what he had done and how this improved efficiency, so that in future I will be able to implement his suggestions and increase efficiency myself.
December 2013: Iljin Sung, University of Manchester. Language used: MATLAB: My field is finance and I have been estimating market microstructure models using Bayesian MCMC. For this estimation method, fast computational speed is pivotal, and Mike has been helping me a lot to improve my codes. For example, I learned from him how to convert inefficient matlab codes to more efficient codes based on C language using Mex functions. Moreover, he also kindly checked my codes in numerous occasions and helped me to compile my codes for Redqueen (a University HPC resource) and improve my estimation. The optimized codes speed up my estimation tremendously. (in one case, at least 100 times faster than before!). In short, I would like to thank him for his sincere and kind efforts to improve my codes and speed up all of my estimation. It would have been really difficult to estimate my models on time without his help.
December 2013: Francis Watson, University of Manchester. Language used: MATLAB : My research is in anti-personnel landmine detection with ground penetrating radar (GPR), in which we pose the task of imaging the ground as a large-scale optimisation problem. To solve this problem, we must repeatedly calculate a gradient term which involves creating and multiplying large sparse matrices many times. Mike was able to vastly reduce the time this process takes, resulting in a 20-fold decrease in the time taken to solve the optimisation problem. He also explained how this was achieved, so I am able to reuse these methods in future work.
September 2013: Nick Phillips, University of Manchester. Language used: MATLAB: I’ve found Mike to be incredibly helpful with code optimisation. In systems biology we are using mathematical models to understand how interactions between genes regulate stem cells and neural development. We use delay stochastic simulation algorithms to simulate individual reactions between molecules, and the number of molecules can become very large. Mike was able to help me use various tools to significantly speed up the code, from using MATLAB parallelisation to optimising conditional statements. After several rounds of improvement, the simulation time was reduced from over 5 minutes to 6 seconds. This type of collaboration is invaluable to modern interdisciplinary research, as it provides assistance to individuals from a variety of faculties working in interdisciplinary teams. Mike was able to use his computer science expertise to clearly and effectively describe why changes in the code lead to improved performance, and this has given me the tools required to ask larger scientific questions.
September 2013: Vedat Suat Erturk, Ondokuz Mayis University: Language used: Mathematica: I have found Mike to be quite helpful with code optimisation. In Mathematical Physics, we often solve differential equation systems to track the dynamics of those and use time marching methods in the long time interval to solve those systems. The solutions sometimes correspond to oscillatory solutions. In the long time interval, when the time goes far away, the calculations do not economic. In this case the computer code of algorithm will be very important. Mike was able to help me speed up my present computer code in Mathematica. This showed to use his computer ability to effectively describe why changes in the code lead to improved performance