I have a new blog!

Molecular biology eye candy

This site is candy for anyone interested in computational molecular biology in general and developmental biology in particular:

Haven't assessed the usefulness versus "eye candy" ratio though ... :) ("don't go for what the eyes see ..."). But at least they have developed a (seemingly) nice network analytic tool (they claim it is the first general purpose one, for constructing and anlyzing gene regulatory networks), Ingeneue, that is Java based and Open Sourced, so could be a nice Bioclipse plugin too sometime in the future! :)

Systems biology simulation software for future Bioclipse integration?

While reading up before the UU Cheminformatics journal club, initiated thanks to Egon Willighagen, I stumbled on this ... which seems to be something for Bioclipse, whenever it's time for extending it into the systems biology direction:

A LGPL licenced, Java based, Stochastic biological system simulator, designed with ease of integration and interoperability in mind. (Stochastical simulations seems to be the ones which currently captures biological behaviour the best).

New Program in Computational & Systems Biology at Uppsala University

Interesting stuff: A new Program in Computational & Systems Biology in Uppsala. I attended the inaugural symposium, and these are some highlights.

The program consists of four groups/labs in Uppsala, working in the fields of bioinformatics, computational biology and/or systems biology. The symposium consisted of talks from each of the four group leaders.

Project on hold (Course being taken)

As I'm taking a 4 week course (molecular control systems) right now, my thesis project is on hold until the 17th of February. The project presentation will also be delayed until the end of April.

Looking forward to be back on track soon!

Backtracking - Key difference between SPARQL and Prolog?

On something I realized a minute ago ...

Though being really different types of technologies, it might at first be tempting to compare a SPARQL query with a Prolog rule returning a list of results (Or at least it was to me until just a minute ago). In fact, SPARQL queries and prolog rules that return their results as lists, DO share some similarities. For example, in both you provide patterns of RDF statements with variables that are to be bound to each other or to RDF entities, in order to find all queried entities that match the pattern.

But then comes some important differences, in how SPARQL handles cases where one wants to evaluate looked-up entities with a function, like an arithmetic one. In SPARQL this has to be done (I think) with the FILTER construct, but that also means that backtracking is not done if nothing passes the filter (and that is the true meaning of a filter anyway, isn't it).

[solved] User defined datatypes not working in OWL 1.X

I seemingly ran into the trouble that user-defined datatypes does not work in OWL 1.X (which is seemingly what the version of Pellet used in Bioclipse does support?

Idea: How to store Prolog rules in Bioclipse scripts

It just struck me a very simple way of storing prolog code inside Bioclipse scripts, avoiding the need for a separate file containing the Prolog code. This might be very useful when using prolog as a kind of "query language" somewhat analogous to how SPARQL is used.
(Update: Prolog in fact turns out to be more powerful than SPARQL in this regard, as shown by the observation in this blog post, that SPARQL doesn't support backtracking).

The idea would be to simply store the prolog code in Bioclipse JS variable, and create a special manager method that can write such prolog query-code containing variables to a temporary file in the workspace and then just telling Prolog to "consult" that file, thereby "feeding the prolog engine" with the logic to use, from inside Bioclipse scripts.

Performance comparison #2, Simple 13C Spectrum Similarity Search


Bioclipse code

var start2 = new Date().getTime();
// js.say(blipkit.queryProlog( [ "findMoleculeWithPeakValuesNear", "100", "[23.3, 23.3, 23.5, 23.5, 26.1, 60.5, 90.0, 132.1, 0]", "Molecules" ] ));
js.say(blipkit.queryProlog( [ "findMoleculeWithPeakValuesNear", "100", "[12.5, 13.8, 23.8, 36.5, 44.3, 78.8, 87.3, 133.8, 0]", "Molecules" ] ));
var elapsed2 = (new Date().getTime() - start2)/1000;
js.say("Total time for finding molecule by shift values (Near-search): " + elapsed2 + " s");

Very good Prolog intro

Fond a very good Prolog intro. (Should of course better have learned prolog long ago... but didn't find no course for it before, and it's only now that I start to have aconcrete use for it ... )

It made me for the first time understand the meaning of bagof/3 and setof/3, since they compare it towards the easier-to-understand findall/3.


Regex to split up instensity and multiplicity in nmrshift data

sed -r 's/(<.*?hasMultiplicity[^<>]*?>)([0-9](\.[0-9]+)?)(\w)(<.*?>)/\1\4\5\n    <nmr:hasIntensity rdf:datatype="xsd:float">\2<\/nmr:hasIntensity>/' nmrshiftdata.r2.rdf.xml > nmrshiftdata.r3.rdf.xml