<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5324486046611289266</id><updated>2012-01-03T10:33:32.360-08:00</updated><category term='opensource cheminformatics'/><category term='onssolubility'/><category term='SPARQL'/><category term='WTP'/><category term='dbpedia'/><category term='QSAR'/><category term='cloud service'/><category term='javadoc'/><category term='development'/><category term='jena'/><category term='Symyx'/><category term='github'/><category term='regexp'/><category term='kabsch'/><category term='graph'/><category term='export'/><category term='template'/><category term='molfile'/><category term='bioinformatics'/><category term='validation'/><category term='owl'/><category term='stackoverflow'/><category term='chembl'/><category term='tanimoto'/><category term='console'/><category term='inheritance'/><category term='xulrunner'/><category term='xlogp'/><category term='osgi'/><category term='GSoC'/><category term='plugin'/><category term='spring'/><category term='gist'/><category term='Frankfurt'/><category term='cdkws2009'/><category term='jaunty'/><category term='ODOSOS'/><category term='JUnit'/><category term='Bioclipse'/><category term='XML Schema'/><category term='catalog'/><category term='code review'/><category term='scripting'/><category term='visualization'/><category term='Jmol'/><category term='license:bsd'/><category term='workshop'/><category term='wizard'/><category term='RDF'/><category term='io-data'/><category term='Blue Obelisk'/><category term='opensesame'/><category term='semantic web'/><category term='Rich Client Platform'/><category term='OpenJavaDocCheck'/><category term='pubchem'/><category term='XMPP'/><category term='CML'/><category term='XML'/><category term='Web Tools Platform'/><category term='cheminformatics'/><category term='Java'/><category term='JChemPaint'/><category term='topbraid'/><category term='MDL molfile'/><category term='blog'/><category term='CDK'/><category term='Uppsala'/><category term='doccheck'/><category term='editor'/><category term='resource description framework'/><category term='plug-in wizard'/><category term='RCP'/><category term='zest'/><category term='namespace'/><category term='IFile'/><category term='Eclipse'/><category term='summer of code'/><category term='unit testing'/><category term='mozilla'/><category term='Ubuntu'/><category term='target platform'/><category term='GDCh'/><category term='contenttype'/><category term='google'/><category term='problem'/><title type='text'>A Chemical RCP Adventure</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-7717878152989533102</id><published>2011-02-20T08:57:00.001-08:00</published><updated>2011-02-20T08:57:32.096-08:00</updated><title type='text'>This blog is continued elsewhere</title><content type='html'>I decided to concentrate my blogs and have categories for specialist blogs like this one. You can continue about my &lt;i&gt;chemical RCP adventure&lt;/i&gt; &lt;a href="http://chem-bla-ics.blogspot.com/search/label/planeteclipse"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-7717878152989533102?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/7717878152989533102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2011/02/this-blog-is-continued-elsewhere.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7717878152989533102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7717878152989533102'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2011/02/this-blog-is-continued-elsewhere.html' title='This blog is continued elsewhere'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-4496337646399748821</id><published>2010-06-17T08:21:00.000-07:00</published><updated>2010-06-17T08:21:25.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stackoverflow'/><category scheme='http://www.blogger.com/atom/ns#' term='RCP'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>A StackExchange about developing Eclipse RCP applications?</title><content type='html'>Dear Eclipse Community,&lt;br /&gt;&lt;br /&gt;I know there is a tremendous amount of information online, and &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt; full of &lt;a href="http://stackoverflow.com/questions/tagged/eclipse+rcp"&gt;Eclipse-RCP&lt;/a&gt; questions already. But the downside of that is that there is a lot of noise. Would it be an idea to set up a StackExchange dedicated to development of Eclipse RCP-based applications?&lt;br /&gt;&lt;br /&gt;If you like the idea, please contribute to the &lt;a href="http://area51.stackexchange.com/proposals/6710/eclipse-rich-client-platform"&gt;Definition&lt;/a&gt; process. And if you don't, you're more than welcome to express that too :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-4496337646399748821?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/4496337646399748821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/06/stackexchange-about-developing-eclipse.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4496337646399748821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4496337646399748821'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/06/stackexchange-about-developing-eclipse.html' title='A StackExchange about developing Eclipse RCP applications?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-2445178512261061276</id><published>2010-05-10T04:20:00.001-07:00</published><updated>2010-05-10T04:20:56.795-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='code review'/><title type='text'>How to use GitHub for [CDK|Bioclipse] code review</title><content type='html'>Triggered by posts in the past &lt;a href="http://chem-bla-ics.blogspot.com/2010/05/web-20-technologies-in-student.html"&gt;three&lt;/a&gt; &lt;a href="http://chem-bla-ics.blogspot.com/2010/05/github-simplifies-code-review-and.html"&gt;days&lt;/a&gt;, I though about writing up a short tutorial on how to perform code review for existing code on &lt;a href="http://www.github.com/"&gt;GitHub&lt;/a&gt;. Therefore, this applied to &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt; and &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; source code, many but will work for any project hosted in GitHub. Even if it is not, you could consider putting up a copy there yourself. This example will demonstrate the procedure on CDK functionality in Bioclipse in the &lt;a href="http://github.com/egonw/bioclipse.cheminformatics/"&gt;bioclipse.cheminformatics&lt;/a&gt; repository.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Click on the images to get a higher resolution version.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: find the class you want to review&lt;/span&gt;&lt;br /&gt;Use the GitHub web interface to browse your way towards the source code of the class you want to review. For example, the &lt;a href="http://github.com/egonw/bioclipse.cheminformatics/blob/master/plugins/net.bioclipse.cdk.smartsmatching/src/net/bioclipse/cdk/smartsmatching/SmartsMatchingHelper.java"&gt;SmartsMatchingHelper.java&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/S-fhvUjiGlI/AAAAAAAAAzk/NFRja4pP1EY/s1600/codeReview1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 286px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/S-fhvUjiGlI/AAAAAAAAAzk/NFRja4pP1EY/s320/codeReview1.png" alt="" id="BLOGGER_PHOTO_ID_5469588475552602706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2: identify something you like to comment on&lt;/span&gt;&lt;br /&gt;Next step is to perform some code reviewing. For example, we might want to ask something about how parseProperty() works:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/S-fibxeHwAI/AAAAAAAAAzs/1qhmI2d_uNk/s1600/codeReview2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 82px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/S-fibxeHwAI/AAAAAAAAAzs/1qhmI2d_uNk/s320/codeReview2.png" alt="" id="BLOGGER_PHOTO_ID_5469589239228776450" border="0" /&gt;&lt;/a&gt; Now, this page on GitHub does not provide the means to leave comments; instead, you comment on commits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3: find the last commit that touched the line you like to comment on&lt;/span&gt;&lt;br /&gt;Git has a &lt;a href="http://ftp.sunet.se/pub//Linux/kernel.org/software/scm/git/docs/git-blame.html"&gt;blame option&lt;/a&gt; (also called annotate) which will show you for each line who last changed that line. The GitHub web page makes this functionality available with the 'blame' link just above the first line of the source code:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fjlK-BQnI/AAAAAAAAAz0/FbTUuxJ1Sm8/s1600/codeReview3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 223px; height: 78px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fjlK-BQnI/AAAAAAAAAz0/FbTUuxJ1Sm8/s320/codeReview3.png" alt="" id="BLOGGER_PHOTO_ID_5469590500203905650" border="0" /&gt;&lt;/a&gt; This link will lead us to a page with a new column on the left side showing commit hashes, name of the commit author, and the first few characters of the commit message. For example, the &lt;a href="http://github.com/egonw/bioclipse.cheminformatics/blame/master/plugins/net.bioclipse.cdk.smartsmatching/src/net/bioclipse/cdk/smartsmatching/SmartsMatchingHelper.java"&gt;web page&lt;/a&gt; bits relevant to code we want to comment on, looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fj-vUr9XI/AAAAAAAAAz8/AkEUMNoqlUs/s1600/codeReview4.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 284px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fj-vUr9XI/AAAAAAAAAz8/AkEUMNoqlUs/s320/codeReview4.png" alt="" id="BLOGGER_PHOTO_ID_5469590939459384690" border="0" /&gt;&lt;/a&gt; This shows us that commit &lt;a href="http://github.com/egonw/bioclipse.cheminformatics/commit/3ce78ba572e0fbb32536cfb24ae9848297057575"&gt;3ce78ba5&lt;/a&gt; is the one we are interested in:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fl1CqFHeI/AAAAAAAAA0M/FlFsx_XYGnk/s1600/codeReview5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 88px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fl1CqFHeI/AAAAAAAAA0M/FlFsx_XYGnk/s320/codeReview5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469592971873951202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 4: Look up the line again and add a comment&lt;/span&gt;&lt;br /&gt;In the web page with the appropriate commit looked in the previous step, you scroll down to the line you want to comment on. If you hover over that line, a blue comment bubble will show up on the left side:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fm51vqLXI/AAAAAAAAA0U/GVEriJNZ9So/s1600/codeReview6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 109px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S-fm51vqLXI/AAAAAAAAA0U/GVEriJNZ9So/s320/codeReview6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469594153818664306" /&gt;&lt;/a&gt; Clicking that blue comment icon, you get a dialog where you can enter your comment:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/S-fnXiCQhlI/AAAAAAAAA0c/lZ5p1lQgO_0/s1600/codeReview7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 104px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/S-fnXiCQhlI/AAAAAAAAA0c/lZ5p1lQgO_0/s320/codeReview7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469594663924041298" /&gt;&lt;/a&gt; The 'Add Line Note' button confirms and saves your comment:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/S-foMa1OkRI/AAAAAAAAA0k/OBIk2h_I9o8/s1600/codeReview8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 117px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/S-foMa1OkRI/AAAAAAAAA0k/OBIk2h_I9o8/s320/codeReview8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469595572523405586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 5: inform the commiter about your review&lt;/span&gt;&lt;br /&gt;The next step would be to inform the commit author. GitHub actually helps here, and should send a message, like this one:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/S-frfbFEF_I/AAAAAAAAA0s/Sr_PkSFUwsk/s1600/codeReview9.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 52px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S-frfbFEF_I/AAAAAAAAA0s/Sr_PkSFUwsk/s320/codeReview9.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5469599197542225906" /&gt;&lt;/a&gt; But it would certainly not hurt of you filed a bug report or sent an email.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Now, I should only convert this into a screencast...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-2445178512261061276?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/2445178512261061276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/05/how-to-use-github-for-cdkbioclipse-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2445178512261061276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2445178512261061276'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/05/how-to-use-github-for-cdkbioclipse-code.html' title='How to use GitHub for [CDK|Bioclipse] code review'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/S-fhvUjiGlI/AAAAAAAAAzk/NFRja4pP1EY/s72-c/codeReview1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-2591311162951320985</id><published>2010-03-25T06:00:00.000-07:00</published><updated>2010-03-25T06:00:44.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zest'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='opensesame'/><category scheme='http://www.blogger.com/atom/ns#' term='jena'/><category scheme='http://www.blogger.com/atom/ns#' term='topbraid'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><category scheme='http://www.blogger.com/atom/ns#' term='owl'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><category scheme='http://www.blogger.com/atom/ns#' term='resource description framework'/><title type='text'>A GSoC project idea around the Resource Description Framework</title><content type='html'>I just added an entry to the &lt;a href="http://wiki.eclipse.org/Google_Summer_of_Code_2010_Ideas"&gt;Google Summer of Code 2010 Ideas&lt;/a&gt; wiki page:&lt;ul&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Resource_Description_Framework"&gt;Resource Description Framework&lt;/a&gt; (RDF) is ~10 year old W3C standard. Uptake is taking off now, and it would be nice to see a Eclipse project like the Web Tools Package to provide basic RDF related functionality. This would include bundles for RDF libraries (Jena or OpenSesame) and editors for Notation3 and RDF/XML, and perhaps support for a catalog of common ontologies (RDF, RDFS, OWL, DublinCore, FOAF, ...). It could also include a Zest-based RDF graph viewer, SPARQL query editor, etc. There is existing code, for example, developed by the &lt;a href="http://chem-bla-ics.blogspot.com/2010/03/rdf-jena-bioclipse-eclipse-zest-2-icons.html"&gt;Bioclipse team using Jena&lt;/a&gt;, or the older &lt;a href="http://www.openrdf.org/forum/mvnforum/viewthread?thread=1106"&gt;Tripclipse&lt;/a&gt;. There also exist commercial offerings stressing the relevance of the RDF platform, such as &lt;a href="http://www.mkbergman.com/192/free-rdf-and-owl-editors-for-eclipse-developers/"&gt;Semantic Toolkit&lt;/a&gt; and the popular &lt;a href="http://www.eclipseplugincentral.com/displayarticle498.html"&gt;TopBraid&lt;/a&gt;.&lt;/i&gt;&lt;/ul&gt;For Bioclipse we have set up bundles for Jena in the &lt;a href="http://github.com/egonw/bioclipse.rdf"&gt;bioclipse.rdf&lt;/a&gt; git repository, but I am sure they need some improvement. Yet, they might serve as a starting point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-2591311162951320985?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/2591311162951320985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/gsoc-project-idea-around-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2591311162951320985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2591311162951320985'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/gsoc-project-idea-around-resource.html' title='A GSoC project idea around the Resource Description Framework'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-1499459985786878067</id><published>2010-03-16T07:08:00.000-07:00</published><updated>2010-03-16T07:08:10.014-07:00</updated><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='IFile'/><title type='text'>IFile.getContentDescription() returns null on files from the workbench. Advice?</title><content type='html'>When &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; reads filed its workspace, it used &lt;i&gt;IFile.getContentDescription()&lt;/i&gt; in version 2.0 and 2.2. However, I now note that unit tests that use this method fail where they used to work in earlier versions. Instead of returning something, I get a &lt;i&gt;null&lt;/i&gt;. An example unit test looks like:&lt;pre&gt;  propane = cdk.loadMolecule(path);&lt;br /&gt;  Assert.assertNotNull(propane.getResource());&lt;br /&gt;  Assert.assertTrue(propane.getResource() instanceof IFile);&lt;br /&gt;  IFile resource = (IFile)propane.getResource();&lt;br /&gt;  Assert.assertNotNull(resource.getContentDescription());&lt;br /&gt;  IContentType type = resource.getContentDescription().getContentType();&lt;br /&gt;  Assert.assertNotNull(type);&lt;br /&gt;  IChemFormat format = cdk.determineFormat(type);&lt;br /&gt;  Assert.assertNotNull(format);&lt;br /&gt;  Assert.assertEquals(MDLV2000Format.getInstance(), format);&lt;br /&gt;&lt;/pre&gt;This test uses the &lt;i&gt;getContentDescription()&lt;/i&gt; to get a content description and converts it to a &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; library specific format type.&lt;br /&gt;&lt;br /&gt;The JavaDoc lists this methods as more efficient alternative:&lt;ul&gt;&lt;i&gt;Calling this method produces a similar effect as calling getDescriptionFor(getContents(), getName(), IContentDescription.ALL) on IContentTypeManager, but provides better opportunities for improved performance.&lt;/i&gt;&lt;/ul&gt;&lt;br /&gt;As it used to work, I am considering the option it is a bug. But at the same time, maybe best practices have change? Should I keep using this method, explore the cause, perhaps file a bug report, or start using &lt;i&gt;getDescriptionFor(getContents(), getName(), IContentDescription.ALL)&lt;/i&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-1499459985786878067?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/1499459985786878067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/ifilegetcontentdescription-returns-null.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1499459985786878067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1499459985786878067'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/ifilegetcontentdescription-returns-null.html' title='IFile.getContentDescription() returns null on files from the workbench. Advice?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-4360144007761840238</id><published>2010-03-15T04:50:00.001-07:00</published><updated>2010-03-15T04:50:24.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QSAR'/><category scheme='http://www.blogger.com/atom/ns#' term='chembl'/><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='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>RDF-powered QSAR wizard: SPARQL end points providing wizard content</title><content type='html'>As you &lt;a href="http://chem-bla-ics.blogspot.com/2010/03/rdf-jena-bioclipse-eclipse-zest-2-icons.html"&gt;know&lt;/a&gt; from my blog, one of the things I am working on is to push RDF functionality in &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt;, as I believe it to be the missing link between &lt;a href="http://chem-bla-ics.blogspot.com/2008/03/todo-april-2nd-defend-my-phd-work.html"&gt;molecular chemometrics&lt;/a&gt; and literature, databases, and other non-numerical information sources.&lt;br /&gt;&lt;br /&gt;As part of the submission for the &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/swat4ls-wrapping-up-1.html"&gt;SWAT4LS&lt;/a&gt; special issue in the new &lt;a href="http://chem-bla-ics.blogspot.com/2008/03/todo-april-2nd-defend-my-phd-work.html"&gt;Journal of Biomedical Semantics&lt;/a&gt;, &lt;a href="http://bioclipse.blogspot.com/"&gt;Ola&lt;/a&gt; hacked up a cool wizard that sets up a new &lt;a href="http://wiki.bioclipse.net/index.php?title=QSAR_Project_with_automated_builds"&gt;QSAR Project&lt;/a&gt; by downloading data directly from our &lt;a href="http://chem-bla-ics.blogspot.com/2010/02/chembl-rdf-1sparql-end-point.html"&gt;RDF node for the chEMBL data&lt;/a&gt; using SPARQL. The paper is based on the &lt;a href="http://chem-bla-ics.blogspot.com/2009/11/swat4ls-linking-open-drug-data-to.html"&gt;SWAT4LS talk&lt;/a&gt; I gave, and the &lt;a href="http://www.citeulike.org/user/egonw/article/6582022"&gt;proceedings paper&lt;/a&gt; that recently appeared. But with more cool stuff, such as this &lt;a href="http://chem-bla-ics.blogspot.com/2010/03/rdf-jena-bioclipse-eclipse-zest-2-icons.html"&gt;cool RDF graph&lt;/a&gt; browser that allows you to open up molecules from the RDF graph in a JChemPaint editor.&lt;br /&gt;&lt;br /&gt;Well, this really nice New QSAR Project wizard was cool enough to trigger a I-want-more reaction, so I just had to hack it up with some additional SPARQL functionality. So, the next version does not only use RDF and SPARQL to aggregate the QSAR data set, it also uses SPARQL to make the wizard interactive. While the user is typing a target ID, the wizard will check the SPARQL end point in the background and download the target's type, title and organism, as well as update the list of activities the user can select depending on what the chEMBL database has for that target:&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/S54dE4UCYiI/AAAAAAAAAx0/Hp7S0L0KZRk/s1600-h/chemblQSARwizard.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://2.bp.blogspot.com/_5vhaOf2_53I/S54dE4UCYiI/AAAAAAAAAx0/Hp7S0L0KZRk/s400/chemblQSARwizard.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;The actual code base is pretty small, and that's what happens when you mash up the right technologies :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-4360144007761840238?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/4360144007761840238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/rdf-powered-qsar-wizard-sparql-end.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4360144007761840238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4360144007761840238'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/rdf-powered-qsar-wizard-sparql-end.html' title='RDF-powered QSAR wizard: SPARQL end points providing wizard content'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5vhaOf2_53I/S54dE4UCYiI/AAAAAAAAAx0/Hp7S0L0KZRk/s72-c/chemblQSARwizard.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-2704619986022213559</id><published>2010-03-04T11:46:00.001-08:00</published><updated>2010-03-04T11:46:14.941-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zest'/><category scheme='http://www.blogger.com/atom/ns#' term='JChemPaint'/><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='RDF'/><title type='text'>RDF, Jena, Bioclipse, Eclipse, Zest #2: icons and an extension point</title><content type='html'>&lt;a href="http://se.linkedin.com/in/jonathanalvarssson"&gt;Jonathan&lt;/a&gt; worked this week on new features for the &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; RDF editor (see &lt;a href="http://chem-bla-ics.blogspot.com/2010/02/rdf-jena-bioclipse-eclipse-zest-mashups.html"&gt;these&lt;/a&gt; &lt;a href="http://chem-bla-ics.blogspot.com/2010/02/bioclipse-understands-ontologies-note.html"&gt;two&lt;/a&gt; earlier items). This version still does not edit, but only display using &lt;a href="http://www.eclipse.org/mylyn/zest.php"&gt;Zest&lt;/a&gt;. Jonathan created for me an extension point so that anyone can make the editor aware of domain objects, by simply registering the extension implementation along with the &lt;i&gt;rdf:Class&lt;/i&gt; URI of the &lt;i&gt;rdf:type&lt;/i&gt; of an object. This fixes the problem of having to hardcode dependencies of the RDF editor on all the domain code, as was the case &lt;a href="http://chem-bla-ics.blogspot.com/2010/02/bioclipse-understands-ontologies-note.html"&gt;earlier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For example, the cheminformatics &lt;a href="http://wiki.bioclipse.net/index.php?title=Molecule"&gt;IMolecule&lt;/a&gt; object is now linked to the &lt;i&gt;rdf:type&lt;/i&gt; &amp;lt;http://www.bioclipse.net/structuredb/#Molecule&amp;gt;:&lt;br /&gt;&lt;pre&gt;&amp;lt;extension point="net.bioclipse.rdf.rdf2bioobjectfactory"&amp;gt;&lt;br /&gt;  &amp;lt;Factory&lt;br /&gt;    instance="net.bioclipse.rdf.ui.RDFToCDKMoleculeFactory"&lt;br /&gt;    uri="http://www.bioclipse.net/structuredb/#Molecule" &amp;gt;&lt;br /&gt;  &amp;lt;/Factory&amp;gt;&lt;br /&gt;&amp;lt;/extension&amp;gt;&lt;br /&gt;&lt;/pre&gt;The API for this factory looks like:&lt;br /&gt;&lt;pre&gt;public IBioObject rdfToBioObject( Model model, Resource res );&lt;br /&gt;public ImageDescriptor getImageDescriptor();&lt;/pre&gt;This is very much tied into the Jena data model, so not entirely clean, but has to do for now. The first method converts RDF content into a Bioclipse IBioObject, such as an IMolecule (see this &lt;a href="http://wiki.bioclipse.net/index.php?title=Bioclipse2_core_object_model"&gt;list of currently supported objects&lt;/a&gt;). The second method returns an icon, which makes the editor more visually pleasing, and provides a nice way to see when you can double click the RDF node to have it open in an domain specific editor:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/S5ANNIZmiDI/AAAAAAAAAxk/MwwHyR6Rp0M/s1600-h/rdfEditorIcons.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/_5vhaOf2_53I/S5ANNIZmiDI/AAAAAAAAAxk/MwwHyR6Rp0M/s400/rdfEditorIcons.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;For example, double clicking the &lt;i&gt;ron:mol2&lt;/i&gt; node, would open up a JChemPaint editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-2704619986022213559?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/2704619986022213559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/rdf-jena-bioclipse-eclipse-zest-2-icons.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2704619986022213559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2704619986022213559'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/03/rdf-jena-bioclipse-eclipse-zest-2-icons.html' title='RDF, Jena, Bioclipse, Eclipse, Zest #2: icons and an extension point'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/S5ANNIZmiDI/AAAAAAAAAxk/MwwHyR6Rp0M/s72-c/rdfEditorIcons.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-651501288226041470</id><published>2010-02-07T13:32:00.001-08:00</published><updated>2010-02-07T13:32:47.902-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zest'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><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='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>RDF, Jena, Bioclipse, Eclipse, Zest: Mashups</title><content type='html'>Quite a while a go, I blogged about &lt;a href="http://www.eclipse.org/gef/zest/"&gt;Zest&lt;/a&gt; in &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; showing &lt;a href="http://chem-bla-ics.blogspot.com/2008/11/solubility-data-in-bioclipse-1.html"&gt;a bit of ONS Solubility data&lt;/a&gt;. I could not follow up on that until now, as I had yet to do a lot of &lt;a href="http://en.wikipedia.org/wiki/Resource_Description_Framework"&gt;RDF&lt;/a&gt; work in Bioclipse, so the screenshot back then was kind of a &lt;a href="http://en.wikipedia.org/wiki/Mockup"&gt;mockup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Things are different now, and the Bioclipse-RDF functionality (using &lt;a href="http://jena.sourceforge.net/"&gt;Jena&lt;/a&gt;) is released in &lt;a href="http://bioclipse.blogspot.com/2010/01/bioclipse-22-released.html"&gt;Bioclipse 2.2&lt;/a&gt; (see &lt;a href="http://chem-bla-ics.blogspot.com/2010/01/semantic-web-features-in-bioclipse-22.html"&gt;Semantic Web features in Bioclipse 2.2&lt;/a&gt;), and I got around to writing the graphical goodies for the following papers. Not submitted yet, but here's the screenshot showing a N3 file opened with a Zest-powered editor (read-only) and a plain text editor:&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/S28w18im1kI/AAAAAAAAAwk/Labu2625TWY/s1600-h/jenaZestMashup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="470" src="http://3.bp.blogspot.com/_5vhaOf2_53I/S28w18im1kI/AAAAAAAAAwk/Labu2625TWY/s640/jenaZestMashup.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-651501288226041470?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/651501288226041470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/rdf-jena-bioclipse-eclipse-zest-mashups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/651501288226041470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/651501288226041470'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/rdf-jena-bioclipse-eclipse-zest-mashups.html' title='RDF, Jena, Bioclipse, Eclipse, Zest: Mashups'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/S28w18im1kI/AAAAAAAAAwk/Labu2625TWY/s72-c/jenaZestMashup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-4066528975717712726</id><published>2010-02-03T00:57:00.001-08:00</published><updated>2010-02-03T00:57:19.483-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='bioinformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic web'/><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='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Semantic Web features in Bioclipse 2.2</title><content type='html'>&lt;a href="http://www.blogger.com/profile/10379047094508592338"&gt;Ola&lt;/a&gt; is releasing &lt;a href="http://bioclipse.net/"&gt;Bioclipse&lt;/a&gt; &lt;a href="http://sourceforge.net/projects/bioclipse/files/bioclipse2/bioclipse2.2.0/"&gt;2.2.0&lt;/a&gt; today, and asked me to show case the semantic web functionality in Bioclipse. I realized that I do not have a nice page showing the semantic web overview. But I did blog a lot about RDF functionality, so here's a list of pointers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&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;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/09/bioclipse-rdf-and-defeasible-reasoning.html"&gt;Bioclipse, RDF and defeasible reasoning&lt;/a&gt; (see also &lt;a href="http://saml.rilspace.com/"&gt;Samuel's blog&lt;/a&gt;)&lt;br /&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;br /&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;br /&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;br /&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;br /&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;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/05/me-is-having-bioclipsexmpprdf-fun.html"&gt;/me is having Bioclipse/XMPP/RDF fun&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Or check this screenshot from &lt;a href="http://egonw.posterous.com/molecules-in-dbpedia-visualized-with-bioclips"&gt;a Posterous post about a MyExperiment workflow&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/egonw/9sZH4xkMWRrqXKmQctY2okiVtBhMhrwqmjUzlc06s23QTeIHeOUhW8usDJGx/dbPediaMolTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://posterous.com/getfile/files.posterous.com/egonw/9sZH4xkMWRrqXKmQctY2okiVtBhMhrwqmjUzlc06s23QTeIHeOUhW8usDJGx/dbPediaMolTable.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;One thing I have not blogged about yet (I think), is that the Bioclipse RDF manager also understands RDFa now. Well, sort of... it relies on a webservice, but this is what the script looks like:&lt;br /&gt;&lt;pre&gt;model = rdf.createStore()&lt;br /&gt;rdf.importRDFa(model, "http://egonw.github.com/")&lt;br /&gt;rdf.saveRDFN3(model, "/Virtual/egonw.n3")&lt;br /&gt;&lt;/pre&gt;With support of SPARQL end points, and reading RDF from web resources directly (RDF/XML, N3, RDFa), Bioclipse is ready for the chemical semantic web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-4066528975717712726?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/4066528975717712726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/semantic-web-features-in-bioclipse-22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4066528975717712726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4066528975717712726'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/semantic-web-features-in-bioclipse-22.html' title='Semantic Web features in Bioclipse 2.2'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-8317448300198760603</id><published>2010-02-01T02:39:00.001-08:00</published><updated>2010-02-01T02:39:37.049-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='molfile'/><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='MDL molfile'/><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='validation'/><category scheme='http://www.blogger.com/atom/ns#' term='Symyx'/><title type='text'>Validating MDL SD files and Symyx molfiles with the CDK</title><content type='html'>&lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; 2.0 introduced a new, powerful &lt;a href="http://bioclipse.blogspot.com/2009/07/working-with-large-sdfiles-in-bioclipse.html"&gt;molecular table support&lt;/a&gt;, and we have been eager to test that on large SD files. A recent &lt;a href="http://www.blogger.com/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; failed to open, and eyes were immediately at the &lt;a href="http://cdk.sf.net/"&gt;CDK&lt;/a&gt;, which is the cheminformatics library used in Bioclipse.&lt;br /&gt;&lt;br /&gt;After careful investigations, it turned out that the ChEBI file contained a few entries which were not MDL molfiles, but queries for the ISISBase system. Those cannot be read by the CDK &lt;a href="http://pele.farmbio.uu.se/nightly/cdk-javadoc-1.3.1.git/org/openscience/cdk/io/MDLV2000Reader.html"&gt;MDLV2000Reader&lt;/a&gt;. However, it crashed on it, instead of failing more savely. That's not nice, and fixed. But, the problem is rather recurrent, and the reason why I like &lt;a href="http://en.wikipedia.org/wiki/Chemical_Markup_Language"&gt;CML&lt;/a&gt; so much: invalid input. CML, based on XML, has several general validation approaches that give in-depth error messages of what is wrong with the file.&lt;br /&gt;&lt;br /&gt;So, I &lt;a href="http://blueobelisk.stackexchange.com/questions/125/how-do-i-validate-if-my-mdl-sd-file-is-correct"&gt;asked on the BOx&lt;/a&gt; what the Open Source cheminformatics community had to offer for this. Turns out that several tools find problems in the files, but none could report where the error occurred. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Validation&lt;/b&gt;&lt;br /&gt;Now, some time ago, I played with two reading modes, RELAXED and STRICT, as faulty files is core cheminformatics material, and the software is blamed if the QSAR model resulting from it is not good (seriously). Anyways, a small API change in the CDK would make a validating MDLV2000Reader quite a step closer, but I had not followed up on it until last Friday where I patch I was reviewing caused 6 new unit test fails. The new fails were caused by a assumption which turned out the be false in the test files used in those 6 unit tests.&lt;br /&gt;&lt;br /&gt;The MDL (or Symyx) &lt;a href="http://www.google.se/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=ctfile.pdf"&gt;molfile specifications&lt;/a&gt; (not an Open Specification) defines an atom block line as:&lt;br /&gt;&lt;pre&gt;xxxxx.xxxxyyyyy.yyyyzzzzz.zzzz aaaddcccssshhhbbbvvvHHHrrriiimmmnnneee&lt;/pre&gt;but does not specify which fields are optional. And indeed, many tools around save MDL molfiles with one or more fields missing, leading to shorter than expected line lengths. And, as you might have expected, the failing unit tests had files with lines missing the field introduced by the patch, causing Exceptions being thrown around. &lt;i&gt;I have yet to make up my mind of the lack of those fields is a problem in the file, or allowed by the format.&lt;/i&gt; In either case, the information from that field is not available, and the reader could safely ignore the missing information. Per user demand.&lt;br /&gt;&lt;br /&gt;Now, personally, I rather send the file back to the user with a proper error report and show them what is wrong with the file. Or better, provide them with a MDL V2000 text editor (e.g. in Bioclipse) which would graphically highlight errors, as many of us are used to with Eclipse:&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/S2R0oupwTEI/AAAAAAAAAvg/i63E6TSi-_Y/s1600-h/errorReporting.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://1.bp.blogspot.com/_5vhaOf2_53I/S2R0oupwTEI/AAAAAAAAAvg/i63E6TSi-_Y/s400/errorReporting.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;CDK Patch&lt;/b&gt;&lt;br /&gt;So, I am hacking up a patch for CDK master to allow error reporting by &lt;a href="http://pele.farmbio.uu.se/nightly-1.2.3/cdk-javadoc-1.2.4/org/openscience/cdk/io/IChemObjectReader.html"&gt;IChemObjectReaders&lt;/a&gt;. The initial version of the API update and use in the MDLV2000Reader are available as &lt;a href="http://gist.github.com/290659"&gt;Gist 290659&lt;/a&gt;. They are not final yet, as I realized when making the above screenshot, that merely &lt;i&gt;int col&lt;/i&gt; is not enough, and that I actually need the &lt;i&gt;startCol&lt;/i&gt; and &lt;i&gt;endCol&lt;/i&gt; positions instead. Also, there are only an error level at this moment, and no warning level as in the screenshot.&lt;br /&gt;&lt;br /&gt;That said, I created a jar (&lt;i&gt;ant dist-large&lt;/i&gt;) and saved it as mdlCheck.jar, and wrote a bit of Groovy:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/290661.js?file=mdlCheck.groovy"&gt;&lt;/script&gt; which defines a class implementing the new &lt;i&gt;IChemObjectReaderErrorHandler&lt;/i&gt; and then reads a MDL molfile. And the output looks like it fulfills my needs:&lt;pre&gt;$ CLASSPATH=mdlCheck.jar groovy mdlCheck.groovy src/test/data/mdl/&lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=blob;f=src/test/data/mdl/test6.sdf;h=7f738c30899e6b6f13d57ff920be4f6f7342ede9;hb=HEAD"&gt;test6.sdf&lt;/a&gt; &lt;br /&gt;location: 5, 35: Could not parse mass difference field.                                                                          &lt;br /&gt;  -&gt; For input string: ""                                                                                                        &lt;br /&gt;location: 6, 35: Could not parse mass difference field.                                                                          &lt;br /&gt;  -&gt; For input string: ""                                                                                                        &lt;br /&gt;&lt;/pre&gt;&lt;i&gt;Note to myself, that atom block does not like like a MDL molfile atom block at all!&lt;/i&gt; Every second line outputs the Exception passed to the error handler. I have to say, those messages are rather cryptic, but resulting from a NumberFormatException, if not mistaken.&lt;br /&gt;&lt;br /&gt;Or, another common found issue (using D and T as element symbols):&lt;pre&gt;$ CLASSPATH=mdlCheck.jar groovy mdlCheck.groovy src/test/data/mdl/&lt;a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=blob;f=src/test/data/mdl/hisotopes.mol;h=ff0c5aeaea88818938630af632b730d987ed9f2d;hb=HEAD"&gt;hisotopes.mol&lt;/a&gt;&lt;br /&gt;location: 6, 32: Invalid element type. Must be an existing element, or one in: A, Q, L, LP, *.&lt;br /&gt;location: 7, 32: Invalid element type. Must be an existing element, or one in: A, Q, L, LP, *.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enough for now... dinner time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-8317448300198760603?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/8317448300198760603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/validating-mdl-sd-files-and-symyx.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8317448300198760603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8317448300198760603'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2010/02/validating-mdl-sd-files-and-symyx.html' title='Validating MDL SD files and Symyx molfiles with the CDK'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/S2R0oupwTEI/AAAAAAAAAvg/i63E6TSi-_Y/s72-c/errorReporting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-6280251066920376260</id><published>2009-12-16T01:06:00.000-08:00</published><updated>2009-12-16T01:06:16.563-08:00</updated><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='target platform'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Target Platform to have $HOME/.eclipse/$ECLIPSE/plugins ??</title><content type='html'>&lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; uses a custom target-platform... but since I am using the Eclipse 3.5 from &lt;a href="http://www.ubuntu.com"&gt;Ubuntu&lt;/a&gt; now, extra features I download (GEF, BIRT, EMF, ...) end up in $HOME... so, I need to add a folder to the target-platform.target file... but I cannot find the variable for $HOME/.eclipse/org.eclipse.platform_3_foo_bar/plugins, such the files has things like @{eclipse_home}/plugins too...&lt;br /&gt;&lt;br /&gt;Right now I have the below, but that clearly is not the solution:&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;&lt;br /&gt;&amp;lt;?pde version="3.5"?&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="Spring-osgi-1.0.2"&gt;&lt;br /&gt;  &amp;lt;locations&gt;&lt;br /&gt;    &amp;lt;location path="${eclipse_home}" type="Profile"/&gt;&lt;br /&gt;    &amp;lt;location path="${project_loc}/spring-osgi-1.0.2/dist" type="Directory"/&gt;&lt;br /&gt;    &amp;lt;location path="${project_loc}/libs" type="Directory"/&gt;&lt;br /&gt;    &amp;lt;location path="${project_loc}/spring-osgi-1.0.2/lib" type="Directory"/&gt;&lt;br /&gt;    &amp;lt;location path="${eclipse_home}/plugins" type="Directory"/&gt;&lt;br /&gt;    &amp;lt;location path="/home/egonw/.eclipse/org.eclipse.platform_3.5.0_155965261/plugins"&lt;br /&gt;                 type="Directory"/&gt;&lt;br /&gt;  &amp;lt;/locations&gt;&lt;br /&gt;&amp;lt;/target&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What is the @{variable} I should use for user-based plugin folders?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-6280251066920376260?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/6280251066920376260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/12/target-platform-to-have.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6280251066920376260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6280251066920376260'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/12/target-platform-to-have.html' title='Target Platform to have $HOME/.eclipse/$ECLIPSE/plugins ??'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-3672014681537577151</id><published>2009-11-07T02:02:00.000-08:00</published><updated>2009-11-07T02:08:16.012-08: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='javadoc'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenJavaDocCheck'/><category scheme='http://www.blogger.com/atom/ns#' term='doccheck'/><title type='text'>Call for Collaboration: JavaDoc validation with OpenJavaDocCheck</title><content type='html'>Dear all,&lt;br /&gt;&lt;br /&gt;while it is still very much in progress, I have made good progress with writing a new BSD-licensed replacement for &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. The DocCheck's never really satisfied me, and the most recent version is ancient. 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;&lt;a href="http://pmd.sf.net/"&gt;PMD&lt;/a&gt; is given nice, simple overviews instead. It provides me with a quick overview of what is wrong with the &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; JavaDoc, 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;A few weeks ago, 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/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 the 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/5324486046611289266-3672014681537577151?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/3672014681537577151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/11/call-for-collaboration-javadoc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3672014681537577151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3672014681537577151'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/11/call-for-collaboration-javadoc.html' title='Call for Collaboration: JavaDoc validation with OpenJavaDocCheck'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></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>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-1508559695880597603</id><published>2009-11-04T03:23:00.001-08:00</published><updated>2009-11-04T03:23:31.155-08: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://1.bp.blogspot.com/_5vhaOf2_53I/SvFc27G20II/AAAAAAAAAsM/r4pKRCIZsw0/s1600-h/bioclipseKabsch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SvFc27G20II/AAAAAAAAAsM/r4pKRCIZsw0/s320/bioclipseKabsch.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://3.bp.blogspot.com/_5vhaOf2_53I/SvFjSjkhi5I/AAAAAAAAAsc/cv4_Ru3X6HU/s1600-h/bioclipseTanimoto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SvFjSjkhi5I/AAAAAAAAAsc/cv4_Ru3X6HU/s320/bioclipseTanimoto.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/5324486046611289266-1508559695880597603?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/1508559695880597603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/11/new-bioclipse-features-kabsch-alignment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1508559695880597603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1508559695880597603'/><link rel='alternate' type='text/html' href='http://chemicalrcp.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><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/SvFc27G20II/AAAAAAAAAsM/r4pKRCIZsw0/s72-c/bioclipseKabsch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-4453678587026264592</id><published>2009-09-23T04:44:00.000-07:00</published><updated>2009-09-23T04:45:54.278-07: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/5324486046611289266-4453678587026264592?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/4453678587026264592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/09/extension-point-for-running-junit-tests.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4453678587026264592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/4453678587026264592'/><link rel='alternate' type='text/html' href='http://chemicalrcp.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><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-2736558341550710293</id><published>2009-09-07T23:59:00.001-07:00</published><updated>2009-09-10T14:48:49.694-07:00</updated><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='template'/><category scheme='http://www.blogger.com/atom/ns#' term='plug-in wizard'/><title type='text'>New Plug-in Wizard template: Can I add Import-Package programmatically?</title><content type='html'>Dear Planet Eclipse readers, please take notice of my problem with adding an &lt;span style="font-style: italic;"&gt;Import-Package&lt;/span&gt; to the MANIFEST.MF using the Plug-in Wizard templating mechanism. Any suggestions and pointers very much appreciated! I'd really like to remove step 7 from the following tutorial:&lt;br /&gt;&lt;br /&gt;Last Friday, the Bioclipse 2.1 development series moved to &lt;a href="http://update.eclipse.org/downloads/drops/R-3.5-200906111540/eclipse-news-all.html"&gt;Eclipse 3.5&lt;/a&gt;, so I had to update the &lt;a href="http://wiki.bioclipse.net/index.php?title=Bioclipse_SDK"&gt;Bioclipse SDK&lt;/a&gt; too, which &lt;a href="http://chem-bla-ics.blogspot.com/2009/08/making-bioclipse-development-easier-new.html"&gt;we developed earlier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With a new Eclipse version also comes new screenshots to talk you through the process of setting up a new &lt;a href="http://wiki.bioclipse.net/index.php?title=How_to_make_a_manager_2"&gt;Bioclipse manager&lt;/a&gt; plugin.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt;&lt;br /&gt;Right click in your workspace navigator, and choose &lt;span style="font-style: italic;"&gt;New&lt;/span&gt; -&amp;gt; &lt;span style="font-style: italic;"&gt;Project&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/SqX-BGuZQII/AAAAAAAAApQ/sodFzTg-W8g/s1600-h/newBCProject.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378984624902455426" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SqX-BGuZQII/AAAAAAAAApQ/sodFzTg-W8g/s400/newBCProject.png" style="cursor: pointer; display: block; height: 236px; margin: 0px auto 10px; text-align: center; width: 244px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;&lt;br /&gt;And select to create a new &lt;span style="font-style: italic;"&gt;Plug-in Project&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/SqX-X7vWvtI/AAAAAAAAApY/_dxL7TX4e4w/s1600-h/newBCProject1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378985017090686674" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SqX-X7vWvtI/AAAAAAAAApY/_dxL7TX4e4w/s400/newBCProject1.png" style="cursor: pointer; display: block; height: 365px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3&lt;/span&gt;&lt;br /&gt;Give a project name, such as &lt;span style="font-style: italic;"&gt;net.bioclipse.xml&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_5vhaOf2_53I/SqX-pRB6J8I/AAAAAAAAApg/9IxCrl4qTgo/s1600-h/newBCProject2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378985314863425474" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SqX-pRB6J8I/AAAAAAAAApg/9IxCrl4qTgo/s400/newBCProject2.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 338px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4&lt;/span&gt;&lt;br /&gt;Tune the &lt;span style="font-style: italic;"&gt;ID&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Version&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Name&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;Provider&lt;/span&gt; to your liking:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5vhaOf2_53I/SqX-59Nl4VI/AAAAAAAAApo/eay3xamtEpE/s1600-h/newBCProject3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378985601601495378" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SqX-59Nl4VI/AAAAAAAAApo/eay3xamtEpE/s400/newBCProject3.png" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 338px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5&lt;/span&gt;&lt;br /&gt;Then select &lt;span style="font-style: italic;"&gt;Bioclipse Manager&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_5vhaOf2_53I/SqX_SzeNadI/AAAAAAAAApw/RnUC2Ti5hj4/s1600-h/newBCProject4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378986028483570130" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SqX_SzeNadI/AAAAAAAAApw/RnUC2Ti5hj4/s400/newBCProject4.png" style="cursor: pointer; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6&lt;/span&gt;&lt;br /&gt;The next wizard page is specific the the Bioclipse manager, and asks a manager namespace, which will be used as prefix in the JavaScript Console. For example, if I make the namespace &lt;span style="font-style: italic;"&gt;xml&lt;/span&gt;, then I will type &lt;span style="font-style: italic;"&gt;xml.someMethod()&lt;/span&gt; inside the JavaScript. The default manager name is typically OK by default:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_5vhaOf2_53I/SqX_i9fv7RI/AAAAAAAAAp4/EJxTgosgYhM/s1600-h/newBCProject5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378986306052287762" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SqX_i9fv7RI/AAAAAAAAAp4/EJxTgosgYhM/s400/newBCProject5.png" style="cursor: pointer; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt; Then click Finish and let Eclipse set up the new project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 7&lt;/span&gt;&lt;br /&gt;Because I have not figured out yet how to add &lt;span style="font-style: italic;"&gt;Import-Package&lt;/span&gt; to the &lt;span style="font-style: italic;"&gt;MANIFEST.MF&lt;/span&gt; programmatically, you will have to do this manually. Add the last line of the next screenshot to the MANIFEST.MF of your new plugin:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_5vhaOf2_53I/SqYAivFO92I/AAAAAAAAAqI/Y03-YY9ZfT4/s1600-h/newBCProject6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5378987401694607202" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SqYAivFO92I/AAAAAAAAAqI/Y03-YY9ZfT4/s400/newBCProject6.png" style="cursor: pointer; display: block; height: 287px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: I found a hack to add the &lt;i&gt;Import-Package&lt;/i&gt; programmatically, by overwriting the &lt;i&gt;execute(IProject project, IPluginModelBase model, IProgressMonitor monitor)&lt;/i&gt; in the Template class.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-2736558341550710293?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/2736558341550710293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/09/new-plug-in-wizard-template-can-i-add.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2736558341550710293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2736558341550710293'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/09/new-plug-in-wizard-template-can-i-add.html' title='New Plug-in Wizard template: Can I add Import-Package programmatically?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/SqX-BGuZQII/AAAAAAAAApQ/sodFzTg-W8g/s72-c/newBCProject.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-6127915493577673051</id><published>2009-08-29T01:41:00.001-07:00</published><updated>2009-08-29T01:41:58.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ODOSOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='GDCh'/><category scheme='http://www.blogger.com/atom/ns#' term='Frankfurt'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Blue Obelisk'/><title type='text'>Reminder: my talk in Frankfurt on Monday; Want to meet up?</title><content type='html'>Quick and short reminder about my &lt;a href="http://chem-bla-ics.blogspot.com/2009/04/open-knowledge-reproducibility-in.html"&gt;Open Knowledge: Reproducibility in Cheminformatics with Open Data, Open Source and Open Standards&lt;/a&gt; talk on Monday. The session is great anyway, with other talks from &lt;a href="http://blog.openwetware.org/scienceintheopen/"&gt;Cameron&lt;/a&gt;, &lt;a href="http://chembl.blogspot.com/"&gt;John&lt;/a&gt; and someone from Berlin on a Open Access HTS system (which reminds me to talk about the &lt;span style="font-style:italic;"&gt;Open Access&lt;/span&gt; and that the term is tainted).&lt;br /&gt;&lt;br /&gt;I still have a free program, other than I want to see &lt;a href="http://chem-bla-ics.blogspot.com/2009/08/social-web-does-not-wait-for-bioclipse.html"&gt;Google Wave&lt;/a&gt; in action (and while I have receive my invitation, I have not received a login account yet). There is a potentially interesting talk about &lt;span style="font-style:italic;"&gt;Second Generation Small Molecule Therapeutics&lt;/span&gt; by 15:00. But no plans otherwise for the afternoon and/or evening.&lt;br /&gt;&lt;br /&gt;If you like to talk about &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt;, &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; and/or the &lt;a href="http://blueobelisk.sourceforge.net/wiki/Main_Page"&gt;Blue Obelisk movement&lt;/a&gt;. Or about my talk on Open Data, Open Standards and Open Source (ODOSOS) in chemoinformatics.&lt;br /&gt;&lt;br /&gt;If you happen to be around the Frankfurt Westend campus. In building 4, I think, the Hörsaalzentrum, where the conference is. Please let me know if you like to meet up. I hope to be online :), but no promise on that... should work at a Uni location, not? Let's see... This is how to ping me, and don't worry about redundancy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Email&lt;/span&gt;: egon.willighagen at gmail dot com&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;IRC&lt;/span&gt;: #cdk at irc.freenode.net&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Twitter&lt;/span&gt;: &lt;a href="http://twitter.com/egonwillighagen"&gt;egonwillighagen&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Identica&lt;/span&gt;: &lt;a href="http://identi.ca/chemblaics"&gt;chemblaics&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Blog&lt;/span&gt;: just leave a reply to this message&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-6127915493577673051?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/6127915493577673051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/reminder-my-talk-in-frankfurt-on-monday.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6127915493577673051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6127915493577673051'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/reminder-my-talk-in-frankfurt-on-monday.html' title='Reminder: my talk in Frankfurt on Monday; Want to meet up?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-2161172253800986820</id><published>2009-08-17T08:06:00.001-07:00</published><updated>2009-08-17T08:06:56.599-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='dbpedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Bioclipse and SPARQL end points</title><content type='html'>Last week, there was a very interesting thread on the &lt;a href="http://dbpedia.org/"&gt;DBPedia&lt;/a&gt; mailing list, on using Java for doing remote &lt;a href="http://en.wikipedia.org/wiki/SPARQL"&gt;SPARQL&lt;/a&gt; queries. This was one of the features still missing in &lt;a href="http://github.com/egonw/bioclipse.rdf/tree/master"&gt;bioclipse.rdf&lt;/a&gt;. &lt;a href="http://dowhatimean.net/"&gt;Richard Cyganiak&lt;/a&gt; replied pointing the code in Jena which conveniently does this and which bioclipse.rdf is already using anyway. Next, &lt;a href="http://iwis.cs.aau.dk/blog/4"&gt;Fred Durao&lt;/a&gt; even gave a full code example relieving me from any further research, resulting in &lt;span style="font-style:italic;"&gt;sparqlRemote()&lt;/span&gt; now implemented in the &lt;span style="font-style:italic;"&gt;rdf&lt;/span&gt; manager:&lt;pre&gt;&gt; rdf.sparqlRemote(&lt;br /&gt;  "http://dbpedia.org/sparql",&lt;br /&gt;  "select distinct ?Concept where{[] a ?Concept } LIMIT 10"&lt;br /&gt;);&lt;br /&gt;[[http://dbpedia.org/ontology/Place], [http://dbpedia.org/ontology/Area],&lt;br /&gt;[http://dbpedia.org/ontology/City], [http://dbpedia.org/ontology/River],&lt;br /&gt;[http://dbpedia.org/ontology/Road], [http://dbpedia.org/ontology/Lake],&lt;br /&gt;[http://dbpedia.org/ontology/LunarCrater],&lt;br /&gt;[http://dbpedia.org/ontology/ShoppingMall], [http://dbpedia.org/ontology/Park],&lt;br /&gt;[http://dbpedia.org/ontology/SiteOfSpecialScientificInterest]]&lt;br /&gt;&lt;/pre&gt; I reported earlier &lt;a href="http://chem-bla-ics.blogspot.com/2009/02/dbpedia-lookup-and-autocomplete-of.html"&gt;two example SPARQL queries for chemistry&lt;/a&gt;, which can now be rewritten as Bioclipse scripts:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/168582.js"&gt;&lt;/script&gt; and &lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/168583.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-2161172253800986820?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/2161172253800986820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/bioclipse-and-sparql-end-points.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2161172253800986820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/2161172253800986820'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/bioclipse-and-sparql-end-points.html' title='Bioclipse and SPARQL end points'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-604738564573570698</id><published>2009-08-13T14:04:00.001-07:00</published><updated>2009-08-13T14:04:44.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><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='wizard'/><title type='text'>Making Bioclipse Development easier: the New Manager Wizard</title><content type='html'>Today, &lt;a href="http://jonalv.blogspot.com/"&gt;Jonathan&lt;/a&gt;, Carl, Arvid and I made writing managers for &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; a bit easier. Plug-in development &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; in itself is already tricky to learn, and the use of Spring by the Bioclipse managers is not helping. And because very soon two new people will be starting with writing a new manager rather soon, we thought it was time to lower the activation barrier a bit.&lt;br /&gt;&lt;br /&gt;The basic file structure of an Bioclipse manager looks like:&lt;pre&gt;net.bioclipse.foo/&lt;br /&gt;|--META-INF        &lt;br /&gt;|   |--MANIFEST.MF &lt;br /&gt;|   `-- spring &lt;br /&gt;|       `-- context.xml&lt;br /&gt;|-- plugin.xml&lt;br /&gt;|-- .classpath&lt;br /&gt;|-- .project&lt;br /&gt;|-- build.properties&lt;br /&gt;`-- src&lt;br /&gt;    `-- net&lt;br /&gt;        `-- bioclipse&lt;br /&gt;            `-- foo&lt;br /&gt;                |-- Activator.java&lt;br /&gt;                `-- business&lt;br /&gt;                    |-- FooManager.java&lt;br /&gt;                    |-- FooManagerFactory.java&lt;br /&gt;                    |-- IFooManager.java&lt;br /&gt;                    |-- IJavaFooManager.java&lt;br /&gt;                    `-- IJavaScriptFooManager.java&lt;/pre&gt; That is &lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;twelve&lt;/span&gt;&lt;/span&gt; files which need to be just right. I used to copy/paste from an earlier (simple) manager.&lt;br /&gt;&lt;br /&gt;But we know and understand that setting up this framework is even more challenging if you have not done this at least 10 times before. So, today we implemented a &lt;span style="font-style:italic;"&gt;New Wizard&lt;/span&gt; (source available from this Git repository: &lt;a href="http://github.com/egonw/bioclipse.sdk/tree/master"&gt;bioclipse.sdk&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/SoR05Z6BivI/AAAAAAAAAnY/UETPrg8wKaE/s1600-h/bioclipseSDK1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SoR05Z6BivI/AAAAAAAAAnY/UETPrg8wKaE/s400/bioclipseSDK1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369545185288096498" /&gt;&lt;/a&gt; It just asks you a project name:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR1BacmB-I/AAAAAAAAAng/VLNzrVI0iiI/s1600-h/bioclipseSDK2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 264px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR1BacmB-I/AAAAAAAAAng/VLNzrVI0iiI/s400/bioclipseSDK2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369545322872047586" /&gt;&lt;/a&gt; and a few other settings:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR1QB6nPUI/AAAAAAAAAno/PJtr9rvqKf8/s1600-h/bioclipseSDK3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 264px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR1QB6nPUI/AAAAAAAAAno/PJtr9rvqKf8/s400/bioclipseSDK3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369545573985107266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Installing the Bioclipse SDK&lt;/span&gt; &lt;br /&gt; Installing this new plugin is fairly easy, and we have set up an &lt;span style="font-style:italic;"&gt;Update Site&lt;/span&gt; at &lt;a href="http://pele.farmbio.uu.se/sdk/"&gt;http://pele.farmbio.uu.se/sdk/&lt;/a&gt;. Just add this as Update site in Eclipse 3.4.x (which is still required for Bioclipse2). It depends on the &lt;a href="http://www.eclipse.org/jdt/"&gt;JDT&lt;/a&gt; and &lt;a href="http://www.eclipse.org/pde/"&gt;PDE&lt;/a&gt;, which you will likely already have installed being part of the default Eclipse RCP release.&lt;br /&gt;&lt;br /&gt;Go to the &lt;span style="font-style:italic;"&gt;Software Updates&lt;/span&gt; in the &lt;span style="font-style:italic;"&gt;Help&lt;/span&gt; menu:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/SoR6WwANxzI/AAAAAAAAAnw/ifHaBfuXS34/s1600-h/bioclipseSDK4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SoR6WwANxzI/AAAAAAAAAnw/ifHaBfuXS34/s400/bioclipseSDK4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369551186993989426" /&gt;&lt;/a&gt; and pick &lt;span style="font-style:italic;"&gt;Add Site...&lt;/span&gt;. Enter the aforementioned update site as shown here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/SoR7OgT4dFI/AAAAAAAAAn4/d7E5amXqWPY/s1600-h/bioclipseSDK5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 134px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SoR7OgT4dFI/AAAAAAAAAn4/d7E5amXqWPY/s400/bioclipseSDK5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369552144854185042" /&gt;&lt;/a&gt; Then, select the Bioclipse plugin:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR7eAzDdSI/AAAAAAAAAoA/GcMchfLOBTE/s1600-h/bioclipseSDK6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SoR7eAzDdSI/AAAAAAAAAoA/GcMchfLOBTE/s400/bioclipseSDK6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369552411272901922" /&gt;&lt;/a&gt; After you hit &lt;span style="font-style:italic;"&gt;Install&lt;/span&gt; and Eclipse install the fews tens of kBs of the plugin, the plugin should show up in your installation, like it did in mine:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/SoR8Rjuv0yI/AAAAAAAAAoI/5yuG3m0fqzc/s1600-h/bioclipseSDK.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 152px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SoR8Rjuv0yI/AAAAAAAAAoI/5yuG3m0fqzc/s400/bioclipseSDK.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369553296823407394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Implementation Details&lt;/span&gt; &lt;br/&gt;&lt;br /&gt;Writing the plugin was a challenge to me, and I am happy we were doing this in a hackaton. The Bioclipse-QSAR project already had a New Project wizard, but not for a new Plug-in Project. Some things are just slightly different then. For example, it turned out that creating a &lt;span style="font-style:italic;"&gt;.classpath&lt;/span&gt; cannot be done in the regular way (it never showed up), and I had to dig up some internal code of the PDE. Actually, our current implementation is still using a few internal classes because of this:&lt;pre&gt;IClasspathEntry[] entries = new IClasspathEntry[3];&lt;br /&gt;String executionEnvironment = null;&lt;br /&gt;ClasspathComputer.setComplianceOptions(&lt;br /&gt;  project,&lt;br /&gt;  ExecutionEnvironmentAnalyzer.getCompliance(executionEnvironment)&lt;br /&gt;);&lt;br /&gt;entries[0] = ClasspathComputer.createJREEntry(executionEnvironment);&lt;br /&gt;entries[1] = ClasspathComputer.createContainerEntry();&lt;br /&gt;IPath path = project.getProject().getFullPath().append("src/");&lt;br /&gt;entries[2] = JavaCore.newSourceEntry(path);&lt;/pre&gt; Ideas are most welcome on how to clean up this code, and not make it use internal, non-exported classes. For the Java source files and even the &lt;span style="font-style:italic;"&gt;MANIFEST.MF&lt;/span&gt; we are using templates, though I have seen this file being created programmatically too.&lt;br /&gt;&lt;br /&gt;I'm sure we'll run in some needed plumbing here and there, but that's what update sites are for, not? &lt;span style="font-style:italic;"&gt;Release soon, release often&lt;/span&gt; is an Open Source concept that works well in the Eclipse world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-604738564573570698?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/604738564573570698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/making-bioclipse-development-easier-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/604738564573570698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/604738564573570698'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/making-bioclipse-development-easier-new.html' title='Making Bioclipse Development easier: the New Manager Wizard'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/SoR05Z6BivI/AAAAAAAAAnY/UETPrg8wKaE/s72-c/bioclipseSDK1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-7270298858533740629</id><published>2009-08-07T05:14:00.000-07:00</published><updated>2009-08-07T05:15:04.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='pubchem'/><title type='text'>Searching PubChem from within Bioclipse</title><content type='html'>For the application note which we are about to submit, I was working on improving the &lt;a href="http://pubchem.ncbi.nlm.nih.gov/"&gt;PubChem&lt;/a&gt; &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; API a bit, resulting in new &lt;span style="font-style:italic;"&gt;download&lt;/span&gt; methods:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/163281.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The search allows using &lt;a href="http://pubchem.ncbi.nlm.nih.gov/help.html#PubChem_index"&gt;PubChem Filters&lt;/a&gt; which provides many simple means to restrict the search results. For example, we can search molecules and restrict on the molecular weight:&lt;pre&gt;lists = pubchem.download(pubchem.search("malaria 300:500[MW]"))&lt;/pre&gt; Other filters you can use in pubchem.search (provided by PubChem itself), includes (with examples):&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;[el]&lt;/span&gt;: &lt;span style="font-style:italic;"&gt;pubchem.search("Au[el]")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;[inchi]&lt;/span&gt;: &lt;span style="font-style:italic;"&gt;pubchem.search("\"InChI=1S/CH4/h1H4\"[inchi]")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;[inchikey]&lt;/span&gt;: &lt;span style="font-style:italic;"&gt;pubchem.search("VNWKTOKETHGBQD-UHFFFAOYSA-N[inchikey]")&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;[mimass]&lt;/span&gt;: &lt;span style="font-style:italic;"&gt;pubchem.search("375.9785:375.9786[mimass]")&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; And many, many more... see the linked Filters page.&lt;br /&gt;&lt;br /&gt;Now, you surely want to look at the hits, for which we use the &lt;span style="font-style:italic;"&gt;molecular table editor&lt;/span&gt;:&lt;pre&gt;list = pubchem.download(pubchem.search("375.9785:375.9786[mimass]"))&lt;br /&gt;cdk.saveSDFile("/Virtual/hits.sdf", list)&lt;br /&gt;ui.open("/Virtual/hits.sdf")&lt;/pre&gt; Resulting in:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/SnwCcMb9xqI/AAAAAAAAAnQ/hMFbuGkHUWI/s1600-h/pubchemSearchResults.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SnwCcMb9xqI/AAAAAAAAAnQ/hMFbuGkHUWI/s400/pubchemSearchResults.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5367167539316901538" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-7270298858533740629?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/7270298858533740629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/searching-pubchem-from-within-bioclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7270298858533740629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7270298858533740629'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/searching-pubchem-from-within-bioclipse.html' title='Searching PubChem from within Bioclipse'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5vhaOf2_53I/SnwCcMb9xqI/AAAAAAAAAnQ/hMFbuGkHUWI/s72-c/pubchemSearchResults.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-6372467437553835868</id><published>2009-08-05T06:16:00.001-07:00</published><updated>2009-08-05T06:16:50.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><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='xulrunner'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Running Bioclipse Plugin Unit tests: solving the XPCOM error</title><content type='html'>Sometimes you can feel so stupid. For example, when the answer is right on front of you, but only after many hours you realize the right question belonging to that answer. For example, take &lt;a href="http://ubuntuforums.org/showthread.php?t=920649&amp;page=2"&gt;this answer&lt;/a&gt;:&lt;ul&gt;&lt;span style="font-style:italic;"&gt;add the line: -Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner&lt;/span&gt;&lt;/ul&gt; This is the problem I was trying to solve: I'm running 64bit Ubuntu Jaunty with Eclipse 3.4.2 for &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; development. The answer above is the correct answer. So, I added the line. To the &lt;span style="font-style:italic;"&gt;$HOME/eclipse.ini&lt;/span&gt; and to the eclipse command line to start the program. But I still good not run Bioclipse plugin unit tests; I kept getting that stupid error:&lt;ul&gt;&lt;span style="font-style:italic;"&gt;org.eclipse.swt.SWTError: XPCOM error -2147467262&lt;br /&gt;at org.eclipse.swt.browser.Mozilla.error(Mozilla.java :1638)&lt;br /&gt;at org.eclipse.swt.browser.Mozilla.setText(Mozilla.ja va:1861)&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt; In retrospect, I was sort of asking the wrong question. I should have asked myself not why I got that XPCOM error even though I was using the solution, but why running the unit tests was not affected by that solution. Realizing that, it became so obvious: the plugin unit testing was using a clean environment, not based on the Eclipse environment I was working in; therefore, adding that line to my Eclipse environment did not help. Instead, I only had to that line to the Run Configuration of my plugin unit tests too:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/SnmFUZfehdI/AAAAAAAAAmo/Ru37wIUUSJQ/s1600-h/eclipseSolution.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 214px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SnmFUZfehdI/AAAAAAAAAmo/Ru37wIUUSJQ/s400/eclipseSolution.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5366467016475444690" /&gt;&lt;/a&gt; Surely, there are aspects to this which helped me overlook this solution. For example, I had installed Eclipse freshly yesterday, and then the it worked fine. Only after installing some EMF and GEF features, it stopped working again. Bitten by the correlation/causation pattern :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-6372467437553835868?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/6372467437553835868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/running-bioclipse-plugin-unit-tests.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6372467437553835868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6372467437553835868'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/08/running-bioclipse-plugin-unit-tests.html' title='Running Bioclipse Plugin Unit tests: solving the XPCOM error'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/SnmFUZfehdI/AAAAAAAAAmo/Ru37wIUUSJQ/s72-c/eclipseSolution.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-6201378990437222930</id><published>2009-06-21T03:49:00.000-07:00</published><updated>2009-06-21T03:50:00.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JChemPaint'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><title type='text'>Chemistry in Eclipse: Bioclipse-JChemPaint</title><content type='html'>The Uppsala and EBI CDK-teams have been working hard on finishing the rewrite of &lt;a href="http://jchempaint.sf.net"&gt;JChemPaint&lt;/a&gt; I started with Niels earlier. While the EBI-team focused on the applet (and Swing application), the Uppsala team, obviously, focused on the SWT side, for integration into &lt;a href="http://bioclipse.net"&gt;Bioclipse&lt;/a&gt;. The new JChemPaint is reaching a useful state, and below is a quick update screenshot something Arvid has been working on:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SjoqQ6FafWI/AAAAAAAAAlA/z86URlc3HSs/s1600-h/Picture+4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SjoqQ6FafWI/AAAAAAAAAlA/z86URlc3HSs/s400/Picture+4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5348633977414122850" /&gt;&lt;/a&gt; It shows a periodic table which allows you to drag any element type onto the JChemPaint drawing area. It is using regular drag and drop functionality, allowing you to create any arbitrary pseudo atom too. This also paves the way for a template system, allowing you to drag-n-drop fragments onto an active JChemPaint editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-6201378990437222930?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/6201378990437222930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/06/chemistry-in-eclipse-bioclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6201378990437222930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6201378990437222930'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/06/chemistry-in-eclipse-bioclipse.html' title='Chemistry in Eclipse: Bioclipse-JChemPaint'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5vhaOf2_53I/SjoqQ6FafWI/AAAAAAAAAlA/z86URlc3HSs/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-1663533944687131814</id><published>2009-05-19T02:40:00.000-07:00</published><updated>2009-05-19T02:56:04.534-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><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='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><title type='text'>Eclipse-Spring Export problem: uses conflict for spring aop</title><content type='html'>And I just got around to grasping some more of the details of handling dependencies with plugins. &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; has a product file, which uses features to run it. That works fine. It also uses &lt;a href="http://springframework.org/"&gt;Spring&lt;/a&gt; (version 1.0.2 in our case) in a set up where we use custom managers to do stuff, like run things from a JavaScript environment (e.g. &lt;a href="http://chemicalrcp.blogspot.com/2009/04/bioclipse2-scripting-3-xlogp.html"&gt;this&lt;/a&gt;), but use the same methods to be run from Bioclipse GUI elements, like buttons, menus and wizards. The Spring framework ensures the proper thread is used, and also provide recording (thanx to Jonathan for &lt;a href="http://jonalv.blogspot.com/2009/04/i-just-came-up-with-yet-another-way-of.html"&gt;doing all this&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;However, a &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse?view=rev&amp;revision=10373"&gt;recent refactoring&lt;/a&gt; broke exporting Bioclipse (which introduces a new plugin &lt;span style="font-style:italic;"&gt;net.bioclipse.managers&lt;/span&gt;), It still runs fine from within Eclipse, but the exporting fails with this error:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/113429.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Last night, I tried many things, on top of what Jonathan has been trying for the last few days. Using &lt;span style="font-style:italic;"&gt;git bisect&lt;/span&gt; I pinpointed the exact commit that caused it to fail (which is the earlier linked &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse?view=rev&amp;revision=10373"&gt;revision 10373&lt;/a&gt;), but could not find where we are actually referring to multiple Spring bundles. Our Spring bundles are in &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse/bioclipse2/trunk/net.bioclipse.target.platform/spring-osgi-1.0.2/lib/"&gt;these jars&lt;/a&gt; and that has worked for a very long time.&lt;br /&gt;&lt;br /&gt;I have no clue why it finds this conflict, and am clueless on how to further debug the issue. Any comment is most welcome! No matter how insignificant it may seem, I am sort of stuck and any tip will likely allow me to move forward. Thanx!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-1663533944687131814?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/1663533944687131814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/05/eclipse-spring-export-problem-uses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1663533944687131814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/1663533944687131814'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/05/eclipse-spring-export-problem-uses.html' title='Eclipse-Spring Export problem: uses conflict for spring aop'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-8366071503426957861</id><published>2009-05-11T08:09:00.000-07:00</published><updated>2009-05-11T08:32:37.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zest'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='graph'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Which feature must I install for org.eclipse.zest?</title><content type='html'>Dear lazyweb!&lt;br /&gt;&lt;br /&gt;I have been trying to figure out which Eclipse 3.4 feature I must install from the update site to get the &lt;span style="font-style:italic;"&gt;org.eclipse.zest&lt;/span&gt; plugin in my environment.&lt;br /&gt;&lt;br /&gt;I installed the &lt;a href="http://www.eclipse.org/gef/zest/"&gt;Zest&lt;/a&gt; feature (which I am going to use to &lt;a href="http://chem-bla-ics.blogspot.com/2008/11/solubility-data-in-bioclipse-1.html"&gt;visualize an RDF network&lt;/a&gt;), but my workspace still complained that I did not have the plugin.&lt;br /&gt;&lt;br /&gt;Maybe I should rerun &lt;span style="font-style:italic;"&gt;Set Target Platform&lt;/span&gt; for our product, but I and others in the &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; development community have been wondering how we can know what feature to install via the Software Updates... to get a particular plugin on your machine?&lt;br /&gt;&lt;br /&gt;Looking forward to hearing from you,&lt;br /&gt;&lt;br /&gt;Kind regards,&lt;br /&gt;&lt;br /&gt;Egon&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-8366071503426957861?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/8366071503426957861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/05/which-feature-must-i-install-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8366071503426957861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8366071503426957861'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/05/which-feature-must-i-install-for.html' title='Which feature must I install for org.eclipse.zest?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-337034514454167597</id><published>2009-04-15T13:35:00.001-07:00</published><updated>2009-04-15T13:35:53.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xlogp'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='cdkws2009'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud service'/><category scheme='http://www.blogger.com/atom/ns#' term='cheminformatics'/><category scheme='http://www.blogger.com/atom/ns#' term='XMPP'/><category scheme='http://www.blogger.com/atom/ns#' term='io-data'/><title type='text'>Bioclipse2 Scripting #3: XLogP calculatation using a XMPP CDK cloud service</title><content type='html'>In preparation of the &lt;a href="https://apps.sourceforge.net/mediawiki/cdk/index.php?title=CDK_Workshop_2009"&gt;CDK workshop&lt;/a&gt; next week, here is a small &lt;a href="http://www.bioclipse.net"&gt;Bioclipse2&lt;/a&gt; script to calculate the XLogP value for a given &lt;a href="http://www.opensmiles.org"&gt;SMILES&lt;/a&gt;, using the a CDK-based &lt;a href="http://chem-bla-ics.blogspot.com/search?q=xmpp"&gt;XMPP service&lt;/a&gt;:&lt;br /&gt;&lt;script src="http://gist.github.com/95987.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Earlier in this series:&lt;ul&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2008/10/bioclipse2-scripting-1-from-smiles-to.html"&gt;Bioclipse2 Scripting #1: from SMILES to a UFF optimized structure in Jmol&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2009/02/bioclipse2-scripting-2-searching.html"&gt;Bioclipse2 Scripting #2: searching PubChem&lt;/a&gt;&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/5324486046611289266-337034514454167597?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/337034514454167597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/bioclipse2-scripting-3-xlogp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/337034514454167597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/337034514454167597'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/bioclipse2-scripting-3-xlogp.html' title='Bioclipse2 Scripting #3: XLogP calculatation using a XMPP CDK cloud service'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-7325100888924310652</id><published>2009-04-15T00:24:00.000-07:00</published><updated>2009-04-15T00:43:46.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inheritance'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='CML'/><category scheme='http://www.blogger.com/atom/ns#' term='contenttype'/><title type='text'>Multiple inheritence for content types?</title><content type='html'>&lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; is an environment for handling and processing life sciences data. This data is present in files with a wide variety of formats, each of which can contain a particular data type. For example, a we can have a single molecule in &lt;span style="font-style:italic;"&gt;MDL molfile&lt;/span&gt; and in &lt;span style="font-style:italic;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Chemical_Markup_Language"&gt;CML&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The latter is particularly interesting, as I do not know how to work that out... Firstly, I want the &lt;span style="font-style:italic;"&gt;CML (Single Molecule)&lt;/span&gt; content type extend the CML content type, so that a &lt;a href="http://chemicalrcp.blogspot.com/2009/01/editing-and-validation-of-cml-documents.html"&gt;validating CML editor&lt;/a&gt; can open it with the proper schema, but at the same time I would like to extend it a content type representation a &lt;span style="font-style:italic;"&gt;Single Molecule&lt;/span&gt;. Hence, the multiple inheritance.&lt;br /&gt;&lt;br /&gt;This is what the &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse/bioclipse2/trunk/plugins/net.bioclipse.cml/plugin.xml"&gt;plugin.xml&lt;/a&gt; currently looks like:&lt;pre&gt;&amp;lt;extension&lt;br /&gt;  point="org.eclipse.core.runtime.contentTypes"&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;content-type&lt;br /&gt;    base-type="net.bioclipse.contenttypes.cml"&lt;br /&gt;    id="net.bioclipse.contenttypes.cml.singleMolecule2d"&lt;br /&gt;    name="CML (Single 2D Molecule)"&lt;br /&gt;    priority="high"&gt;&lt;br /&gt;    &amp;lt;describer class="net.bioclipse.cml.contenttypes.CmlFileDescriber"&gt;&lt;br /&gt;      &amp;lt;parameter&lt;br /&gt;        name="dimension"&lt;br /&gt;        value="2D"/&gt;&lt;br /&gt;      &amp;lt;parameter&lt;br /&gt;        name="cardinality"&lt;br /&gt;        value="single"/&gt;&lt;br /&gt;    &amp;lt;/describer&gt;&lt;br /&gt;  &amp;lt;/content-type&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/extension&gt;&lt;br /&gt;&lt;/pre&gt; Very clearly, a single base-type. Is there any option of multiple inheritance?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-7325100888924310652?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/7325100888924310652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/multiple-inheritence-for-content-types.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7325100888924310652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7325100888924310652'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/multiple-inheritence-for-content-types.html' title='Multiple inheritence for content types?'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-7406962626517622035</id><published>2009-04-14T02:56:00.000-07:00</published><updated>2009-04-14T03:08:01.615-07:00</updated><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='Jmol'/><title type='text'>Bioclipse: a powerful Jmol application</title><content type='html'>While &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; is much more, it could be an interesting alternative to the &lt;a href="http://www.jmol.org/"&gt;Jmol&lt;/a&gt; application. It offers:&lt;ul&gt;&lt;li&gt;a scripting console&lt;/li&gt;&lt;li&gt;a file browser (the &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; way)&lt;/li&gt;&lt;li&gt;an outline of the file content which allows selections&lt;/li&gt;&lt;li&gt;a script editor&lt;/li&gt;&lt;/ul&gt; The underlying RCP toolkit has many other interesting features for a Jmol application, but the above is up and running:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/SbkK_OQweEI/AAAAAAAAAgQ/LholPxNAI_8/s1600-h/jmolBioclipse.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 292px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SbkK_OQweEI/AAAAAAAAAgQ/LholPxNAI_8/s400/jmolBioclipse.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5312289316736628802" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-7406962626517622035?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/7406962626517622035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/bioclipse-powerful-jmol-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7406962626517622035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/7406962626517622035'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/04/bioclipse-powerful-jmol-application.html' title='Bioclipse: a powerful Jmol application'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5vhaOf2_53I/SbkK_OQweEI/AAAAAAAAAgQ/LholPxNAI_8/s72-c/jmolBioclipse.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-8832143551933691799</id><published>2009-03-23T07:20:00.001-07:00</published><updated>2009-03-23T07:20:36.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regexp'/><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='console'/><title type='text'>Highlighting Console output in Eclipse with Grep Console</title><content type='html'>I ran into an &lt;a href="http://www.eclipse.org"&gt;Eclipse&lt;/a&gt; &lt;a href="http://marian.musgit.com/projects_grepconsole.php"&gt;Grep Console&lt;/a&gt; plugin (EPL license) today that takes regular expression to color output in the Console. Given the amount of output &lt;a href="http://www.bioclipse.net"&gt;Bioclipse&lt;/a&gt; and the &lt;a href="http://cdk.sf.net"&gt;CDK&lt;/a&gt; give when in DEBUG mode, this allows me to highlight those bits I am interested in. For example, comments on the &lt;span style="font-style:italic;"&gt;Bioclipse managers&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/SceaLsMdY3I/AAAAAAAAAiw/UnYWJGiOaCY/s1600-h/regexpConsole.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SceaLsMdY3I/AAAAAAAAAiw/UnYWJGiOaCY/s400/regexpConsole.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5316387410766816114" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-8832143551933691799?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/8832143551933691799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/03/highlighting-console-output-in-eclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8832143551933691799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8832143551933691799'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/03/highlighting-console-output-in-eclipse.html' title='Highlighting Console output in Eclipse with Grep Console'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_5vhaOf2_53I/SceaLsMdY3I/AAAAAAAAAiw/UnYWJGiOaCY/s72-c/regexpConsole.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-6023258775619115549</id><published>2009-02-22T02:21:00.000-08:00</published><updated>2009-02-22T02:23:06.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SPARQL'/><category scheme='http://www.blogger.com/atom/ns#' term='onssolubility'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='RDF'/><title type='text'>Solubility Data in Bioclipse #2: handling RDF</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Resource_Description_Framework"&gt;RDF&lt;/a&gt; is swiftly becoming the &lt;a href="http://en.wikipedia.org/wiki/Lingua_franca"&gt;lingua franca&lt;/a&gt; of life sciences (see for example [&lt;a href="http://chem-bla-ics.blogspot.com/2007/10/one-billion-biochemical-rdf-triples.html"&gt;1&lt;/a&gt;,&lt;a href="http://chem-bla-ics.blogspot.com/2007/07/rdf-ing-molecular-space.html"&gt;2&lt;/a&gt;]). Bioclipse is an excellent platform to visualize results from analysis of the network, both for graph visualization (see [&lt;a href="http://chem-bla-ics.blogspot.com/2008/11/solubility-data-in-bioclipse-1.html"&gt;3&lt;/a&gt;]), as well of visualization of domain specific data types (e.g. sequences, molecules, ...).&lt;br /&gt;&lt;br /&gt;Yesterday I uploaded a Bioclipse feature that adds a &lt;span style="font-style:italic;"&gt;rdf&lt;/span&gt; manager to handle RDF content, which includes &lt;a href="http://en.wikipedia.org/wiki/SPARQL"&gt;SPARQL&lt;/a&gt; support. The below snippet shows application to the solubility data [&lt;a href="http://chem-bla-ics.blogspot.com/2008/11/solubility-data-in-bioclipse-1.html"&gt;3&lt;/a&gt;]:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/68201.js"&gt;&lt;/script&gt; Maybe RDF support in Eclipse is an idea for &lt;a href="http://wiki.eclipse.org/Google_Summer_of_Code_2009_Ideas"&gt;its Google Summer of Code&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;See also: &lt;ol&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2007/10/one-billion-biochemical-rdf-triples.html"&gt;One Billion Biochemical RDF Triples!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://chem-bla-ics.blogspot.com/2007/07/rdf-ing-molecular-space.html"&gt;RDF-ing molecular space&lt;/a&gt;&lt;/li&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;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-6023258775619115549?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/6023258775619115549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/02/solubility-data-in-bioclipse-2-handling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6023258775619115549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/6023258775619115549'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/02/solubility-data-in-bioclipse-2-handling.html' title='Solubility Data in Bioclipse #2: handling RDF'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-3463273547796787091</id><published>2009-01-16T07:11:00.000-08:00</published><updated>2009-01-16T07:12:43.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='gist'/><title type='text'>Bioclipse and Gist integration</title><content type='html'>As you might have read, &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; has scripting support (see for example, &lt;a href="http://chem-bla-ics.blogspot.com/2008/11/scripting-jchempaint.html"&gt;Scripting JChemPaint&lt;/a&gt;), and that we have been collection them on &lt;a href="http://gist.github.com/"&gt;Gist&lt;/a&gt; and indexing them on Delicious with the tags &lt;a href="http://delicious.com/tag/bioclipse+gist"&gt;bioclipse and gist&lt;/a&gt;. This provides a nice overview of what you can do with the current SVN version of Bioclipse2. And, hopefully, when released, allow users to quickly learn about Bioclipse features, allow people to share scripts etc. Think of it as &lt;a href="http://myexperiment.org/"&gt;MyExperiment.org&lt;/a&gt; for Bioclipse.&lt;br /&gt;&lt;br /&gt;Now, what was missing until today, was easy access to gists in Bioclipse itself. No &lt;code&gt;gist.load(33421)&lt;/code&gt; yet. There still is not, but I uploaded earlier today a Wizard for it. (The manager will follow later). Right click on an open Project, select New -&gt; Other, and pick &lt;span style="font-style:italic;"&gt;Download Gist&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/SXChqn9-uXI/AAAAAAAAAd8/wu2FCEwjvsY/s1600-h/gist3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SXChqn9-uXI/AAAAAAAAAd8/wu2FCEwjvsY/s400/gist3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291907315815856498" /&gt;&lt;/a&gt; and click &lt;span style="font-style:italic;"&gt;Next&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_5vhaOf2_53I/SXCh9fFxwnI/AAAAAAAAAeE/Z0YynPDNnOs/s1600-h/gist4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://1.bp.blogspot.com/_5vhaOf2_53I/SXCh9fFxwnI/AAAAAAAAAeE/Z0YynPDNnOs/s400/gist4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291907639850156658" /&gt;&lt;/a&gt; Then, just type the number of the Gist you want to open in Bioclipse, for example &lt;a href="http://gist.github.com/18315"&gt;18315&lt;/a&gt; (see &lt;a href="http://chem-bla-ics.blogspot.com/2008/10/bioclipse2-scripting-1-from-smiles-to.html"&gt;Bioclipse2 Scripting #1: from SMILES to a UFF optimized structure in Jmol&lt;/a&gt;), and click another &lt;span style="font-style:italic;"&gt;Next&lt;/span&gt; to select a file name and location:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5vhaOf2_53I/SXCijl93lWI/AAAAAAAAAeM/JkxfBPgN97U/s1600-h/gist5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 397px;" src="http://4.bp.blogspot.com/_5vhaOf2_53I/SXCijl93lWI/AAAAAAAAAeM/JkxfBPgN97U/s400/gist5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291908294531061090" /&gt;&lt;/a&gt; The current code does require you to know the Gist number, so you'll need a web browser to look it up, but we do have search facilities in mind. Also, while the code attempts so, the resulting Gist is not automatically openend in an editor (a bug). Another idea is to just install the &lt;a href="http://chem-bla-ics.blogspot.com/2008/10/git-eclipse-integration.html"&gt;egit&lt;/a&gt; plugin in Bioclipse :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-3463273547796787091?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/3463273547796787091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/bioclipse-and-gist-integration.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3463273547796787091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3463273547796787091'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/bioclipse-and-gist-integration.html' title='Bioclipse and Gist integration'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/SXChqn9-uXI/AAAAAAAAAd8/wu2FCEwjvsY/s72-c/gist3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-3220184297820062228</id><published>2009-01-03T01:49:00.000-08:00</published><updated>2009-01-03T01:50:01.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='catalog'/><category scheme='http://www.blogger.com/atom/ns#' term='XML Schema'/><category scheme='http://www.blogger.com/atom/ns#' term='RCP'/><category scheme='http://www.blogger.com/atom/ns#' term='editor'/><category scheme='http://www.blogger.com/atom/ns#' term='namespace'/><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='Rich Client Platform'/><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='Web Tools Platform'/><category scheme='http://www.blogger.com/atom/ns#' term='WTP'/><title type='text'>Editing and Validation of CML documents in Bioclipse</title><content type='html'>One advantage of using XML is that one can rely on good support in libraries for functionality. When parsing XML, one does not have to take care of the syntax, and focus on the data and its semantics. This comes at the expense of verbosity, though, but having the ability to express semantics explicitly is a huge benefit for flexibility.&lt;br /&gt;&lt;br /&gt;So, when &lt;a href="http://wwmm.ch.cam.ac.uk/blogs/murrayrust/"&gt;Peter&lt;/a&gt; and Henry put their first documents online about the Chemical Markup Language (CML), I was thrilled, even though is actually was still SGML when I encountered it. The work predates the &lt;a href="http://www.w3.org/TR/1998/REC-xml-19980210"&gt;XML recommendation&lt;/a&gt;. As I &lt;a href="http://chem-bla-ics.blogspot.com/2008/10/jchempaint-history-cml-patches-in-1999.html"&gt;recently blogged&lt;/a&gt;, in '99 I wrote patches for Jmol and JChemPaint to support CML, which were published as preprint in the &lt;a href="http://www.sciencedirect.com/preprintarchive"&gt;Chemical Preprint Server&lt;/a&gt; in a paper in 2000 in the &lt;a href="http://hackberry.trinity.edu/IJC/"&gt;Internet Journal of Chemistry&lt;/a&gt;. Neither of the two has survived.&lt;br /&gt;&lt;br /&gt;Anyway, the &lt;a href="http://cdk.sf.net/"&gt;Chemistry Development Kit&lt;/a&gt; makes heavy use of CML, and &lt;a href="http://www.bioclipse.net/"&gt;Bioclipse&lt;/a&gt; supports it too. Now, Bioclipse is based on the &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Rich Client Platform&lt;/a&gt; architecture, for which there exist quite a few XML tools in the &lt;a href="http://www.eclipse.org/webtools/"&gt;Web Tools Platform&lt;/a&gt; (WTP). Among these, a validation, content assisting XML editor. This means, I get red markings when I make my XML document not-well-formed or invalid. Just a quick recap: well-formedness means that the XML document has a proper syntax: one root node, properly closed tags, quotes around attribute values, etc. Validness, however, means that the document is well-formed, but also hierarchically organized according to some specification.&lt;br /&gt;&lt;br /&gt;Enter CML. CML is such a specification, first with DTDs, but after the introduction of XML Namespaces with XML Schema (see &lt;a href="http://cmlexplained.blogspot.com/2007/06/there-can-be-only-one-namespace.html"&gt;There can be only one (namespace)&lt;/a&gt;). The WTP can use this XML Schema for validation, and this is of great help learning the CML language. Pressing Ctrl-space in Bioclipse will now show you what allowed content can be added at the current character position.&lt;br /&gt;&lt;br /&gt;Yes, Bioclipse can do this now (in SVN, at least). This has been on my wishlist for at least two years now, but never really found the right information. Now, three days ago &lt;a href="http://intellectualcramps.blogspot.com/"&gt;David&lt;/a&gt; wrote about &lt;a href="http://intellectualcramps.blogspot.com/2008/12/end-of-year-cramps.html"&gt;End of Year Cramps&lt;/a&gt; in which he describes some of his work on the WTP for autocomplete for XPath queries. He &lt;span style="font-style:italic;"&gt;see[s] a brighter future for XML at eclipse over the next year. I hope that those in the eclipse and XML community will help to continue to improve the basic support, so that first class commercial quality applications that leverage this support can continue to be built.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That was enough statement for me to &lt;a href="http://intellectualcramps.blogspot.com/2008/12/end-of-year-cramps.html?showComment=1230451020000#c4332753586396921531"&gt;ask in the comments&lt;/a&gt; on how to make the WTP XML editor aware of the CML XML Schema. It already picked up XML Schema's with &lt;span style="font-style:italic;"&gt;xsi:schemaLocation&lt;/span&gt;, but I needed something to worked without such statements in the XML document itself. David explained that me that I could use the &lt;a href="http://intellectualcramps.blogspot.com/2008/12/end-of-year-cramps.html?showComment=1230498780000#c4628316622126916885"&gt;org.eclipse.wst.xml.catalog extension&lt;/a&gt;. This was really easy, and &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse/bioclipse2/trunk/plugins/net.bioclipse.cml/plugin.xml?r1=8101&amp;r2=8100&amp;pathrev=8101"&gt;commited to Bioclipse SVN&lt;/a&gt; as: &lt;pre class="prettyprint lang-xml"&gt;&amp;lt;extension&lt;br /&gt;  point="org.eclipse.wst.xml.core.catalogContributions"&gt;&lt;br /&gt;  &amp;lt;catalogContribution&gt;&lt;br /&gt;    &amp;lt;uri name="http://www.xml-cml.org/schema"&lt;br /&gt;          uri="schema24/schema.xsd"/&gt;&lt;br /&gt;  &amp;lt;/catalogContribution&gt;&lt;br /&gt;&amp;lt;/extension&gt;&lt;br /&gt;&lt;/pre&gt; However, that does not make the WTP XML editor available in the Bioclipse application yet. Not ever in the "Open With"... So, I set up a &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse/bioclipse2/trunk/features/net.bioclipse.cml_feature/"&gt;CML Feature&lt;/a&gt;. After a follow up question, it turned out that the CML content type of Bioclipse was already a sub type of the XML type (see ): &lt;pre class="prettyprint lang-xml"&gt;&amp;lt;extension&lt;br /&gt;  point="org.eclipse.core.runtime.contentTypes"&gt;&lt;br /&gt;  &amp;lt;content-type&lt;br /&gt;    base-type="org.eclipse.core.runtime.xml"&lt;br /&gt;    id="net.bioclipse.contenttypes.cml"&lt;br /&gt;    name="Chemical Markup Language (CML)"&lt;br /&gt;    file-extensions="cml,xml"&lt;br /&gt;    priority="normal"&gt;&lt;br /&gt;  &amp;lt;/content-type&gt;&lt;br /&gt;&amp;lt;/extension&gt;&lt;br /&gt;&lt;/pre&gt; So, the only remaining problem was to actually get the WTP XML editor as part of the Bioclipse application. The new CML Feature takes care of that (I hope the export and building the update site work too, but that's yet untested), by important the relevant plugins and features. Last night, however, I ended up with one stacktrace which gave me little clue on which plugin I was still missing.&lt;br /&gt;&lt;br /&gt;Therefore, I headed to #eclipse and actually met David of the blog that started this again. He asked &lt;a href="http://nitind.blogspot.com"&gt;nitind&lt;/a&gt; to think about it too, and they helped me pin down the issue. This relevant bit of the stacktrace turned out to be: &lt;pre&gt;Caused by: java.lang.IllegalStateException&lt;br /&gt; at org.eclipse.core.runtime.Platform.getPluginRegistry(Platform.java:774)&lt;br /&gt; at org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry$ResourceFactoryRegistryReader.&lt;init&gt;(WTPResourceFactoryRegistry.java:275)&lt;br /&gt; at org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry.&lt;init&gt;(WTPResourceFactoryRegistry.java:61)&lt;br /&gt; at org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry.&lt;clinit&gt;(WTPResourceFactoryRegistry.java:55)&lt;br /&gt; ... 37 more&lt;br /&gt;&lt;/pre&gt; This refered to this bit of code of Eclipse' Platform.java: &lt;pre class="prettyprint lang-java"&gt;Bundle compatibility = InternalPlatform.getDefault()&lt;br /&gt;  .getBundle(CompatibilityHelper.PI_RUNTIME_COMPATIBILITY);&lt;br /&gt;  if (compatibility == null)&lt;br /&gt;    throw new IllegalStateException();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, the plugin I turned to to have missing was &lt;span style="font-style:italic;"&gt;org.eclipse.core.runtime.compatibility&lt;/span&gt;. Apparently, some parts of the WTP that the XMLEditor is using, still uses Eclipse2.x technology.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_5vhaOf2_53I/SVoEFVPRXLI/AAAAAAAAAdE/R76n3J-TRgQ/s1600-h/cmlValid.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://3.bp.blogspot.com/_5vhaOf2_53I/SVoEFVPRXLI/AAAAAAAAAdE/R76n3J-TRgQ/s400/cmlValid.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5285541602319752370" /&gt;&lt;/a&gt; This screenshot shows the WTP XMLEditor in action in Bioclipse on a CML file. It shows the document contents with the 'Design' tab, which also shows allowed content, as derived from the XML Schema for CML. Also, note that the Outline and Properties view automatically come for free, which allows more detail and navigation of the content.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SVoEtCQ9LPI/AAAAAAAAAdM/CNSv5lScQXE/s1600-h/cmlContentAssisting.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SVoEtCQ9LPI/AAAAAAAAAdM/CNSv5lScQXE/s400/cmlContentAssisting.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5285542284421311730" /&gt;&lt;/a&gt; This screenshot shows the 'Source' tab for the same file, where I deliberately changed the value of the @id attribute of the first atom. The value does not validate against the regular expression defined in the CML schema for @id attribute values. It also shows the content assisting in action. At any location in the CML file, I can hit Ctrl-Space, and the editor will show me which content I can add at that location.&lt;br /&gt;&lt;br /&gt;This makes Bioclipse a perfect tool to craft CML documents and learn the language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-3220184297820062228?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/3220184297820062228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/editing-and-validation-of-cml-documents.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3220184297820062228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/3220184297820062228'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/editing-and-validation-of-cml-documents.html' title='Editing and Validation of CML documents in Bioclipse'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_5vhaOf2_53I/SVoEFVPRXLI/AAAAAAAAAdE/R76n3J-TRgQ/s72-c/cmlValid.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-5465988108280673619</id><published>2009-01-03T01:41:00.000-08:00</published><updated>2009-01-03T01:43:56.327-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uppsala'/><category scheme='http://www.blogger.com/atom/ns#' term='JChemPaint'/><category scheme='http://www.blogger.com/atom/ns#' term='Bioclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='CDK'/><category scheme='http://www.blogger.com/atom/ns#' term='workshop'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Scripting JChemPaint</title><content type='html'>Stefan, &lt;a href="http://gilleain.blogspot.com/"&gt;Gilleain&lt;/a&gt;, Arvid and I had a &lt;a href="https://apps.sourceforge.net/mediawiki/cdk/index.php?title=JChemPaintWorkshop2008"&gt;JChemPaint Developers Workshop&lt;/a&gt; in Uppsala, to sprint the development of JChemPaint3, for which &lt;a href="http://progz-jchem.blogspot.com/"&gt;Niels&lt;/a&gt; layed out the foundation already a long time ago.&lt;br /&gt;&lt;br /&gt;Gilleain and Arvid merged their branches into a &lt;a href="http://cdk.svn.sourceforge.net/viewvc/cdk/cdk/branches/jchempaint-primary/"&gt;single code base&lt;/a&gt;, while Stefan worked on the &lt;a href="http://cdk.svn.sourceforge.net/viewvc/cdk/jchempaint/trunk/"&gt;Swing application and applet&lt;/a&gt;. The Bioclipse SWT-based widget is being developed for &lt;a href="http://bioclipse.svn.sourceforge.net/viewvc/bioclipse/bioclipse2/trunk/plugins/net.bioclipse.cdk.jchempaint.view/"&gt;Bioclipse2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The new design separates widget/graphics toolkit specifics from the chemical drawing and editing logic. Regarding the editing functionality, this basically comes down to have a semantically meaningful edit API. This allows us to convert both Swing and SWT mouse events into things like &lt;i&gt;addAtom("C", atom)&lt;/i&gt;, which would add a carbon to an already existing &lt;i&gt;atom&lt;/i&gt;. However, without too much phantasy, it allows adding a scripting language. This is what I have been working on. Right now, the following API is available from the Bioclipse2 JavaScript console (via the &lt;i&gt;jcp&lt;/i&gt; namespace, in random order):&lt;ul&gt;&lt;li&gt;ICDKMolecule jcp.getModel()&lt;/li&gt;&lt;li&gt;IAtom getClosestAtom(Point2d)&lt;/li&gt;&lt;li&gt;setModel(ICDKMolecule) &lt;i&gt;(for really fancy things)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;removeAtom(IAtom)&lt;/li&gt;&lt;li&gt;IBond getClosestBond(Point2d)&lt;/li&gt;&lt;li&gt;updateView() &lt;i&gt;(all edit command issue this automatically)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;addAtom(String,Point2d)&lt;/li&gt;&lt;li&gt;addAtom(String,IAtom) &lt;i&gt;(which works out coordinates automatically)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Point2d newPoint2d(double,double)&lt;/li&gt;&lt;li&gt;updateImplicitHydrogenCounts()&lt;/li&gt;&lt;li&gt;moveTo(IAtom, Point2d)&lt;/li&gt;&lt;li&gt;setSymbol(IAtom,String)&lt;/li&gt;&lt;li&gt;setCharge(IAtom,int)&lt;/li&gt;&lt;li&gt;setMassNumber(IAtom,int)&lt;/li&gt;&lt;li&gt;addBond(IAtom,IAtom)&lt;/li&gt;&lt;li&gt;moveTo(IBond,Point2d)&lt;/li&gt;&lt;li&gt;setOrder(IBond,IBond.Order)&lt;/li&gt;&lt;li&gt;setWedgeType(IBond,int)&lt;/li&gt;&lt;li&gt;IBond.Order getOrder(int)&lt;/li&gt;&lt;li&gt;zap() &lt;i&gt;(sort of &lt;i&gt;sudo rm -Rf /*&lt;/i&gt;)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;cleanup() &lt;i&gt;(calculate 2D coordinates from scratch)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;addRing(IAtom,int)&lt;/li&gt;&lt;li&gt;addPhenyl(IAtom)&lt;/li&gt;&lt;/ul&gt; This API (many more method will follow) is not really aimed at the end user, who will simply point and click. The goal of this scripting language is, at least at this moment, to test the underlying implementation using Bioclipse. Future applications, however, may include simple scripts which use some logic to convert the editor content. For example, replacing a &lt;i&gt;t&lt;/i&gt;-butyl fragment into a pseudo atom "t-Bu". The key thing to remember, is that this will allow Bioclipse to have non-CDK-based programs act on the JChemPaint editor content (e.g. using getModel() and setModel(ICDKMolecule)). More on that later.&lt;br /&gt;&lt;br /&gt;A simple script could look like:&lt;script src="http://gist.github.com/27116.js"&gt;&lt;/script&gt; Or, as screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_5vhaOf2_53I/SSWhMGiC_7I/AAAAAAAAAY8/w-HTLT80h2o/s1600-h/jcpScripting.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://2.bp.blogspot.com/_5vhaOf2_53I/SSWhMGiC_7I/AAAAAAAAAY8/w-HTLT80h2o/s400/jcpScripting.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270796168190951346" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-5465988108280673619?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/5465988108280673619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/scripting-jchempaint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/5465988108280673619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/5465988108280673619'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/scripting-jchempaint.html' title='Scripting JChemPaint'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_5vhaOf2_53I/SSWhMGiC_7I/AAAAAAAAAY8/w-HTLT80h2o/s72-c/jcpScripting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5324486046611289266.post-8463893034778243306</id><published>2009-01-03T01:36:00.000-08:00</published><updated>2009-01-03T01:38:51.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='RCP'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>A RCP dedicated blog</title><content type='html'>Yes, yet another blog by &lt;a href="http://chem-bla-ics.blogspot.com/"&gt;me&lt;/a&gt;. This one is special, being the first where I just copy/paste blog items from other blog I do. Just, so that people only interested in RCP related stuff, can tune in here. If only I knew how to do categories on &lt;a href="http://www.blogger.com"&gt;blogger.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5324486046611289266-8463893034778243306?l=chemicalrcp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chemicalrcp.blogspot.com/feeds/8463893034778243306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/rcp-dedicated-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8463893034778243306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5324486046611289266/posts/default/8463893034778243306'/><link rel='alternate' type='text/html' href='http://chemicalrcp.blogspot.com/2009/01/rcp-dedicated-blog.html' title='A RCP dedicated blog'/><author><name>Egon Willighagen</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-JxU9YdY1Zl8/AAAAAAAAAAI/AAAAAAAABM4/GA8mWNfbWhg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
