<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-17889588</id><updated>2009-11-26T07:42:42.876+01:00</updated><title type='text'>chem-bla-ics</title><subtitle type='html'>This blog deals with chemblaics in the broader sense. Chemblaics (pronounced chem-bla-ics) is the science that uses computers to address and possibly solve problems in the area of chemistry, biochemistry and related fields.
The big difference between chemblaics and areas as chem(o)?informatics, chemometrics, computational chemistry, etc, is that chemblaics only uses open source software, making experimental results reproducible and validatable. And this is a big difference!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default?start-index=26&amp;max-results=25'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>504</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17889588.post-4750283146732754081</id><published>2009-11-25T13:42:00.000+01:00</published><updated>2009-11-25T13:42:55.643+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ontology'/><category scheme='http://www.blogger.com/atom/ns#' term='CC0'/><category scheme='http://www.blogger.com/atom/ns#' term='swat4ls2009'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='proteochemometrics'/><title type='text'>SWAT4LS: wrapping up #1</title><content type='html'>It's already been five days since the &lt;a href="http://www.swat4ls.org/2009/index.php"&gt;SWAT4LS&lt;/a&gt; meeting (&lt;a href="http://swat4ls.blogspot.com/"&gt;matching blog&lt;/a&gt;), and finally got around to writing up my personal summary. I very much enjoyed the &lt;a href="http://blueobelisk.stackexchange.com/questions/16/who-will-go-to-swat4ls-and-wants-to-join-a-blue-obelisk-dinner"&gt;Blue Obelisk dinner&lt;/a&gt; on Thursday evening with &lt;a href="http://semanticscience.wordpress.com/"&gt;Nico&lt;/a&gt;, &lt;a href="http://duncan.hull.name/"&gt;Duncan&lt;/a&gt; and &lt;a href="http://blog.chemdom.com/"&gt;Miguel&lt;/a&gt; (the &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; one).&lt;br /&gt;&lt;br /&gt;The SWAT4LS was fun, interesting, perhaps to short, but very much appreciated! Thanx to all organizers! During the day various people tweeted the meeting, using the &lt;a href="http://search.twitter.com/search?q=%23swat4ls2009"&gt;#swat4ls2009&lt;/a&gt; hashtag (forwarded to &lt;a href="http://friendfeed.com/swat4ls2009"&gt;a FriendFeed room&lt;/a&gt;), while Nico covered things in various blog posts which I'll link to below where appropriate. Summaries I have seen so far are from &lt;a href="http://semanticscience.wordpress.com/2009/11/24/semantic-web-tools-and-applications-for-life-sciences-2009-a-personal-summary/"&gt;Nico&lt;/a&gt; and &lt;a href="http://duncan.hull.name/2009/11/24/swat4ls/"&gt;Duncan&lt;/a&gt; (again :), and &lt;a href="http://swat4ls.blogspot.com/2009/11/swat4ls-aftermath.html"&gt;the organizers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The day kicked off with a presentation by Alan Ruttenberg (&lt;a href="http://semanticscience.wordpress.com/2009/11/20/swat4ls2009-keynote-alan-ruttenberg-semantic-web-technology-to-support-studying-the-relation-of-hla-structure-variation-to-disease/"&gt;Nico's coverage&lt;/a&gt;). It nicely demonstrated where the semantic web for life sciences is going too. Particularly interesting was the integration of SPARQL with Jmol in &lt;a href="http://http://neurocommons.org/page/ImmPort/JmolViz"&gt;ImmPort/JmolViz&lt;/a&gt;: it uses Jmol to visualize a PDB entry, while using SPARQL to retrieve atomic and residue annotation, using Jmol script (we have to thank another Miguel (the &lt;a href="http://www.jmol.org"&gt;Jmol&lt;/a&gt; one) for taking the scripting and visualization capabilities &lt;a href="http://sourceforge.net/mailarchive/forum.php?thread_name=64707.217.127.90.82.1035878883.squirrel@www.howards.org&amp;forum_name=jmol-developers"&gt;to the next level in 2002&lt;/a&gt;). It always makes me proud to see one of the projects I have worked on to hit a prominent place in key note talks at conferences :)&lt;br /&gt;&lt;br /&gt;Alan also clarified that &lt;a href="http://creativecommons.org/choose/zero"&gt;CC0&lt;/a&gt; is not a license, but a statement about the &lt;i&gt;public domain&lt;/i&gt; nature of data; there is nothing to accept, nothing to live up to. The important is, and I am sure most of my readers are well aware of that, is that it formalized the public domain concept by wrapping it in a full CC0 statement. My recommendation to all who want to make (chemical data) available as &lt;i&gt;public domain&lt;/i&gt;, use the CC0; just because the CC0 works in any country, and it will make a lot of your users very happy. &lt;b&gt;If you cannot claim CC0 because you are not really owner (as I have seen done), do not claim the data to be public domain either then (which was done)!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There was also note of the &lt;a href="http://www.co-ode.org/ontologies/amino-acid/2009/02/16/"&gt;Amino Acid Ontology&lt;/a&gt;, which comes closer to our groups proteochemometrics work, but I have yet to look if this can be used for or linked protein descriptors. Also interesting is the idea behind &lt;a href="http://neurocommons.org/page/RDF_installer"&gt;RDFHerd&lt;/a&gt;, a project aiming to distribute RDF data sets as installable packages. If I understood correctly, only &lt;a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/"&gt;Virtuoso&lt;/a&gt; is yet supported, but this thing can fly, particularly, if these packages are easily converted into &lt;a href="http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html"&gt;Debian packages&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;More wrapping up will follow, but got other business to do first now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-4750283146732754081?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/4750283146732754081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=4750283146732754081' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/4750283146732754081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/4750283146732754081'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/swat4ls-wrapping-up-1.html' title='SWAT4LS: wrapping up #1'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-5194306705735001829</id><published>2009-11-21T00:10:00.000+01:00</published><updated>2009-11-21T00:10:22.490+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtuoso'/><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='swat4ls2009'/><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='proteochemometrics'/><title type='text'>SWAT4LS: "Linking Open Drug Data to Cheminformatics and Proteochemometrics"</title><content type='html'>Please find below the presentation I gave today at &lt;a href="http://www.swat4ls.org/2009/index.php"&gt;SWAT4LS&lt;/a&gt;:&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_2544178"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/egonw/linking-open-drug-data-to-cheminformatics-and-proteochemometrics" title="Linking Open Drug Data to Cheminformatics and Proteochemometrics"&gt;Linking Open Drug Data to Cheminformatics and Proteochemometrics&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-091120055449-phpapp02&amp;stripped_title=linking-open-drug-data-to-cheminformatics-and-proteochemometrics" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-091120055449-phpapp02&amp;stripped_title=linking-open-drug-data-to-cheminformatics-and-proteochemometrics" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/egonw"&gt;egonw&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-5194306705735001829?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/5194306705735001829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=5194306705735001829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5194306705735001829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5194306705735001829'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/swat4ls-linking-open-drug-data-to.html' title='SWAT4LS: &quot;Linking Open Drug Data to Cheminformatics and Proteochemometrics&quot;'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-3568589082330377039</id><published>2009-11-20T15:23:00.000+01:00</published><updated>2009-11-20T15:23:08.653+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtuoso'/><category scheme='http://www.blogger.com/atom/ns#' term='mod_proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Linking two Virtuoso instances to one Apache server</title><content type='html'>&lt;a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/"&gt;Virtuoso&lt;/a&gt; comes with its own web front end, but I did not want to make that public. Additionally, I actually have two instances running, one for the &lt;a href="http://www.gnu.org/copyleft/fdl.html"&gt;GNU FDL&lt;/a&gt; licensed &lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-enters-rdfopenmoleculesnet-2.html"&gt;NMRShiftDB&lt;/a&gt; data, and one for the CC0 &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/chempedia-rdf-1-sparql-end-point.html"&gt;ChemPedia&lt;/a&gt; and &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/open-notebook-science-solubility-sparql.html"&gt;Solubility&lt;/a&gt; data sets.&lt;br /&gt;&lt;br /&gt;So, I used &lt;a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html"&gt;Apache's proxy module&lt;/a&gt; linking to two Virtuoso instances. These two are set up by just duplicating a data based folder and to have it use two &lt;i&gt;virtuoso.ini&lt;/i&gt; config files. Modify one of two config files to have them run on a different port in the Parameters section, for example 1198 and 1199:&lt;pre&gt;[Parameters]&lt;br /&gt;ServerPort                      = 1199&lt;br /&gt;&lt;/pre&gt;And assign a different server ports in the HTTPServer section, such as 2290 and 2291:&lt;pre&gt;[HTTPServer]&lt;br /&gt;ServerPort                      = 2291&lt;br /&gt;&lt;/pre&gt;Then modify the &lt;i&gt;/etc/apache2/mods-enabled/proxy.conf&lt;/i&gt; (or whatever equivalent on your system) to have two sections creating two URL rewrites proxying the request to the virtuoso server:&lt;pre&gt;&amp;lt;Proxy &lt;a href="http://pele.farmbio.uu.se/nmrshiftdb/sparql"&gt;/nmrshiftdb/sparql&lt;/a&gt;&gt;&lt;br /&gt;  RewriteEngine On&lt;br /&gt;  Allow from all&lt;br /&gt;  ProxyPass        http://localhost:2290/sparql&lt;br /&gt;  ProxyPassReverse http://localhost:2290/sparql&lt;br /&gt;&amp;lt;/Proxy&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Proxy &lt;a href="http://pele.farmbio.uu.se/cc0/sparql"&gt;/cc0/sparql&lt;/a&gt;&gt;&lt;br /&gt;  RewriteEngine On&lt;br /&gt;  Allow from all&lt;br /&gt;  ProxyPass        http://localhost:2291/sparql&lt;br /&gt;  ProxyPassReverse http://localhost:2291/sparql&lt;br /&gt;&amp;lt;/Proxy&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-3568589082330377039?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/3568589082330377039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=3568589082330377039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3568589082330377039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3568589082330377039'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/linking-two-virtuoso-instances-to-one.html' title='Linking two Virtuoso instances to one Apache server'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-5900338304627057448</id><published>2009-11-19T12:02:00.000+01:00</published><updated>2009-11-19T12:02:41.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtuoso'/><category scheme='http://www.blogger.com/atom/ns#' term='chempedia'/><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>ChemPedia RDF #1: the SPARQL end point</title><content type='html'>Well, you might spot a pattern here; yes, another chemical &lt;a href="http://pele.farmbio.uu.se/cc0/sparql"&gt;SPARQL end point&lt;/a&gt; (actually, it shares the end point with the &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/open-notebook-science-solubility-sparql.html"&gt;Solubility data&lt;/a&gt;). This time around &lt;a href="http://depth-first.com/"&gt;Rich&lt;/a&gt;'s &lt;a href="http://chempedia.com/substances"&gt;ChemPedia&lt;/a&gt;. Taking advantage of the &lt;a href="http://depth-first.com/articles/2009/11/10/chempedia-data-downloads-free-as-in-free"&gt;CC0-licensed downloads&lt;/a&gt;, I have created a small &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; script (using this &lt;a href="http://json-lib.sourceforge.net/"&gt;JSON library&lt;/a&gt;) to convert the ChemPedia &lt;a href="http://en.wikipedia.org/wiki/Json"&gt;JSON&lt;/a&gt; into &lt;a href="http://en.wikipedia.org/wiki/Notation3"&gt;Notation3&lt;/a&gt;:&lt;pre&gt;import net.sf.json.groovy.JsonSlurper;&lt;br /&gt;&lt;br /&gt;input = new File("substances.json")&lt;br /&gt;json = new JsonSlurper().parse(input);&lt;br /&gt;&lt;br /&gt;println "@prefix dc: &amp;lt;http://purl.org/dc/elements/1.1/&gt;";&lt;br /&gt;println "@prefix cp: &amp;lt;http://rdf.openmolecules.net/chempedia/onto#&gt;";&lt;br /&gt;json.each { it -&gt;&lt;br /&gt;  println "&amp;lt;" + it.uri + "&gt; dc:identifier \"" + it.gsid + "\";";&lt;br /&gt;  println " &amp;lt;http://www.w3.org/2002/07/owl#sameAs&gt; &amp;lt;http://rdf.openmolecules.net/?" + it.inchi + "&gt;;";&lt;br /&gt;  println "  &amp;lt;http://www.iupac.org/inchi&gt; \"" + it.inchi + "\".";&lt;br /&gt;  if (it.namings.size() &gt; 0) {&lt;br /&gt;    for (int i = 0; i&amp;lt;it.namings.size(); i++) {&lt;br /&gt;      naming = it.namings.get(i);&lt;br /&gt;      namingURI = it.uri + "/naming" + i;&lt;br /&gt;      println "&amp;lt;" + it.uri + "&gt; cp:hasNaming " +&lt;br /&gt;        "&amp;lt;" + namingURI + "&gt;.";&lt;br /&gt;      println "&amp;lt;" + namingURI + "&gt; a cp:Naming;";&lt;br /&gt;      println "  cp:hasName \"" + naming.name + "\";";&lt;br /&gt;      println "  cp:hasStatus \"" + naming.status + "\";";&lt;br /&gt;      println "  cp:hasScore \"" + naming.score + "\".";&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;After uploading it into &lt;a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSIndex"&gt;Virtuoso&lt;/a&gt; (now using DB.DBA.TTLP instead of &lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-enters-rdfopenmoleculesnet-2.html"&gt; DB.DBA.RDF_LOAD_RDFXML_MT &lt;/a&gt;), we can now have our regular SPARQL fun with the data from ChemPedia. For example, list &lt;a href="http://pele.farmbio.uu.se/cc0/sparql?default-graph-uri=&amp;amp;query=prefix+dc:+&amp;lt;http://purl.org/dc/elements/1.1/&gt;%0D%0Aprefix+cp:+&amp;lt;http://rdf.openmolecules.net/chempedia/onto%23&gt;%0D%0A%0D%0Aselect+distinct+%3Fname+%3Fscore+where+{%0D%0A++%3Fs+a+cp:Naming+;%0D%0A+++++cp:hasName+%3Fname+;%0D%0A+++++cp:hasScore+%3Fscore+.%0D%0A}+ORDER+BY+DESC(%3Fscore)+LIMIT+10+%0D%0A%0D%0A&amp;amp;format=text/html&amp;amp;debug=on&amp;amp;timeout="&gt;the 10 names with the most votes&lt;/a&gt;:&lt;pre&gt;prefix dc: &amp;lt;http://purl.org/dc/elements/1.1/&gt;&lt;br /&gt;prefix cp: &amp;lt;http://rdf.openmolecules.net/chempedia/onto#&gt;&lt;br /&gt;&lt;br /&gt;select distinct ?name ?score where {&lt;br /&gt;  ?s a cp:Naming ;&lt;br /&gt;     cp:hasName ?name ;&lt;br /&gt;     cp:hasScore ?score .&lt;br /&gt;} ORDER BY DESC(?score) LIMIT 10 &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-5900338304627057448?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/5900338304627057448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=5900338304627057448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5900338304627057448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5900338304627057448'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/chempedia-rdf-1-sparql-end-point.html' title='ChemPedia RDF #1: the SPARQL end point'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-3516656449479448274</id><published>2009-11-19T10:24:00.000+01:00</published><updated>2009-11-19T10:24:50.416+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Notebook Science'/><category scheme='http://www.blogger.com/atom/ns#' term='onssolubility'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Open Notebook Science Solubility: the SPARQL end point</title><content type='html'>The &lt;a href="http://onschallenge.wikispaces.com/"&gt;Open Notebook Science Solubility&lt;/a&gt; challenge is an project crowd sourcing solubility of organic compounds in non-aqueous solvents. I have been working on RDF-ing this data: &lt;ul&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2008/11/solubility-data-in-bioclipse-1.html"&gt;Solubility Data in Bioclipse #1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/02/solubility-data-in-bioclipse-2-handling.html"&gt;Solubility Data in Bioclipse #2: handling RDF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/02/solubility-data-in-bioclipse-3-finding.html"&gt;Solubility Data in Bioclipse #3: Finding ChEBI IDs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/03/solubility-data-in-bioclipse-4-finding.html"&gt;Solubility Data in Bioclipse #4: Finding ChEBI IDs (Again, but better)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;And this resulted in a joint chapter in the nice &lt;a href="http://oreilly.com/catalog/9780596157128"&gt;Beatiful Data&lt;/a&gt; book.&lt;br /&gt;&lt;br /&gt;What I had not done so far, is set up a SPARQL end point for this data, like I did for the &lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-rdf-2-some-statistics.html"&gt;NMRShiftDB data&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, however, a Virtuoso-powered &lt;a href="http://pele.farmbio.uu.se/cc0/sparql"&gt;SPARQL end point&lt;/a&gt; is available, and I hope this will seen get picked up by the other nodes on the ONS Solubility project. It is not a auto-synchronized link, though.&lt;br /&gt;&lt;br /&gt;Possible advantages include that the client can perform any query and get these results in various formats, including JSON. For example, follow this link to get all &lt;a href="http://pele.farmbio.uu.se/cc0/sparql?default-graph-uri=&amp;query=prefix+dc%3A+%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%0D%0A%0D%0Aselect+distinct+%3Fs+%3Ftitle+where+{%0D%0A++%3Fs+a+%3Chttp%3A%2F%2Fspreadsheet.google.com%2Fplwwufp30hfq0udnEmRD1aQ%2Fonto%23Solute%3E+%3B%0D%0A+++++dc%3Atitle+%3Ftitle+.%0D%0A}%0D%0A%0D%0A&amp;format=application%2Fjson&amp;debug=on&amp;timeout="&gt;solutes in JSON format&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The matching SPARQL looks like:&lt;pre&gt;prefix dc: &amp;lt;http://purl.org/dc/elements/1.1/&gt;&lt;br /&gt;prefix ons: &amp;lt;http://spreadsheet.google.com/plwwufp30hfq0udnEmRD1aQ/onto#&gt;&lt;br /&gt;&lt;br /&gt;select distinct ?s ?title where {&lt;br /&gt;  ?s a ons:Solute ;&lt;br /&gt;     dc:title ?title .&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-3516656449479448274?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/3516656449479448274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=3516656449479448274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3516656449479448274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3516656449479448274'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/open-notebook-science-solubility-sparql.html' title='Open Notebook Science Solubility: the SPARQL end point'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-3787051551025961318</id><published>2009-11-18T16:56:00.001+01:00</published><updated>2009-11-18T16:56:44.680+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><title type='text'>CDK 1.2.4: the authors</title><content type='html'>The &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/cdk-124-changes.html"&gt;1.2.4 changelog&lt;/a&gt; I posted earlier was directly created from git output. &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; has many features which makes such thing simple. Here's a list of authors of the 1.2.4 change set:&lt;br /&gt;&lt;pre&gt;56 Egon Willighagen&lt;br /&gt;9 Rajarshi  Guha&lt;br /&gt;5 Stefan Kuhn&lt;br /&gt;2 mark_rynbeek&lt;br /&gt;1 Uli Köhler&lt;br /&gt;1 Rajarshi Guha&lt;br /&gt;1 Peter Odéus&lt;br /&gt;1 Paul Turner&lt;br /&gt;1 Miguel Rojas Cherto&lt;br /&gt;1 Arvid Berg&lt;/pre&gt;This is just the number of commits, and many of mine are logistic in nature. You can also notice that &lt;a href="http://blog.rguha.net/"&gt;Rajarshi&lt;/a&gt; has changed his name (removed the extraneous space :). Thanx to all of authors for contributing to this release! I am happy to see a few new names in this list, which seems to indicate that the people are settling in on the whole move from Subversion to Git.&lt;br /&gt;&lt;br /&gt;This list was created with this command adapted from &lt;a href="http://stackoverflow.com/questions/1486819/which-git-commit-stats-are-easy-to-pull"&gt;this StackOverflow question&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;git log --pretty=format:%an cdk-1.2.3..cdk-1.2.4 | awk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -n -r&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-3787051551025961318?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/3787051551025961318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=3787051551025961318' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3787051551025961318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3787051551025961318'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/cdk-124-authors.html' title='CDK 1.2.4: the authors'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-5512627103982993000</id><published>2009-11-18T14:45:00.004+01:00</published><updated>2009-11-18T16:47:45.456+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><title type='text'>CDK 1.2.4: the changes</title><content type='html'>Here is the changelog of &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; 1.2.4 which I am about to upload to &lt;a href="http://sourceforge.net/projects/cdk/files/cdk/"&gt;SourceForge&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fixed param name &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=743bad3"&gt;743bad3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Updated the makefp3d target to work with the current build system &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bbb78ee"&gt;bbb78ee&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Set up a branch for the 1.2.4 release &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4801d79"&gt;4801d79&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixes bug 2898399. Updates to the SMARTS parser to handle proper matching for explicit hydrogens (including H, 1H, 2H and 3H). SMARTSQueryVisitor updated to take into account different isotopes of H.  Also updated unit tests to take into account proper H matching. Added a unit test to further check H matching. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b67d76a"&gt;b67d76a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added tests to match hydrogens &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=45a7f54"&gt;45a7f54&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Reworked the tests for bug 2898032. Updated Javadocs for smiles generator &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7f68b07"&gt;7f68b07&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit test to confirm and check for bug 2898032 &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=924b563"&gt;924b563&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Updated UIT to handle single atom queries and added a unit test for bug 2888845. Also updated Javadocs to specifically note behavior of single atom queries &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=dfb2805"&gt;dfb2805&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added generation of java source jars &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e33fba2"&gt;e33fba2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed matchers to allow XML without new lines (closes #2832835) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f9a0552"&gt;f9a0552&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit tests for detection of PubChem XML files. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=571f434"&gt;571f434&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Overwrite unit tests, because there are no change events passed around at all for the NoNotification interface implementations &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=36f295b"&gt;36f295b&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added missing unit tests for IChemModel event propagation for the ICrystal field &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2993e0c"&gt;2993e0c&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed propagation of change events to IChemModel when modifications are made in child IChemObjects &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0c8a88f"&gt;0c8a88f&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed unit tests: the IChemModel.setFoo(null) should actually give a change event on the listener of the IChemModel, and not after unregistering of the Foo object. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b833176"&gt;b833176&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit test to the function of the new IO setting to force 2D coordinate output. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4e2b2bf"&gt;4e2b2bf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added writer IO option to force writing of 2D coordinates if 3D coordinates are present too, which now are preferably outputted. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0e6aa2c"&gt;0e6aa2c&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit test to verify that if 2D and 3D coordinates are available, the 3D coordinates are outputted. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=56852f8"&gt;56852f8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed Taglets: only return HTML if the Tag is really given; the toString() method is given for all cases, not just when the tag is found &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1107fb2"&gt;1107fb2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixeda bug which was causing various parts of the DescriptorEngine to fail - it was trying to instantiate a non-descriptor class which happens to reside in the descriptor package directory. This fix is a bit kludgy - ideally only descriptors should be in that directory &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0242d9a"&gt;0242d9a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixes ClassCastException when not IMolecule &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6f3e848"&gt;6f3e848&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Upgraded to PMD 2.4.5 with many bug fixes, giving more accurate error reports &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f29a66b"&gt;f29a66b&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added missing dependency on cdk-diff, being used in one of the unit tests &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0e287dd"&gt;0e287dd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed methods names to match those in the test class &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=789a314"&gt;789a314&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed test method name to match the expected patters, fixing a coverage test fail &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ac13619"&gt;ac13619&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Removed duplicate code: MolecularFormulaTest now extends AbstractMolecularFormulaTest &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b8651c7"&gt;b8651c7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed test method annotation to point to the right method &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bb7d341"&gt;bb7d341&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added missing @TestMethod annotation &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f6f759b"&gt;f6f759b&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added modules that were missing from the PMD testing &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=073e5ec"&gt;073e5ec&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added modules that were missing from the doccheck testing &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=10dc19c"&gt;10dc19c&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Patch for bug 2843445. Aims to fix generation of NaN coordinates by SDG &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d1397fe"&gt;d1397fe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix the unit test to not give a 'input must support mark' exception on some platforms, by wrapping the InputStream in a BufferedInputStream. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6f6f41e"&gt;6f6f41e&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added missing dependencies &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8759481"&gt;8759481&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added ioformats to modules to test &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=56289e2"&gt;56289e2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use StringBuilder to aggregate the field data, which gives an huge performance boost for SD file where multiline field data is found. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=df35f02"&gt;df35f02&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use StringBuilder to aggregate the field data, which gives an huge performance boost for SD file where very much field data, like the ChEBI_complete.sdf &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=eac8266"&gt;eac8266&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Factored out steps in reading the SD file data block &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=678e7ca"&gt;678e7ca&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Bumped version, to make it clear this is not the 1.2.3 release &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8c8166a"&gt;8c8166a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed registering on the cdk.threadnonsage tag (closes #2796362) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d451576"&gt;d451576&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Removed obsolete pattern from old svnrev tag &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c8f5a72"&gt;c8f5a72&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed JavaDoc to remove traces of the old svnrev Tag &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1a70488"&gt;1a70488&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Synchronized exception message with implementation (fixes #2844333) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c70b79c"&gt;c70b79c&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The Pauling Electronegativity is copied in configure as well. I can't see why not copy everything we have. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3fd2b17"&gt;3fd2b17&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added bug annotation &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=38d0235"&gt;38d0235&lt;/a&gt;&lt;/li&gt;&lt;li&gt;test case for bug #2846213 &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f84c53b"&gt;f84c53b&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed perception of N.planar3 where N.sp2 was detected, by now taking into account the given hydrogen count. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1714de2"&gt;1714de2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed perception of benzene with all single bond, but hydrogen count 1 and bonds flagged aromatic. In this case, the type is C.sp2 not C.sp3. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=05e0be3"&gt;05e0be3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added assertions to unit test for values being not null &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=863b0a5"&gt;863b0a5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added two unit tests for the same problem: carbon atom types are not correctly perceived if bond order info is SINGLE only, and hydrogen count and aromaticity flag is set. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f19a451"&gt;f19a451&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Moved class into a org.openscience.cdk package, which seems to work now. I'm puzzled why it did not before. Solved several unit test fails. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b055c6b"&gt;b055c6b&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Merge branch 'cdk-1.2.x' of ssh://egonw@cdk.git.sourceforge.net/gitroot/cdk into cdk-1.2.x &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f77db9c"&gt;f77db9c&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unsealed the XOM jar to allow having the CustomSerializer &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3b82340"&gt;3b82340&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed Javadocs error &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e0304bf"&gt;e0304bf&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed a wrong javadoc tag. Also removed svn tag in the SMARTS parser JJT file, replaced with git tag &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c888773"&gt;c888773&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added support for 'public enum's &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4bf822d"&gt;4bf822d&lt;/a&gt;&lt;/li&gt;&lt;li&gt;corrected bug in bondtools.isStereo(IAtomContainer container, IAtom stereoAtom). A comparision of atom symbols in a nested loop was using the counter of the outer loop twice. Note it worked before, because there is a sort of fallback to Morgan numbers. fallback to morgan (fixes #2830287) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=025fb47"&gt;025fb47&lt;/a&gt;&lt;/li&gt;&lt;li&gt;added a new test for bondtools &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=13f72bd"&gt;13f72bd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed inconsistency between accepts() and write: also support writing of IAtomContainerSet and IAtomContainer as accepts() indicates (fixes #2827745) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6380578"&gt;6380578&lt;/a&gt;&lt;/li&gt;&lt;li&gt;General test for testing consistency between write() and accepts(), testing that all accepted IChemObject's can also be written &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f0678eb"&gt;f0678eb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit test for bug #2826961: inconsistent atom typing for two SMILES. Unit test does not show a fail, ruling out a CDK bug &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=42e45ef"&gt;42e45ef&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Remove erroneous throws statement &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f8cfea8"&gt;f8cfea8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Bug found calculating the exact mass given a molecular formula when it is negative charged. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3d1de45"&gt;3d1de45&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed reading of the cdk/dict/data/elements.owl database which is now in OWL &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=73225a0"&gt;73225a0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed issue 2458210: use assertNotNull(foo) etc instead of assertTrue(foo != null). &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=182afe6"&gt;182afe6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added minimum equivalents for BondManipulator.getMaximumBondOrder() methods &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6e12696"&gt;6e12696&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixes asserts: after removal *no* change should be recorded &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3b9fa30"&gt;3b9fa30&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added IO option to disable generator of XML declaration statements in the output CML. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=74451b8"&gt;74451b8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added generics, and consistified code by always returning a List&lt;?&gt; of the same '?'. (And some 80 chars fixes in the JavaDocs.) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d6337cd"&gt;d6337cd&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit tests to test that when a [Molecule|Reaction|Ring]Set has been removed from a ChemModel, the ChemModel should unregister as listener. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=63e6c01"&gt;63e6c01&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit tests for event propagation from [Molecule|Reaction|Ring]Sets to ChemModel. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e011035"&gt;e011035&lt;/a&gt;&lt;/li&gt;&lt;li&gt;More testing of flags. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=abb5384"&gt;abb5384&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix for junior job id: [ 1837692 ] Test methods should throw only one Exception. &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8c38536"&gt;8c38536&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed missing imports and wrapped to 80 chars &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=fd2d2df"&gt;fd2d2df&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Better excpetion handling in builder3d: &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bc5837d"&gt;bc5837d&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fixed serialization of IAtom's with null formal charge to not cause NullPointerExceptions &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=acc8012"&gt;acc8012&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Added unit test for serialization of null formal charges into the MDL molfile format (which currently fails) &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=df57aea"&gt;df57aea&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Updated Javadocs for SMARTS query tool to indicate unsupported features &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e1da4c0"&gt;e1da4c0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Cleaned up source file to remove spurious line endings &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3d7adae"&gt;3d7adae&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This overview was created with this Linux one-liner:&lt;pre&gt;git log --oneline cdk-1.2.3.. | sed 's/\([a-f0-9]*\)\s\(.*\).*/&amp;lt;li&gt;\2 &amp;lt;a href="http:\/\/cdk.git.sourceforge.net\/git\/gitweb.cgi?p=cdk\/cdk;a=commit;h=\1"&gt;\1&amp;lt;\/a&gt;&amp;lt;\/li&gt;/'&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-5512627103982993000?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/5512627103982993000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=5512627103982993000' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5512627103982993000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5512627103982993000'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/cdk-124-changes.html' title='CDK 1.2.4: the changes'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-1888900816861852036</id><published>2009-11-11T12:18:00.001+01:00</published><updated>2009-11-11T20:29:38.111+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='StackExchange'/><category scheme='http://www.blogger.com/atom/ns#' term='howtos'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='forum'/><category scheme='http://www.blogger.com/atom/ns#' term='answers'/><category scheme='http://www.blogger.com/atom/ns#' term='communication'/><category scheme='http://www.blogger.com/atom/ns#' term='questions'/><category scheme='http://www.blogger.com/atom/ns#' term='Blue Obelisk'/><title type='text'>BlueObelisk StackExchange (.com)</title><content type='html'>Oh no, not another communication channel?! We already have &lt;a href="http://chem-bla-ics.blogspot.com/2009/09/google-wave-robot-for-cdk-functionality.html"&gt;Google&lt;/a&gt; &lt;a href="http://chem-bla-ics.blogspot.com/2009/10/google-wave-invite-but-you-need-to-work.html"&gt;Wave&lt;/a&gt;! (BTW, I have quite some new invites...)&lt;br /&gt;&lt;br /&gt;Well, you are right. But I could not resist: &lt;a href="http://blueobelisk.stackexchange.com"&gt;blueobelisk.stackexchange.com&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_5vhaOf2_53I/SvqdBw3yBPI/AAAAAAAAAtU/-12J3br6SP8/s1600-h/boExchangeScreeny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SvqdBw3yBPI/AAAAAAAAAtU/-12J3br6SP8/s320/boExchangeScreeny.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;No, it is not using an Open platform, but plenty of Windows and Max users among us... the data is &lt;a href="http://creativecommons.org/choose/zero"&gt;CC0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: any question about Open Data, Open Source, or Open Standards (ODOSOS) is welcome. As well as any question on if and how some chemical question could be answered with ODOSOS tools. It is &lt;i&gt;not&lt;/i&gt; restricted to the Blue Obelisk or the projects under the wings of the Blue Obelisk. All Open Data, Open Source, and Open Standards in chemistry is worth asking about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-1888900816861852036?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/1888900816861852036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=1888900816861852036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/1888900816861852036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/1888900816861852036'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/blueobelisk-stackexchange-com.html' title='BlueObelisk StackExchange (.com)'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5vhaOf2_53I/SvqdBw3yBPI/AAAAAAAAAtU/-12J3br6SP8/s72-c/boExchangeScreeny.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-7504293989231686260</id><published>2009-11-07T11:09:00.000+01:00</published><updated>2009-11-07T11:09:40.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='license:bsd'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='DocCheck'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaDoc'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenJavaDocCheck'/><title type='text'>Call for Collaboration: JavaDoc validation with OpenJavaDocCheck</title><content type='html'>I reported recently about my efforts to write an &lt;a href="http://chem-bla-ics.blogspot.com/2009/10/work-in-progress-open-doccheck.html"&gt;Open Source DocCheck replacement&lt;/a&gt;. I received the first patches (from &lt;a href="http://blog.rguha.net/"&gt;Rajarshi&lt;/a&gt;), and brought it online in a &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; branch (see &lt;a href="http://pele.farmbio.uu.se/nightly-ojdcheck/ojdcheckSummary.html"&gt;this Nightly page&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_5vhaOf2_53I/SvVDdgJhZ_I/AAAAAAAAAs0/qcnG2jKspaI/s1600-h/ojdcheck.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SvVDdgJhZ_I/AAAAAAAAAs0/qcnG2jKspaI/s320/ojdcheck.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This list shows a mix of tests that are now implemented in OpenJavaDocCheck itself, but the third line is actually a test that is plugged in and specific for the CDK. This is an important feature, I think, and allows users of OpenJavaDocCheck to add functionality is that is not interesting to the general public, but very interesting for the JavaDoc being analyzed. Well, at least, it is to our CDK project :)&lt;br /&gt;&lt;br /&gt;The current list of tests is still quite small, and consists of these tests:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;test if each class and method has JavaDoc&lt;/li&gt;&lt;li&gt;test for missing @return tags&lt;/li&gt;&lt;li&gt;test for missing @param tags&lt;/li&gt;&lt;li&gt;test for @returns instead of @return&lt;/li&gt;&lt;li&gt;test @param template code, such as added by IDEs like Eclipse&lt;/li&gt;&lt;li&gt;test @exception template code, such as added by IDEs like Eclipse&lt;/li&gt;&lt;li&gt;test for redundant @version tags&lt;/li&gt;&lt;/ul&gt;I am now &lt;a href="http://github.com/egonw/ojdcheck/issues"&gt;seeking feedback&lt;/a&gt; on the current code base, and potentially collaboration with writing more JavaDoc validation tests. There is enough to do, and I have been thinking on tests for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;spell checking JavaDoc&lt;/li&gt;&lt;li&gt;checking for 404s of web pages linked with &amp;lt;a href&gt; in the JavaDoc&lt;/li&gt;&lt;li&gt;well-formedness of the HTML in the webpages&lt;/li&gt;&lt;/ul&gt;And about:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a PMD-like system to allow people to choose which testing they want or not&lt;/li&gt;&lt;li&gt;an Eclipse plugin&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-7504293989231686260?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/7504293989231686260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=7504293989231686260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7504293989231686260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7504293989231686260'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/call-for-collaboration-javadoc.html' title='Call for Collaboration: JavaDoc validation with OpenJavaDocCheck'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/SvVDdgJhZ_I/AAAAAAAAAs0/qcnG2jKspaI/s72-c/ojdcheck.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-6490136608705479387</id><published>2009-11-04T12:22:00.002+01:00</published><updated>2009-11-05T17:33:23.535+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tanimoto'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='kabsch'/><category scheme='http://www.blogger.com/atom/ns#' term='Jmol'/><title type='text'>New Bioclipse Features: Kabsch Alignment, RMSD Distance and Tanimoto Simarlity Matrices</title><content type='html'>We recently submitted a second paper on &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt;, and have worked hard in the past two weeks on addressing the reviewers' questions (and we love these feature requests! See also these &lt;a href="http://bioclipse.blogspot.com/2009/11/download-pdbs-with-bioclipse.html"&gt;two&lt;/a&gt; &lt;a href="http://bioclipse.blogspot.com/2009/11/align-sequences-with-kalign-web-service.html"&gt;blogs&lt;/a&gt;). One reviewer seemed very interested in seeing docking available in Bioclipse. While we do not have a full docking feature set up for Bioclipse, we do have functionality to deal with 3D structures, though our researched urged us to focus on the 2D side of cheminformatics so far.&lt;br /&gt;&lt;br /&gt;To strengthen our intentions towards the 3D cheminformatics world, we have implemented a few new features, using &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; functionality. For example, we added Kabsch aligment and the related RMSD between molecular structures implemented as both popup menus as well as manager methods. The manager method you can see in action in &lt;a href="http://www.myexperiment.org/workflows/937"&gt;MyExperiment workflow 937&lt;/a&gt;, which you can download directly into Bioclipse with one simple command (see &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/bioclipse-manager-for-myexperimentorg.html"&gt;Bioclipse Manager for MyExperiment.org&lt;/a&gt;):&lt;br /&gt;&lt;pre&gt;var smileses = new Array("CC(C)C", "CCCN", "CCC=O");&lt;br /&gt;&lt;br /&gt;var unaligned = cdk.createMoleculeList();&lt;br /&gt;for (i=0; i&amp;lt;smileses.length; i++) {&lt;br /&gt;  mol = cdk.fromSMILES(smileses[i]);&lt;br /&gt;  mol = cdk.generate3dCoordinates(mol)&lt;br /&gt;  unaligned.add(mol);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var aligned = cdk.kabsch(unaligned)&lt;br /&gt;&lt;br /&gt;jmol.load(aligned.get(0));&lt;br /&gt;for (i=1; i&amp;lt;aligned.size(); i++) {&lt;br /&gt;  jmol.append(aligned.get(i));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Now, we do have to update the use of Jmol in Bioclipse, and a big overhaul is scheduled for the 2.4 released in February next year. But you get the idea.&lt;br /&gt;&lt;br /&gt;As said, there are two stories to adding this new functionality. Because we want all GUI interaction the user performs to be recordable (Scientist 1: &lt;i&gt;What did you do to get those nice results?&lt;/i&gt; Scientist 2: &lt;i&gt;I pushed that button in the that long menu.&lt;/i&gt; Scientist 1: &lt;i&gt;What button is that?&lt;/i&gt; Scientist 2: &lt;i&gt;Wait, I send you the BSL script with a Google Wave.&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;The managers that allow this recording is Bioclipse specific, and also the reason why it would not be trivial to make a general Bioclipse plugin for Eclipse... some Spring magic is used to inject the managers into the JavaScript language. Anyway, the second thing is to add a GUI element, like popup menus. Now, this is a particular area where Eclipse excels. Now, I did have to ask for the details, as I am not using this daily (I'm doing science, not IT), but Ola was kind enough to give me the pointers for it.&lt;br /&gt;&lt;br /&gt;The below configuration snippet links the pop up action to Bioclipse Navigator content (you know, where your MDL SD, CML, script and other files show up in Bioclipse). &lt;b&gt;&lt;i&gt;But&lt;/i&gt;&lt;/b&gt; only if I have selected 3 or more files! And, only if those files are actually some molecular content with 3D coordinates! And Bioclipse inherits this functionality by using the Eclipse platform.&lt;br /&gt;&lt;pre&gt;&amp;lt;menuContribution&lt;br /&gt;  locationURI="popup:org.eclipse.ui.popup.any?after=additions"&amp;gt;&lt;br /&gt;  &amp;lt;command&lt;br /&gt;    commandId="net.bioclipse.cdk.ui.handlers.kabschAlignment"&lt;br /&gt;    label="Perform Kabsch Alignment"&lt;br /&gt;    icon="icons/molecule2D.png"&amp;gt;&lt;br /&gt;    &amp;lt;visibleWhen&amp;gt;&lt;br /&gt;      &amp;lt;with variable="selection"&amp;gt;&lt;br /&gt;        &amp;lt;count value="(2-"/&amp;gt;&lt;br /&gt;        &amp;lt;iterate operator="and" ifEmpty="false"&amp;gt;&lt;br /&gt;          &amp;lt;adapt type="org.eclipse.core.resources.IResource"&amp;gt;&lt;br /&gt;            &amp;lt;or&amp;gt;&lt;br /&gt;              &amp;lt;test property="org.eclipse.core.resources.contentTypeId"&lt;br /&gt;                       value="net.bioclipse.contenttypes.cml.singleMolecule3d"/&amp;gt;&lt;br /&gt;              &amp;lt;test property="org.eclipse.core.resources.contentTypeId"&lt;br /&gt;                       value="net.bioclipse.contenttypes.cml.singleMolecule5d"/&amp;gt;&lt;br /&gt;              &amp;lt;test property="org.eclipse.core.resources.contentTypeId"&lt;br /&gt;                       value="net.bioclipse.contenttypes.mdlMolFile3D"/&amp;gt;&lt;br /&gt;            &amp;lt;/or&amp;gt;&lt;br /&gt;          &amp;lt;/adapt&amp;gt;&lt;br /&gt;        &amp;lt;/iterate&amp;gt;&lt;br /&gt;      &amp;lt;/with&amp;gt;&lt;br /&gt;    &amp;lt;/visibleWhen&amp;gt;&lt;br /&gt;  &amp;lt;/command&amp;gt;&lt;br /&gt;&amp;lt;/menuContribution&amp;gt;&lt;/pre&gt;When Bioclipse is run, this looks like:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_5vhaOf2_53I/SvL7ZnEoZNI/AAAAAAAAAsk/k0ajCj9ww60/s1600-h/kabsch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SvL7ZnEoZNI/AAAAAAAAAsk/k0ajCj9ww60/s320/kabsch.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And the alignment results will nicely show up in a Jmol viewer (while it is implemented as an Eclipse editor, it is not yet):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_5vhaOf2_53I/SvFhxfJVGzI/AAAAAAAAAsU/n7HxPoiqVLs/s1600-h/bioclipseKabsch1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SvFhxfJVGzI/AAAAAAAAAsU/n7HxPoiqVLs/s320/bioclipseKabsch1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The first screenshot also shows the new pop-up menus for calculating two matrices for 3 or more molecules. One is based on the &lt;a href="http://en.wikipedia.org/wiki/Root_mean_square_deviation"&gt;RMSD&lt;/a&gt; of the 3D atomic coordinats of the atoms in the &lt;a href="http://blog.rguha.net/?p=113"&gt;MCSS&lt;/a&gt; (BTW, Asad's SMSD work is making its way into the CDK library, and will be available in a later Bioclipse version too.) and will create a distance matrix. The second new pop-up menu used the Tanimoto similarity measure based on CDK fingerprints on the selected chemical graphs. If the Bioclipse Statistics feature is installed, the created &lt;a href="http://en.wikipedia.org/wiki/Comma-separated_values"&gt;CSV files&lt;/a&gt; will open up in a matrix editor:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_5vhaOf2_53I/SvL-Ias8sYI/AAAAAAAAAss/yguwFu7dsJU/s1600-h/rmsdMatrix.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SvL-Ias8sYI/AAAAAAAAAss/yguwFu7dsJU/s320/rmsdMatrix.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Kabsch alignment of protein backbones is planned for a later Bioclipse release, but an important feature for &lt;a href="http://www.ncbi.nlm.nih.gov/sites/entrez?term=proteochemometrics%20wikberg"&gt;our groups proteochemometrics work&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-6490136608705479387?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/6490136608705479387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=6490136608705479387' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/6490136608705479387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/6490136608705479387'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/new-bioclipse-features-kabsch-alignment.html' title='New Bioclipse Features: Kabsch Alignment, RMSD Distance and Tanimoto Simarlity Matrices'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/SvL7ZnEoZNI/AAAAAAAAAsk/k0ajCj9ww60/s72-c/kabsch.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-304615791097255551</id><published>2009-11-04T11:25:00.000+01:00</published><updated>2009-11-04T11:25:10.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='chem-bla-ics'/><title type='text'>Milestones...</title><content type='html'>While I am still looking around for a assisting/associate professor position, there are two milestones around my scientific work I want to briefly mention here. This blog is the &lt;b&gt;500th&lt;/b&gt; blog on &lt;a href="http://chem-bla-ics.blogspot.com"&gt;chem-bla-ics&lt;/a&gt;, and the two &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; papers have combined reached 100+ citations as counted by Web-of-Science, as can be seen on &lt;a href="http://www.researcherid.com/rid/C-6136-2008"&gt;my ResearcherID profile&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-304615791097255551?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/304615791097255551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=304615791097255551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/304615791097255551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/304615791097255551'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/milestones.html' title='Milestones...'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-7809266128113482083</id><published>2009-11-04T11:19:00.000+01:00</published><updated>2009-11-04T11:19:06.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='myExperiment'/><title type='text'>Bioclipse Manager for MyExperiment.org</title><content type='html'>Some time ago I wrote about using &lt;a href="http://chem-bla-ics.blogspot.com/2009/08/bioclipse-and-sparql-end-points-2.html"&gt;Bioclipse to query to MyExperiment.org SPARQL end point&lt;/a&gt;. I think I had not mentioned that I have also written a manager to download &lt;a href="http://www.myexperiment.org/"&gt;MyExperiment&lt;/a&gt; &lt;a href="http://wiki.bioclipse.net/index.php?title=A_Meta_Language_for_Bioclipse"&gt;Bioclipse Scripting Language (BSL)&lt;/a&gt; scripts (though there are no GUI elements yet):&lt;pre&gt;&gt; myexperiment.search("RDF")&lt;br /&gt;[921, 928, 889]&lt;br /&gt;&lt;br /&gt;&gt; myexperiment.search("Kabsch")&lt;br /&gt;[937]&lt;br /&gt;&lt;/pre&gt;The returned lists give the workflow numbers for matching BSL scripts, which you can then simply download with:&lt;pre&gt;&gt; var file = myexperiment.downloadWorkflow(937)&lt;br /&gt;ui.open(file)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-7809266128113482083?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/7809266128113482083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=7809266128113482083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7809266128113482083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7809266128113482083'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/11/bioclipse-manager-for-myexperimentorg.html' title='Bioclipse Manager for MyExperiment.org'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-8542837680055785952</id><published>2009-10-21T13:27:00.001+01:00</published><updated>2009-10-21T13:39:17.722+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='bugreports'/><category scheme='http://www.blogger.com/atom/ns#' term='code analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Maintaining patches is fixing patches</title><content type='html'>Today I had a question about having to fix patches against upstream changes because those patches were not included upstream yet is &lt;i&gt;not very productive&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;However, it is a prominent part of maintaining a code base. In the past 9 year, I &lt;i&gt;and many others&lt;/i&gt; have been reworking a lot of &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; code because of API changes &lt;b&gt;and&lt;/b&gt;&amp;nbsp;bug fixes in deeper parts of the CDK library. At least half of the work I have done for the CDK is doing this kind of fixing of downstream code. This is &lt;i&gt;never&lt;/i&gt;&amp;nbsp;trivial, and it is &lt;i&gt;never&lt;/i&gt; productive.&amp;nbsp;Well, depends somewhat on your definition of productivity.&lt;br /&gt;&lt;br /&gt;Whether productive or not, it is just something that needs to happen. Additionally, it is &lt;b&gt;not&lt;/b&gt;&amp;nbsp;something you can prevent. I guess one can call this a &lt;i&gt;fact of life&lt;/i&gt;. Doesn't make it nice work. Not at all. And most of my frustration with the CDK library is the lack of documentation and unit testing, which makes such fixing of downstream code hard. This means that the person best suited to do this job, is the one who wrote the patch in the first place. The person who made the comment I mentioned earlier is seeing this from very up close now.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Code Quality&lt;/b&gt;&lt;br /&gt;I very much understand his feeling of being unproductive when updating patches; been there, done that. He (that I can disclose) is absolutely right. With all the quality assurance functionality I have set up in the past for the CDK, nicely integrated in &lt;a href="http://blog.rguha.net/"&gt;Rajarshi&lt;/a&gt;'s &lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/nightly;a=summary"&gt;Nightly&lt;/a&gt; script, I hope to make it easier for people to write proper maintainable patches. Often these reports are, however, again about doing tasks which make you feel unproductive. But I can assure you that writing such tools quality assurance tools, like the &lt;a href="http://chem-bla-ics.blogspot.com/2009/10/work-in-progress-open-doccheck.html"&gt;OpenJavaDocCheck&lt;/a&gt; I worked on this weekend, makes you feel even less productive.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Redesign&lt;/b&gt;&lt;br /&gt;Sometimes making a library better maintainable, includes reworking the design. Almost always this take serious effort, and potentially introduce new bugs. At the same time, it always fixes a lot of older bugs and at the same time, of redesigned properly, makes it much easier to fix other bugs and allow more functionality to be implemented.&lt;br /&gt;&lt;br /&gt;But again, this requires rewriting of downstream patches too. And the one doing the redesign will always get comments about this requiring to make unproductive code updates downstream. I have seen this on several&amp;nbsp;occasions&amp;nbsp;in the CDK, such as my rewrite of the atom typing functionality in the CDK. (And don't get any KDE4 developer started on that topic ;) Another &lt;i&gt;fact of life&lt;/i&gt;, I guess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-8542837680055785952?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/8542837680055785952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=8542837680055785952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8542837680055785952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8542837680055785952'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/maintaining-patches-is-fixing-patches.html' title='Maintaining patches is fixing patches'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-5906697747637928508</id><published>2009-10-20T11:24:00.000+01:00</published><updated>2009-10-20T11:24:30.740+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMLRSS'/><category scheme='http://www.blogger.com/atom/ns#' term='crossref'/><category scheme='http://www.blogger.com/atom/ns#' term='RSS'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='CML'/><category scheme='http://www.blogger.com/atom/ns#' term='chemistry'/><title type='text'>CrossRef writes up RSS usage recommendations</title><content type='html'>&lt;a href="http://www.crossref.org/CrossTech/2009/10/recommendations_on_rss_feeds_f.html"&gt;CrossTech announced&lt;/a&gt; that a &lt;a href="http://www.crossref.org/"&gt;CrossRef&lt;/a&gt; working group has written a &lt;a href="http://oxford.crossref.org/best_practice/rss/"&gt;best practices&lt;/a&gt; for the use of RSS feeds by publishers. Nice introduction for anyone who is creating RSS feeds. Only comment I could make, is the lack of other modules. For example, a Chemistry module has been proposed by &lt;i&gt;us&lt;/i&gt;&amp;nbsp;5 years ago already (DOI:&lt;a href="http://dx.doi.org/10.1021/ci034244p"&gt;10.1021/ci034244p&lt;/a&gt;) and about which I blogged on &lt;a href="http://chem-bla-ics.blogspot.com/search?q=CMLRSS"&gt;several&amp;nbsp;occasions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Below is the &lt;a href="http://cb.openmolecules.net/atom.php?category=&amp;amp;type=latest_inchis"&gt;CMLRSS feed&lt;/a&gt; of &lt;a href="http://cb.openmolecules.net/"&gt;Chemical blogspace&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_5vhaOf2_53I/RjY623Ndd8I/AAAAAAAAADo/Ls4ZKNdpWBM/s1600-h/cmlrss_Cb2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5059295945605085122" src="http://bp0.blogger.com/_5vhaOf2_53I/RjY623Ndd8I/AAAAAAAAADo/Ls4ZKNdpWBM/s320/cmlrss_Cb2.png" style="margin-bottom: 10px; margin-left: 0px; margin-right: 10px; margin-top: 0px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, publishers can take advantage of such modules, using the &lt;a href="http://www.w3.org/TR/xml-names/"&gt;XML Namespaces&lt;/a&gt; technology. The &lt;i&gt;best practices&lt;/i&gt;&amp;nbsp;uses that for a &lt;a href="http://dublincore.org/"&gt;Dublin Core&lt;/a&gt; and a &lt;a href="http://purl.org/rss/1.0/modules/prism/"&gt;PRISM&lt;/a&gt; extension. The here discussed CML extension is another one, but the point is, that you can basically plug in any module.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-5906697747637928508?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/5906697747637928508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=5906697747637928508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5906697747637928508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/5906697747637928508'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/crossref-writes-up-rss-usage.html' title='CrossRef writes up RSS usage recommendations'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_5vhaOf2_53I/RjY623Ndd8I/AAAAAAAAADo/Ls4ZKNdpWBM/s72-c/cmlrss_Cb2.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-9030957164774075343</id><published>2009-10-17T17:58:00.002+01:00</published><updated>2009-11-07T10:55:04.059+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='quality assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaDoc'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='doclet'/><title type='text'>Work in Progress: an Open DocCheck replacement</title><content type='html'>While it is still very much in progress, I have already made more progress than I had hoped for. The &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/doclet/spec/index.html"&gt;JavaDoc Doclet API&lt;/a&gt; is actually not too difficult to use, though my use will very likely improve more later. The &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; has been using &lt;a href="http://java.sun.com/j2se/javadoc/doccheck/"&gt;Sun's DocCheck&lt;/a&gt; utility for testing the library's JavaDoc quality, but the reports never really satisfied me. Moreover, the most recent version is ancient and because it is &lt;i&gt;closed source&lt;/i&gt;, no one can continue on those efforts. DocCheck is &lt;a href="http://en.wikipedia.org/wiki/Missing_In_Action"&gt;MIA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Instead, &lt;a href="http://pmd.sf.net/"&gt;PMD&lt;/a&gt; is given nice overviews of what it believes to be wrong with the CDK, and also provides a decent XML format which allows extraction of information, which is used by, for example, &lt;a href="http://pele.farmbio.uu.se/supernightly/"&gt;SuperNightly&lt;/a&gt; as showed yesterday in &lt;a href="http://chem-bla-ics.blogspot.com/2009/10/pmd-245-installed-in-cdk-12x-branch.html"&gt;PMD 2.4.5 installed in the CDK 1.2.x branch&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been pondering about it for a long time now, but writing a JavaDoc checking library is hardly core cheminformatics research; at least, you would not get funding for it, despite everyone always complaining about good documentation. &lt;i&gt;Alas&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Last week, I was reviewing some more code, and again saw the very common &lt;i&gt;error&lt;/i&gt; of the missing period at the end of the first sentence in JavaDoc. This one is sort of important for proper JavaDoc documentation generation, but the complexity of the current DocCheck reporting, people are not familiar enough with it. Being tired of having to repeat myself, I decided to address the problen, but creating better &lt;a href="http://pele.farmbio.uu.se/nightly/javadoc/data/"&gt;Nightly error reporting for the CDK JavaDoc&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, I started &lt;a href="http://github.com/egonw/ojdcheck"&gt;OpenJavaDocCheck&lt;/a&gt;, or &lt;i&gt;ojdcheck&lt;/i&gt;. As mentioned, I have made quite promising progress, and the current version provides the ability to write custom tests (which I plan to use for validating content of &lt;a href="http://cdk.sourceforge.net/guides/devel/ch01.html"&gt;CDK taglet&lt;/a&gt; content), and create XML as well as XHTML which can be saved to any file. To give you a glimps of where things are going, here's a screenshot of the current XHTML output:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_5vhaOf2_53I/Stn3TYkubrI/AAAAAAAAArU/H5QTzy0ztjk/s1600-h/ojdcheckXHTML.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_5vhaOf2_53I/Stn3TYkubrI/AAAAAAAAArU/H5QTzy0ztjk/s320/ojdcheckXHTML.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The current list of tests is really small, and consists of a single test:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;test if each class and method has JavaDoc&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-9030957164774075343?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/9030957164774075343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=9030957164774075343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/9030957164774075343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/9030957164774075343'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/work-in-progress-open-doccheck.html' title='Work in Progress: an Open DocCheck replacement'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/Stn3TYkubrI/AAAAAAAAArU/H5QTzy0ztjk/s72-c/ojdcheckXHTML.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-4161396300378623371</id><published>2009-10-16T15:52:00.000+01:00</published><updated>2009-10-16T15:52:55.196+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pmd'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><title type='text'>PMD 2.4.5 installed in the CDK 1.2.x branch</title><content type='html'>Today I installed &lt;a href="http://pmd.sf.net/"&gt;PMD&lt;/a&gt; 4.2.5 in the &lt;a href="http://github.com/egonw/cdk/tree/cdk-1.2.x"&gt;CDK 1.2.x branch&lt;/a&gt; which contains mostly &lt;a href="http://sourceforge.net/project/shownotes.php?release_id=659603&amp;group_id=56262"&gt;bug fixes&lt;/a&gt; compared to the 4.2.2 version we had earlier. Several of these include false positives: warnings which were not really problems, but tests going bad. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_5vhaOf2_53I/StiH7P1LJ9I/AAAAAAAAArM/nTJu5DJpEH4/s1600-h/supernightly2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_5vhaOf2_53I/StiH7P1LJ9I/AAAAAAAAArM/nTJu5DJpEH4/s320/supernightly2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;The number of these false positives seems to be significant as the number of PMD violations for the CDK 1.2.x branch seems to have dropped about 1500! warnings :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-4161396300378623371?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/4161396300378623371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=4161396300378623371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/4161396300378623371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/4161396300378623371'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/pmd-245-installed-in-cdk-12x-branch.html' title='PMD 2.4.5 installed in the CDK 1.2.x branch'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5vhaOf2_53I/StiH7P1LJ9I/AAAAAAAAArM/nTJu5DJpEH4/s72-c/supernightly2.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-3191570185842081821</id><published>2009-10-15T22:06:00.000+01:00</published><updated>2009-10-15T22:06:25.401+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtuoso'/><category scheme='http://www.blogger.com/atom/ns#' term='jena'/><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='end point'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Bio2RDF'/><title type='text'>SPARQL end points, Jena and bif:contains</title><content type='html'>I have been having fun with SPARQL in &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; for a while now, and blogged at several occasions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-enters-rdfopenmoleculesnet-2.html"&gt;NMRShiftDB enters rdf.openmolecules.net #2: SPARQL end point with Virtuoso&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/08/bioclipse-and-sparql-end-points-2.html"&gt;Bioclipse and SPARQL end points #2: MyExperiment&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/08/bioclipse-and-sparql-end-points.html"&gt;Bioclipse and SPARQL end points&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;One thing I had not been able to work out, is that &lt;a href="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/"&gt;Virtuoso&lt;/a&gt; uses a (rather nice) &lt;i&gt;bif:contains&lt;/i&gt; extension that support indexing. However, &lt;a href="http://jena.sourceforge.net/"&gt;Jena&lt;/a&gt; would complain with:&lt;pre&gt;com.hp.hpl.jena.query.QueryParseException: Line 1, column 31: Unresolved&lt;br /&gt;prefixed name: bif:contains&lt;/pre&gt;Defining the prefix did not solve the problem either, but &lt;a href="http://www.linkedin.com/in/ivanmikhailov"&gt;Ivan Mikhailov&lt;/a&gt; just replied to my post to the &lt;a href="https://sourceforge.net/mailarchive/forum.php?forum_name=virtuoso-users"&gt;virtuoso-user&lt;/a&gt; mailing list providing the solution.&lt;br /&gt;&lt;br /&gt;The solution is in the fact that bif: is in its own namespace, which makes it possible to replace bif:contains by its full reference &amp;lt;bif:contains&gt;. I directly gave that a try in Bioclipse, and just succesfull ran this Bioclipse script snippet:&lt;pre&gt;rdf.sparqlRemote(&lt;br /&gt;  "http://bio2rdf.org/sparql",&lt;br /&gt;  "SELECT * WHERE {?s ?p ?o . ?o &amp;lt;bif:contains&gt; \"aspirin\" .};"&lt;br /&gt;);&lt;/pre&gt;&lt;br /&gt;Thanx, Ivan!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-3191570185842081821?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/3191570185842081821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=3191570185842081821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3191570185842081821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/3191570185842081821'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/sparql-end-points-jena-and-bifcontains.html' title='SPARQL end points, Jena and bif:contains'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-8513791953657746855</id><published>2009-10-09T11:27:00.001+01:00</published><updated>2009-10-12T08:40:51.656+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='chemistry'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='NMRShiftDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Bio2RDF'/><title type='text'>NMRShiftDB RDF #3: Bio2RDF</title><content type='html'>My might have seen my efforts to convert the &lt;a href="http://www.nmrshiftdb.org/"&gt;NMRShiftDB&lt;/a&gt; data into RDF:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-rdf-2-some-statistics.html"&gt;NMRShiftDB RDF #2: Some statistics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-rdf-1-spectra-by-inchi.html"&gt;NMRShiftDB RDF #1: Spectra by InChI&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/09/nmrshiftdb-enters-rdfopenmoleculesnet-2.html"&gt;NMRShiftDB enters rdf.openmolecules.net #2: SPARQL end point with Virtuoso&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://bio2rdf.blogspot.com/"&gt;Peter Ansell&lt;/a&gt; has shortly after that copied the data into &lt;a href="http://bio2rdf.org/"&gt;Bio2RDF&lt;/a&gt;, but I had not blogged about that yet. So, here goes. If you have not looked at Bio2RDF yet, this is a good time to do that. The structure of the exposed triples is not perfect, and I just realized I made a beginners mistake, to use a domain name in a namespace I have not control over (bad me). The Virtuoso6 faceted browser allows you to navigate the data in Bio2RDF by molecule (e.g. &lt;a href="http://cu.bio2rdf.org/page/nmrshiftdb_molecule:234"&gt;molecule 234&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_5vhaOf2_53I/Ss8OlO1xwbI/AAAAAAAAAq8/2VEbHhScO_w/s1600-h/nmrRDF1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_5vhaOf2_53I/Ss8OlO1xwbI/AAAAAAAAAq8/2VEbHhScO_w/s320/nmrRDF1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And by spectrum too (e.g. &lt;a href="http://cu.bio2rdf.org/page/nmrshiftdb_spectrum:4735"&gt;spectrum 4735&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/Ss8PDZNWHcI/AAAAAAAAArE/TZaiOI0deUw/s1600-h/nmrRDF2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_5vhaOf2_53I/Ss8PDZNWHcI/AAAAAAAAArE/TZaiOI0deUw/s320/nmrRDF2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-8513791953657746855?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/8513791953657746855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=8513791953657746855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8513791953657746855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8513791953657746855'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/nmrshiftdb-rdf-3-bio2rdf.html' title='NMRShiftDB RDF #3: Bio2RDF'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/Ss8OlO1xwbI/AAAAAAAAAq8/2VEbHhScO_w/s72-c/nmrRDF1.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-7962798836722405092</id><published>2009-10-08T16:03:00.000+01:00</published><updated>2009-10-08T16:03:33.988+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supernightly'/><category scheme='http://www.blogger.com/atom/ns#' term='Nightly'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><title type='text'>Where are the CDK 1.3.1 and 1.2.4 releases ?!?</title><content type='html'>You might be wondering what is keeping the &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; 1.3.1 and 1.2.4 releases. And right you are. When we look at &lt;a href="http://pele.farmbio.uu.se/supernightly/"&gt;Supernightly&lt;/a&gt;, we get a clue (BTW, I hope the &lt;a href="http://www.mail-archive.com/cdk-user@lists.sourceforge.net/msg01173.html"&gt;EBI nodes&lt;/a&gt; will join soon too):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/Ss39W94GpqI/AAAAAAAAAq0/Jhfue0ochwE/s1600-h/supernightly1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_5vhaOf2_53I/Ss39W94GpqI/AAAAAAAAAq0/Jhfue0ochwE/s320/supernightly1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Studying this table shows the reasons: there are too many regressions, too many failing unit tests. For example, 1.2.4 (while not yet released, called 1.2.3.git) has 50 new failing tests. Now, fair enough, this is &lt;a href="http://pele.farmbio.uu.se/nightly-1.2.x/test/result-ioformats.html"&gt;mostly because&lt;/a&gt; of ioformats not being tested in 1.2.3 &lt;b&gt;&lt;i&gt;and&lt;/i&gt;&lt;/b&gt; most of the fails caused by a bug in the test, not in the code. But that still leaves 20 other failing tests. Mostly related to known bugs, and for some problems patches are actually available. &lt;br /&gt;&lt;br /&gt;These last 22 we also see in the differences between 1.3.0 and 1.3.1 (while not yet released, called 1.3.0.git). That's because the ioformats modules is not tested in that branch either, pending a new merge with the cdk-1.2.x branch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-7962798836722405092?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/7962798836722405092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=7962798836722405092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7962798836722405092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7962798836722405092'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/where-are-cdk-131-and-124-releases.html' title='Where are the CDK 1.3.1 and 1.2.4 releases ?!?'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/Ss39W94GpqI/AAAAAAAAAq0/Jhfue0ochwE/s72-c/supernightly1.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-7882361132623796725</id><published>2009-10-07T17:47:00.002+01:00</published><updated>2009-10-07T19:59:07.712+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sweden'/><category scheme='http://www.blogger.com/atom/ns#' term='vetenskapsradet'/><category scheme='http://www.blogger.com/atom/ns#' term='open access'/><category scheme='http://www.blogger.com/atom/ns#' term='funding'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>VR.se funded research to be OA as of 2010</title><content type='html'>Happy news from the Swedish &lt;a href="http://www.vr.se/"&gt;Vetenskapsradet&lt;/a&gt; (via &lt;a href="http://scienceblogs.com/clock/2009/10/the_swedish_research_council_m.php"&gt;Coturnix&lt;/a&gt;): as of next 2010 all peer reviewed journal papers &lt;a href="http://www.vr.se/franvetenskapsradet/nyheter/nyhetsarkiv/nyheter2009/nyheter2009/vetenskapsradetkraverfritillgangtillforskningsresultat.5.227c330c123c73dc586800011519.html"&gt;must be Open Access&lt;/a&gt;. I am not yet VR funded, but involved in a few VR grant applications. Not that that really matters, as I am happily &lt;a href="http://www.google.se/search?hl=sv&amp;q=site:biomedcentral.com+willighagen&amp;btnG=Sök&amp;meta="&gt;publishing OA already&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-7882361132623796725?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/7882361132623796725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=7882361132623796725' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7882361132623796725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/7882361132623796725'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/vrse-funded-research-to-be-os-as-of.html' title='VR.se funded research to be OA as of 2010'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-9011964414554217007</id><published>2009-10-07T13:58:00.000+01:00</published><updated>2009-10-07T13:58:19.615+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><title type='text'>Keeping my Bioclipse repositories in sync with upstream</title><content type='html'>&lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; is now split up over several &lt;a href="http://en.wikipedia.org/wiki/Git_(software)"&gt;Git&lt;/a&gt; repositories (and some additional stuff in even more repositories). This has all to do with each repository now having one person acting as point-of-access. This means that I have several repositories checked out, which I need to keep synchronized. Now, I am pretty sure there are many solutions (and suggestions very welcome!), but this is the &lt;a href="http://en.wikipedia.org/wiki/Bash"&gt;Bash&lt;/a&gt; script I have just written to give me an overview of the state of my repositories, hoping it may be useful to others too:&lt;pre&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;PLUGINS=`ls -1`&lt;br /&gt;&lt;br /&gt;for PLUGIN in $PLUGINS&lt;br /&gt;do&lt;br /&gt;        echo "***************************************************************** $PLUGIN"&lt;br /&gt;        cd $PLUGIN; git fetch origin; git status; cd ..&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-9011964414554217007?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/9011964414554217007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=9011964414554217007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/9011964414554217007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/9011964414554217007'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/keeping-my-bioclipse-repositories-in.html' title='Keeping my Bioclipse repositories in sync with upstream'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-8338852033802287588</id><published>2009-10-06T14:31:00.000+01:00</published><updated>2009-10-06T14:31:25.241+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='n3'/><category scheme='http://www.blogger.com/atom/ns#' term='OWL'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='chemistry'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>CDK Molecules in RDF</title><content type='html'>Yesterday, I finally got around to starting a &lt;a href="http://github.com/egonw/cdk/tree/73-rdf"&gt;branch &lt;/a&gt; on adding RDF support to the &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt;; in particular, write the CDK data model ontology in &lt;a href="http://en.wikipedia.org/wiki/Web_Ontology_Language"&gt;OWL&lt;/a&gt; and serialization to and from RDF using the ontology. The framework is now set up, but I have yet to formalize all bits and pieces of the CDK data model in classes and properties. Just as a preview, here is what a very basic bit of CDK model in RDF looks like (&lt;a href="http://en.wikipedia.org/wiki/Notation3"&gt;N3 format&lt;/a&gt;):&lt;pre&gt;@prefix cdk:     &amp;lt;http://cdk.sourceforge.net/model.owl#&gt; .&lt;br /&gt;&lt;br /&gt;&amp;lt;http://cdk.sf.net/model/atom/1&gt;&lt;br /&gt;      a       cdk:Atom ;&lt;br /&gt;      cdk:symbol "C" .&lt;br /&gt;&lt;br /&gt;&amp;lt;http://cdk.sf.net/model/molecule/1&gt;&lt;br /&gt;      a       cdk:Molecule ;&lt;br /&gt;      cdk:hasAtom &lt;http://cdk.sf.net/model/atom/1&gt; .&lt;/pre&gt;Still rather verbose, but very flexible. I have even been thinking of an XHTML+RDFa writer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-8338852033802287588?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/8338852033802287588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=8338852033802287588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8338852033802287588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8338852033802287588'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/cdk-molecules-in-rdf.html' title='CDK Molecules in RDF'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-1675840681373636857</id><published>2009-10-01T09:10:00.000+01:00</published><updated>2009-10-01T09:10:13.129+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google wave'/><category scheme='http://www.blogger.com/atom/ns#' term='robot'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><title type='text'>Google Wave Invite: but you need to work on the CDK and the CDKitty robot</title><content type='html'>I just posted to below email to the cdk-user mailing list. Next Monday, I'll decide.&lt;pre&gt;Hi all,&lt;br /&gt;&lt;br /&gt;unless you have not read any news in the last two days, you will have&lt;br /&gt;seen that Google is rolling out a second batch of &lt;a href="http://en.wikipedia.org/wiki/Google_Wave"&gt;Google Wave&lt;/a&gt;&lt;br /&gt;accounts... I have one invite for someone who wants to co-develop the&lt;br /&gt;CDKitty robot, which adds &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt;-based functionality to Google Wave...&lt;br /&gt;&lt;br /&gt;The code is at: &lt;a href="http://github.com/egonw/cdkitty"&gt;http://github.com/egonw/cdkitty&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are interested in the account, please email me offline with:&lt;br /&gt;&lt;br /&gt;* how you think you can contribute to the robot&lt;br /&gt;* why you want to do that&lt;br /&gt;* how much time you will have for it&lt;br /&gt;&lt;br /&gt;The position is open to anyway, and consider your email an application&lt;br /&gt;to the position :) (and, if you are a student, we could even try to&lt;br /&gt;arrange &lt;a href="http://www.uu.se"&gt;Uppsala University&lt;/a&gt; credit points, if you can work 20 weeks&lt;br /&gt;full time on it).&lt;br /&gt;&lt;br /&gt;Egon&lt;br /&gt;&lt;/pre&gt;BTW, existing Google Wave users can invite the robot by adding &lt;i&gt;chemdevelkit@appspot.com&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-1675840681373636857?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/1675840681373636857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=1675840681373636857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/1675840681373636857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/1675840681373636857'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/google-wave-invite-but-you-need-to-work.html' title='Google Wave Invite: but you need to work on the CDK and the CDKitty robot'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-171509322634228645</id><published>2009-10-01T08:58:00.000+01:00</published><updated>2009-10-01T08:58:11.482+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ChEBI'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='MDL SD file'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Processing the ChEBI MDL SD file with the CDK</title><content type='html'>&lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; has a &lt;a href="http://pele.farmbio.uu.se/cgi-bin/bugzilla/show_bug.cgi?id=1526"&gt;bug report&lt;/a&gt; about browsing the &lt;a href="http://www.ebi.ac.uk/chebi/"&gt;ChEBI&lt;/a&gt; &lt;a href="ftp://ftp.ebi.ac.uk/pub/databases/chebi/SDF/"&gt;SD file&lt;/a&gt; in its &lt;a href="http://bioclipse.blogspot.com/2009/07/working-with-large-sdfiles-in-bioclipse.html"&gt;moltable editor&lt;/a&gt;. Some entries make Bioclipse crash (as reported), or just very sluggish as with my Dell superlapcomputer :)&lt;br /&gt;&lt;br /&gt;So, I processed the file with a pure &lt;a href="http://pele.farmbio.uu.se/nightly-1.2.3/"&gt;CDK 1.2.3&lt;/a&gt; with this small piece of Groovy script:&lt;pre&gt;import org.openscience.cdk.interfaces.*;&lt;br /&gt;import org.openscience.cdk.io.*;&lt;br /&gt;import org.openscience.cdk.io.iterator.*;&lt;br /&gt;import org.openscience.cdk.*;&lt;br /&gt;import org.openscience.cdk.tools.manipulator.*;&lt;br /&gt;&lt;br /&gt;iterator = new IteratingMDLReader(&lt;br /&gt;  new File("ChEBI_complete.sdf").newReader(),&lt;br /&gt;  DefaultChemObjectBuilder.getInstance()&lt;br /&gt;)&lt;br /&gt;int i = 0;&lt;br /&gt;boolean hasNext = true;&lt;br /&gt;while (hasNext) {&lt;br /&gt;  i++;&lt;br /&gt;  long startTime = System.currentTimeMillis();&lt;br /&gt;  hasNext = iterator.hasNext();&lt;br /&gt;  IMolecule mol = iterator.next()&lt;br /&gt;  long endTime = System.currentTimeMillis();&lt;br /&gt;  formula = MolecularFormulaManipulator.getMolecularFormula(mol)&lt;br /&gt;  long time = endTime - startTime;&lt;br /&gt;  if (time &gt; 99)&lt;br /&gt;    println i + ": " + MolecularFormulaManipulator.getString(formula) +&lt;br /&gt;            " (" + endTime + "-" + startTime + "=" + time + " ms)"&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;This script times reading of all entries and reports all that entries take more than 100 ms to read (in the scripting environment). There are surprising results: H2O takes 50 seconds, phosphate 100 seconds. So, I am quite certain it must be the reading of the metadata, and not the connection table. But, this I will explore in more detail now, hoping to come up with a patch for the CDK to speed up reading of such entries.&lt;br /&gt;&lt;br /&gt;The full list of timings:&lt;pre&gt;1: C10H2 (1254375053450-1254375052356=1094 ms)                                           &lt;br /&gt;152: C20HN7O6 (1254375054779-1254375054125=654 ms)                                       &lt;br /&gt;592: C3HO3 (1254375056604-1254375055499=1105 ms)                                         &lt;br /&gt;832: C9NO5 (1254375057016-1254375056823=193 ms)                                          &lt;br /&gt;879: C20N4 (1254375057381-1254375057039=342 ms)                                          &lt;br /&gt;1125: R (1254375058293-1254375057528=765 ms)                                             &lt;br /&gt;1197: C20N7O6 (1254375058612-1254375058372=240 ms)                                       &lt;br /&gt;1198: C5NO3 (1254375058714-1254375058613=101 ms)                                         &lt;br /&gt;1243: C5NO4 (1254375063698-1254375058800=4898 ms)                                        &lt;br /&gt;1272: C21N7O16P3S (1254375067185-1254375063856=3329 ms)                                  &lt;br /&gt;1277: C23N7O17P3S (1254375067625-1254375067239=386 ms)                                   &lt;br /&gt;1282: C3NO2S (1254375070673-1254375067650=3023 ms)                                       &lt;br /&gt;1285: C3O3 (1254375071600-1254375070675=925 ms)                                          &lt;br /&gt;1290: C2O2 (1254375071802-1254375071608=194 ms)                                          &lt;br /&gt;1299: H2O (1254375122202-1254375071808=50394 ms)                                         &lt;br /&gt;1300: H (1254375136668-1254375122202=14466 ms)                                           &lt;br /&gt;1301: O2 (1254375145270-1254375136670=8600 ms)                                           &lt;br /&gt;1335: C15N6O5S (1254375150683-1254375145319=5364 ms)                                     &lt;br /&gt;1343: C10N5O13P3 (1254375298927-1254375150686=148241 ms)                                 &lt;br /&gt;1349: C2NO2 (1254375301391-1254375298953=2438 ms)                                        &lt;br /&gt;1351: C34N4O4 (1254375301659-1254375301396=263 ms)                                       &lt;br /&gt;1509: C6NO2 (1254375302753-1254375302011=742 ms)                                         &lt;br /&gt;1541: C19N7O6 (1254375303296-1254375302778=518 ms)                                       &lt;br /&gt;1543: C20HN7O7 (1254375303441-1254375303312=129 ms)                                      &lt;br /&gt;1609: C9N2O15P3 (1254375303740-1254375303558=182 ms)                                     &lt;br /&gt;1631: CHO2 (1254375303975-1254375303837=138 ms)                                          &lt;br /&gt;1632: C4O4 (1254375304127-1254375303976=151 ms)                                          &lt;br /&gt;1711: C21N7O14P2 (1254375310174-1254375304245=5929 ms)                                   &lt;br /&gt;1788: C6H3O9P (1254375310555-1254375310387=168 ms)                                       &lt;br /&gt;1798: C10H2N2O3S (1254375310705-1254375310588=117 ms)                                    &lt;br /&gt;1808: C6N3O2 (1254375312665-1254375310727=1938 ms)                                       &lt;br /&gt;1823: C10N5O14P3 (1254375318534-1254375312781=5753 ms)                                   &lt;br /&gt;1839: C5NO4 (1254375325988-1254375318583=7405 ms)                                        &lt;br /&gt;1840: C3O3 (1254375326249-1254375325989=260 ms)                                          &lt;br /&gt;1848: C10N5O7P (1254375336661-1254375326273=10388 ms)                                    &lt;br /&gt;1862: C5NOSR2 (1254375337336-1254375336699=637 ms)                                       &lt;br /&gt;1882: C3N2 (1254375337489-1254375337351=138 ms)                                          &lt;br /&gt;1893: C6O9P (1254375337626-1254375337501=125 ms)                                         &lt;br /&gt;1910: C3O6P (1254375337846-1254375337639=207 ms)                                         &lt;br /&gt;1934: H3N (1254375349713-1254375337921=11792 ms)                                         &lt;br /&gt;1977: O4S (1254375350045-1254375349902=143 ms)                                           &lt;br /&gt;1984: CN2O (1254375350174-1254375350050=124 ms)                                          &lt;br /&gt;2007: C5N (1254375350324-1254375350183=141 ms)                                           &lt;br /&gt;2015: C5N5O (1254375350493-1254375350329=164 ms)                                         &lt;br /&gt;2016: C2O (1254375350683-1254375350494=189 ms)                                           &lt;br /&gt;2018: C27N9O15P2 (1254375351927-1254375350684=1243 ms)                                   &lt;br /&gt;2020: H2O2 (1254375352124-1254375351928=196 ms)                                          &lt;br /&gt;2036: C17N3O17P2 (1254375352309-1254375352196=113 ms)                                    &lt;br /&gt;2095: C10N5O4 (1254375352578-1254375352394=184 ms)                                       &lt;br /&gt;2137: C14HO4R (1254375353331-1254375352646=685 ms)                                       &lt;br /&gt;2180: C3NO2 (1254375354199-1254375353469=730 ms)                                         &lt;br /&gt;2184: C9NO5 (1254375354480-1254375354270=210 ms)                                         &lt;br /&gt;2194: C6N4O2 (1254375356738-1254375354485=2253 ms)                                       &lt;br /&gt;2201: C21N7O17P3 (1254375359838-1254375356748=3090 ms)                                   &lt;br /&gt;2228: C6O2 (1254375360480-1254375359912=568 ms)                                          &lt;br /&gt;2240: CO2 (1254375363324-1254375360485=2839 ms)                                          &lt;br /&gt;2327: C5NO2S (1254375370536-1254375363612=6924 ms)                                       &lt;br /&gt;2348: C14N6O5S (1254375371522-1254375370558=964 ms)                                      &lt;br /&gt;2359: C9N2O9P (1254375372236-1254375371544=692 ms)                                       &lt;br /&gt;2367: C9N2O6 (1254375373614-1254375372265=1349 ms)                                       &lt;br /&gt;2370: C5N5 (1254375373975-1254375373615=360 ms)                                          &lt;br /&gt;2404: C10N5O5 (1254375374360-1254375374108=252 ms)                                       &lt;br /&gt;2413: C10N5O10P2 (1254375401639-1254375374373=27266 ms)                                  &lt;br /&gt;2454: C5O5 (1254375401831-1254375401688=143 ms)                                          &lt;br /&gt;2455: C5NO2S (1254375407807-1254375401832=5975 ms)                                       &lt;br /&gt;2470: C11N2O2 (1254375408251-1254375407815=436 ms)                                       &lt;br /&gt;2494: C4NO3 (1254375409200-1254375408373=827 ms)                                         &lt;br /&gt;2499: C5O10P2R (1254375412153-1254375409297=2856 ms)                                     &lt;br /&gt;2525: C4HO7P (1254375412777-1254375412293=484 ms)                                        &lt;br /&gt;2526: C4N2 (1254375414071-1254375412777=1294 ms)                                         &lt;br /&gt;2534: C21N7O14P2 (1254375417657-1254375414091=3566 ms)                                   &lt;br /&gt;2581: C3NO2 (1254375422072-1254375417745=4327 ms)                                        &lt;br /&gt;2638: C4NO4 (1254375424772-1254375422244=2528 ms)                                        &lt;br /&gt;2680: C5O14P3 (1254375426347-1254375424831=1516 ms)                                      &lt;br /&gt;2683: C3NO3 (1254375433063-1254375426353=6710 ms)                                        &lt;br /&gt;2702: C3HO6P (1254375433192-1254375433079=113 ms)                                        &lt;br /&gt;2749: C4N2O3 (1254375434106-1254375433445=661 ms)                                        &lt;br /&gt;2755: C10N4O8P (1254375434417-1254375434113=304 ms)                                      &lt;br /&gt;2756: C5NO2 (1254375436750-1254375434418=2332 ms)                                        &lt;br /&gt;2779: C4NO2S (1254375437847-1254375436759=1088 ms)                                       &lt;br /&gt;2803: C5N4 (1254375438991-1254375437968=1023 ms)                                         &lt;br /&gt;2832: C9NO2 (1254375439226-1254375439026=200 ms)                                         &lt;br /&gt;2844: C8HNO3 (1254375440463-1254375439238=1225 ms)                                       &lt;br /&gt;2856: C5O13P3R (1254375441336-1254375440497=839 ms)                                      &lt;br /&gt;2863: C10O6 (1254375442424-1254375441348=1076 ms)                                        &lt;br /&gt;2873: C10N5O8P (1254375442560-1254375442433=127 ms)                                      &lt;br /&gt;2898: C3HO3 (1254375443712-1254375442655=1057 ms)                                        &lt;br /&gt;2925: C8H4NO6 (1254375443886-1254375443729=157 ms)                                       &lt;br /&gt;3025: CO3 (1254375444508-1254375444131=377 ms)                                           &lt;br /&gt;3031: C10N5O11P2 (1254375444810-1254375444601=209 ms)                                    &lt;br /&gt;3038: C3NO2S (1254375449012-1254375444836=4176 ms)                                       &lt;br /&gt;3042: C4N2O2 (1254375449224-1254375449066=158 ms)                                        &lt;br /&gt;3060: C6O2 (1254375449433-1254375449274=159 ms)                                          &lt;br /&gt;3083: C17N4O9P (1254375450751-1254375449465=1286 ms)                                     &lt;br /&gt;3088: C34FeN4O4 (1254375452873-1254375450848=2025 ms)                                    &lt;br /&gt;3111: C9N2O12P2 (1254375454560-1254375452939=1621 ms)                                    &lt;br /&gt;3119: CNO5P (1254375454774-1254375454563=211 ms)                                         &lt;br /&gt;3122: C9N3O14P3 (1254375454972-1254375454778=194 ms)                                     &lt;br /&gt;3184: C3O3 (1254375455362-1254375455053=309 ms)                                          &lt;br /&gt;3213: CO (1254375455489-1254375455375=114 ms)                                            &lt;br /&gt;3216: C3HO7P (1254375455662-1254375455490=172 ms)                                        &lt;br /&gt;3223: C9N2O6 (1254375455850-1254375455737=113 ms)                                        &lt;br /&gt;3239: C3NO3 (1254375458116-1254375455868=2248 ms)                                        &lt;br /&gt;3296: C9NO3 (1254375459575-1254375458250=1325 ms)                                        &lt;br /&gt;3306: S3R (1254375464014-1254375459596=4418 ms)                                          &lt;br /&gt;3313: C6O6 (1254375464701-1254375464016=685 ms)                                          &lt;br /&gt;3348: C14HO4 (1254375465102-1254375464766=336 ms)                                        &lt;br /&gt;3360: C12O11 (1254375465830-1254375465193=637 ms)                                        &lt;br /&gt;3364: N2 (1254375475917-1254375465872=10045 ms)                                          &lt;br /&gt;3371: C21N7O17P3 (1254375479243-1254375475920=3323 ms)                                   &lt;br /&gt;3377: C6N2O2 (1254375481175-1254375479306=1869 ms)                                       &lt;br /&gt;3379: C3O6P (1254375482278-1254375481176=1102 ms)                                        &lt;br /&gt;3390: O10P3 (1254375484356-1254375482286=2070 ms)                                        &lt;br /&gt;3403: C5N2O3 (1254375486975-1254375484451=2524 ms)                                       &lt;br /&gt;3499: C9NO3 (1254375487745-1254375487074=671 ms)                                         &lt;br /&gt;3502: C5O8P (1254375489044-1254375487747=1297 ms)                                        &lt;br /&gt;3532: C55MgN4O5 (1254375489206-1254375489097=109 ms)                                     &lt;br /&gt;3537: C5NO4 (1254375494872-1254375489209=5663 ms)                                        &lt;br /&gt;3546: Fe (1254375507646-1254375494892=12754 ms)                                          &lt;br /&gt;3554: C5N2O2 (1254375507934-1254375507650=284 ms)                                        &lt;br /&gt;3566: H2 (1254375508526-1254375508033=493 ms)                                            &lt;br /&gt;3576: C12ClN4O7P2S (1254375508737-1254375508548=189 ms)                                  &lt;br /&gt;3577: Mn (1254375511113-1254375508738=2375 ms)                                           &lt;br /&gt;3582: C11NO6P (1254375511249-1254375511120=129 ms)                                       &lt;br /&gt;3628: O7P2 (1254375554180-1254375511388=42792 ms)                                        &lt;br /&gt;3633: O4P (1254375659461-1254375554183=105278 ms)                                        &lt;br /&gt;3647: C12N4OS (1254375659706-1254375659481=225 ms)                                       &lt;br /&gt;3664: C8HNO6P (1254375661230-1254375659713=1517 ms)                                      &lt;br /&gt;3665: C9N4O8P (1254375661450-1254375661231=219 ms)                                       &lt;br /&gt;3679: Mg (1254375679426-1254375661513=17913 ms)                                          &lt;br /&gt;3859: C20N7O6 (1254375679768-1254375679522=246 ms)                                       &lt;br /&gt;3860: C19N7O6 (1254375680069-1254375679769=300 ms)                                       &lt;br /&gt;4026: Ca (1254375681849-1254375680582=1267 ms)                                           &lt;br /&gt;4029: CNOR (1254375682983-1254375681850=1133 ms)                                         &lt;br /&gt;4031: COR2 (1254375686384-1254375682984=3400 ms)                                         &lt;br /&gt;4038: Cl (1254375686610-1254375686387=223 ms)                                            &lt;br /&gt;4099: F (1254375687012-1254375686767=245 ms)                                             &lt;br /&gt;4138: H (1254375722496-1254375687100=35396 ms)                                           &lt;br /&gt;4163: C6NO2 (1254375722805-1254375722566=239 ms)                                         &lt;br /&gt;4166: C6N2O2 (1254375724837-1254375722807=2030 ms)                                       &lt;br /&gt;4167: Mg (1254375746423-1254375724838=21585 ms)                                          &lt;br /&gt;4229: O (1254375754305-1254375746586=7719 ms)                                            &lt;br /&gt;4254: H3O4P (1254375771602-1254375754367=17235 ms)                                       &lt;br /&gt;4263: K (1254375771850-1254375771608=242 ms)                                             &lt;br /&gt;4265: C5NO2 (1254375772195-1254375771852=343 ms)                                         &lt;br /&gt;4297: Na (1254375772801-1254375772310=491 ms)                                            &lt;br /&gt;4311: C4O3R (1254375773107-1254375772835=272 ms)                                         &lt;br /&gt;4313: S (1254375795116-1254375773109=22007 ms)                                           &lt;br /&gt;4356: Zn (1254375814849-1254375795263=19586 ms)                                          &lt;br /&gt;4424: C5O5 (1254375818351-1254375814892=3459 ms)                                         &lt;br /&gt;4453: C2 (1254375818489-1254375818369=120 ms)                                            &lt;br /&gt;4482: C6N3O2 (1254375819699-1254375818525=1174 ms)                                       &lt;br /&gt;4494: C (1254375821009-1254375819706=1303 ms)                                            &lt;br /&gt;4519: Co (1254375821358-1254375821068=290 ms)                                            &lt;br /&gt;4670: C11N2O2 (1254375821817-1254375821583=234 ms)                                       &lt;br /&gt;4677: C4H2O4 (1254375822301-1254375821824=477 ms)                                        &lt;br /&gt;4801: Ni (1254375822605-1254375822450=155 ms)                                            &lt;br /&gt;4912: C5N2O3 (1254375823778-1254375822655=1123 ms)                                       &lt;br /&gt;5060: C5O5 (1254375824119-1254375823908=211 ms)                                          &lt;br /&gt;5111: C6O6 (1254375824420-1254375824212=208 ms)                                          &lt;br /&gt;5143: Cu (1254375824613-1254375824502=111 ms)                                            &lt;br /&gt;5357: C6N4O2 (1254375826277-1254375824919=1358 ms)                                       &lt;br /&gt;5368: C9NO5 (1254375826504-1254375826289=215 ms)                                         &lt;br /&gt;5369: Fe (1254375826620-1254375826505=115 ms)                                            &lt;br /&gt;5380: C3HO6P (1254375827340-1254375826635=705 ms)                                        &lt;br /&gt;5398: Na (1254375827949-1254375827359=590 ms)                                            &lt;br /&gt;5400: K (1254375828174-1254375827951=223 ms)                                             &lt;br /&gt;5402: Zn (1254375844116-1254375828175=15941 ms)                                          &lt;br /&gt;5404: Ca (1254375845806-1254375844117=1689 ms)                                           &lt;br /&gt;5438: HO (1254375846125-1254375845836=289 ms)                                            &lt;br /&gt;5538: CH3 (1254375847891-1254375846233=1658 ms)                                          &lt;br /&gt;5548: Ca (1254375861972-1254375847928=14044 ms)                                          &lt;br /&gt;5560: H2N (1254375866398-1254375861980=4418 ms)                                          &lt;br /&gt;5693: C10O6 (1254375867526-1254375866499=1027 ms)                                        &lt;br /&gt;5814: O7P2 (1254375910579-1254375867608=42971 ms)                                        &lt;br /&gt;5869: C2NOR2 (1254375914124-1254375910633=3491 ms)                                       &lt;br /&gt;5871: C3NOSR2 (1254375914574-1254375914161=413 ms)                                       &lt;br /&gt;5873: C6N4OR2 (1254375916764-1254375914575=2189 ms)                                      &lt;br /&gt;5875: C11N2OR2 (1254375917143-1254375916766=377 ms)                                      &lt;br /&gt;5877: C4NO3R2 (1254375917710-1254375917145=565 ms)                                       &lt;br /&gt;5885: C6N2OR2 (1254375919573-1254375917716=1857 ms)                                      &lt;br /&gt;5889: C5NO3R2 (1254375920901-1254375919576=1325 ms)                                      &lt;br /&gt;5895: C6N3OR2 (1254375922306-1254375920904=1402 ms)                                      &lt;br /&gt;5900: C5NO4 (1254375925689-1254375922310=3379 ms)                                        &lt;br /&gt;5902: C5NO4 (1254375930626-1254375925693=4933 ms)                                        &lt;br /&gt;5903: C5NO4 (1254375933920-1254375930626=3294 ms)                                        &lt;br /&gt;5906: C4NO4 (1254375934593-1254375933924=669 ms)                                         &lt;br /&gt;5907: C4NO4 (1254375935274-1254375934594=680 ms)                                         &lt;br /&gt;5909: C4NO4 (1254375936451-1254375935274=1177 ms)                                        &lt;br /&gt;5911: C9NOR2 (1254375936575-1254375936453=122 ms)                                        &lt;br /&gt;5913: C3NO2R2 (1254375940197-1254375936577=3620 ms)                                      &lt;br /&gt;5914: C3NOSeR2 (1254375940307-1254375940197=110 ms)                                      &lt;br /&gt;5920: C6NOR2 (1254375940705-1254375940311=394 ms)                                        &lt;br /&gt;5925: C5N2O2R2 (1254375942662-1254375940737=1925 ms)                                     &lt;br /&gt;5926: C4NO2R2 (1254375943012-1254375942662=350 ms)                                       &lt;br /&gt;5939: C4O4 (1254375943199-1254375943061=138 ms)                                          &lt;br /&gt;5993: C2O2 (1254375943413-1254375943287=126 ms)                                          &lt;br /&gt;6082: Zn (1254375958993-1254375943449=15544 ms)                                          &lt;br /&gt;6453: C10N5O13P3 (1254376116554-1254375959193=157361 ms)                                 &lt;br /&gt;6574: CHO2 (1254376116903-1254376116743=160 ms)                                          &lt;br /&gt;6706: C5O5 (1254376117248-1254376117131=117 ms)                                          &lt;br /&gt;7032: C3O4 (1254376117689-1254376117435=254 ms)                                          &lt;br /&gt;7104: C5NO3R2 (1254376118481-1254376117843=638 ms)                                       &lt;br /&gt;7252: C5NOSR2 (1254376118731-1254376118630=101 ms)                                       &lt;br /&gt;7411: C3O3 (1254376120056-1254376119011=1045 ms)                                         &lt;br /&gt;7465: CR (1254376121752-1254376120212=1540 ms)                                           &lt;br /&gt;7627: CNO (1254376122089-1254376121887=202 ms)                                           &lt;br /&gt;7741: C12ClN4OS (1254376122320-1254376122156=164 ms)                                     &lt;br /&gt;7858: CO2R (1254376122547-1254376122436=111 ms)                                          &lt;br /&gt;7891: Fe4S4 (1254376122844-1254376122585=259 ms)                                         &lt;br /&gt;8178: Mn (1254376124399-1254376122960=1439 ms)                                           &lt;br /&gt;8338: C4NO2 (1254376124643-1254376124480=163 ms)                                         &lt;br /&gt;9219: C4NO6P (1254376127494-1254376124951=2543 ms)                                       &lt;br /&gt;9234: C9N3O14P3 (1254376127605-1254376127498=107 ms)                                     &lt;br /&gt;9235: C10N5O14P3 (1254376132596-1254376127605=4991 ms)                                   &lt;br /&gt;9305: C3NO6P (1254376143823-1254376132629=11194 ms)                                      &lt;br /&gt;9311: C6O6 (1254376144017-1254376143825=192 ms)                                          &lt;br /&gt;9402: C5NOSR (1254376144332-1254376144214=118 ms)                                        &lt;br /&gt;9427: C4O2R2 (1254376144645-1254376144419=226 ms)                                        &lt;br /&gt;10281: O10P3 (1254376146646-1254376144942=1704 ms)                                       &lt;br /&gt;10308: C2OR (1254376148204-1254376146659=1545 ms)                                        &lt;br /&gt;10453: CHOR (1254376148682-1254376148321=361 ms)                                         &lt;br /&gt;10506: HOR (1254376149933-1254376148793=1140 ms)                                         &lt;br /&gt;10589: C21N7O17P3 (1254376150485-1254376150182=303 ms)                                   &lt;br /&gt;10602: C5N2O2R (1254376150727-1254376150503=224 ms)                                      &lt;br /&gt;10604: C5N2OR2 (1254376150946-1254376150728=218 ms)                                      &lt;br /&gt;10614: C5N2O2 (1254376151170-1254376150949=221 ms)                                       &lt;br /&gt;10617: C5N2OR (1254376151389-1254376151171=218 ms)                                       &lt;br /&gt;10641: C3O6P (1254376152229-1254376151404=825 ms)                                        &lt;br /&gt;10656: C16OR (1254376152505-1254376152235=270 ms)                                        &lt;br /&gt;10688: C5O5 (1254376155565-1254376152582=2983 ms)                                        &lt;br /&gt;10690: C3NO5PR2 (1254376166856-1254376155566=11290 ms)                                   &lt;br /&gt;10729: C12N4O7P2S (1254376167090-1254376166889=201 ms)                                   &lt;br /&gt;10748: C3NOR2 (1254376171309-1254376167097=4212 ms)                                      &lt;br /&gt;10756: C34O4 (1254376172041-1254376171320=721 ms)                                        &lt;br /&gt;10760: C9N2O15P3 (1254376172162-1254376172045=117 ms)                                    &lt;br /&gt;10786: OR (1254376172419-1254376172169=250 ms)                                           &lt;br /&gt;10828: C2NO2R (1254376173256-1254376172429=827 ms)                                       &lt;br /&gt;10830: C2NOR (1254376174784-1254376173258=1526 ms)                                       &lt;br /&gt;10883: C9NO2R2 (1254376175110-1254376174827=283 ms)                                      &lt;br /&gt;10899: NR (1254376202420-1254376175114=27306 ms)                                         &lt;br /&gt;10902: C2O (1254376203938-1254376202454=1484 ms)                                         &lt;br /&gt;10914: C9NO5 (1254376204203-1254376203942=261 ms)                                        &lt;br /&gt;11203: C6O6 (1254376204716-1254376204522=194 ms)                                         &lt;br /&gt;11226: C4HO7P (1254376205190-1254376204732=458 ms)                                       &lt;br /&gt;11680: C5NO2SR (1254376205649-1254376205392=257 ms)                                      &lt;br /&gt;11681: C5NOSR (1254376205900-1254376205650=250 ms)                                       &lt;br /&gt;11916: H (1254376206483-1254376206109=374 ms)                                            &lt;br /&gt;12216: C5NOR2 (1254376208374-1254376206750=1624 ms)                                      &lt;br /&gt;12217: C4N2O2R2 (1254376209040-1254376208375=665 ms)                                     &lt;br /&gt;12680: COSR2 (1254376209601-1254376209314=287 ms)                                        &lt;br /&gt;13478: C25HN2O19 (1254376210152-1254376209951=201 ms)                                    &lt;br /&gt;13662: C5O8P (1254376210482-1254376210379=103 ms)                                        &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-171509322634228645?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/171509322634228645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=171509322634228645' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/171509322634228645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/171509322634228645'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/10/processing-chebi-mdl-sd-file-with-cdk.html' title='Processing the ChEBI MDL SD file with the CDK'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17889588.post-8289108368979824442</id><published>2009-09-23T12:45:00.001+01:00</published><updated>2009-09-23T12:46:00.985+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='RCP'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='JUnit'/><title type='text'>Extension point for running JUnit tests in a RCP Application instance?</title><content type='html'>One thing that has been on my wishlist is to be able to run the unit tests we have for &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; from inside a running Bioclipse instance. That is, we have a  Bioclipse Test Suite features on the update site, matching the functional features we have there. Each such test suite would run all &lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; tests we have for that feature.&lt;br /&gt;&lt;br /&gt;The good thing about this is twofold:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;users can verify that their installation is working as intended&lt;/li&gt;&lt;li&gt;the development team can easily run the test suite on foreign systems, without the need to install a fully operational &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; with Bioclipse development workspace&lt;/li&gt;&lt;/ol&gt;Now, the tricky thing is likely the following. How do we get to run all test suites? That is, I don't want to need to have to run the suites for each feature separately. Of course, this is exactly what &lt;a href="http://www.vogella.de/articles/EclipseExtensionPoint/article.html"&gt;extension points&lt;/a&gt; are for.&lt;br /&gt;&lt;br /&gt;So, my question is, did anyone set up an system like this? And, is there an extension point that allows features to plugin additional JUnit test suites into a larger test suite dynamically?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17889588-8289108368979824442?l=chem-bla-ics.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chem-bla-ics.blogspot.com/feeds/8289108368979824442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=17889588&amp;postID=8289108368979824442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8289108368979824442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17889588/posts/default/8289108368979824442'/><link rel='alternate' type='text/html' href='http://chem-bla-ics.blogspot.com/2009/09/extension-point-for-running-junit-tests.html' title='Extension point for running JUnit tests in a RCP Application instance?'/><author><name>Egon Willighagen</name><uri>http://www.blogger.com/profile/07470952136305035540</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='14352604818854944439'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>