For the duration of my ‘placement’ (I can’t really think of a better word to describe it) I’m working with the Qurator team in the School of Computer Science at the University of Manchester. Qurator is basically some software that helps bioinformatics people to run quality views on protein datasets under different critera – at least that’s roughly how I understand it. In other words, you can effectively filter information from a database using a given set of criteria, all through a fancy graphical interface. It’s a bit more complicated than that, but thankfully I don’t need to get too involved on the biology side because my scientific knowledge only really goes to GCSE level and anything beyond that is what I’ve picked up from reading New Scientist.
A lot of my work involves the myGrid project and Taverna. The latter project is a particularly difficult kettle of fish, not least because the developers change vital functionality in a minor version release without telling anyone. One of these changes kept two of us scratching our heads for several days as to why my code wouldn’t work on someone else’s machine—it later transpired that the method for loading libraries and plugins had changed between version 1.3.1 and 1.4, and the only way to figure out how to load plugins was to look through the source code of Taverna. It was a useful learning experience though, and we found a few other bugs as a result that might have otherwise gone undetected, so it wasn’t a complete waste of time.
The really cool thing is that it appears that all the code for the project, including the classes I’ve written, is released as free software/open source (the two terms mean slightly different things, but both apply in this case) under the GNU LGPL. Not only does this mean that I can talk about the work I’m doing, but I can also use the same code at a later date in my own projects should I so desire (I’m unlikely to do so as most of it is specific to the task I’m working on, but it’s good to have the option available).
Anyway, so far I’ve written some code that takes two workflows (basically XML files that represent a flow of data in Taverna) and combines them using some instructions given in another XML file. It sounds fairly simple, but connecting two workflows gets complicated when you have incompatible inputs/outputs, so you have to insert an adapter to convert between them and figure out how to add links between processors whilst deleting existing links if necessary. It’s taken me the first three weeks to get this done, but it works as it should now so that’s good. There are one or two changes that need to be made, but that’s because the specification has changed rather than anything to do with my code, and it’s something that can be easily fixed later anyway. I’m now moving onto writing a simple parser than checks expressions for syntax and semantic correctness, which is quite interesting and means that I’m finally getting to apply some of the knowledge and skills I obtained in the various compiler-related modules I took.
In other news (and for those of you who have no idea what I’ve just been talking about) I’m still my usual busy self and haven’t decided what I’m doing come September. I’ve got lots of business ideas up my sleeve, but I really need a couple of weeks off to work on those and decide which of them I want to pursue immediately and which can be left until a later date. I will try and get down south at some point to catch up with people, although I’m unlikely to get chance to do that for another couple of weeks at least.
Anyway, I’d better get back to doing some work. 🙂