{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2009/11/04/new-bioclipse-features-kabsch-alignment.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/2ty9f-n0m97",
      "url": "https://chem-bla-ics.linkedchemistry.info/2009/11/04/new-bioclipse-features-kabsch-alignment.html",
      "title": "New Bioclipse Features: Kabsch Alignment, RMSD Distance and Tanimoto Simarlity Matrices",
      "content_html": "<p>We recently submitted a second paper on <a href=\"http://www.bioclipse.net/\">Bioclipse</a>, and have worked hard in the past two weeks on addressing the\nreviewers’ questions (and we love these feature requests! See also these <a href=\"http://bioclipse.blogspot.com/2009/11/download-pdbs-with-bioclipse.html\">two</a>\n<a href=\"http://bioclipse.blogspot.com/2009/11/align-sequences-with-kalign-web-service.html\">blogs</a>). One reviewer seemed very interested in seeing\ndocking available in Bioclipse. While we do not have a full docking feature set up for Bioclipse, we do have functionality to deal with 3D\nstructures, though our researched urged us to focus on the 2D side of cheminformatics so far.</p>\n\n<p>To strengthen our intentions towards the 3D cheminformatics world, we have implemented a few new features, using <a href=\"http://cdk.sf.net/\">CDK</a>\nfunctionality. For example, we added Kabsch aligment and the related RMSD between molecular structures implemented as both popup menus\nas well as manager methods. The manager method you can see in action in <a href=\"http://www.myexperiment.org/workflows/937\">MyExperiment workflow 937</a>,\nwhich you can download directly into Bioclipse with one simple command (see\n<a href=\"https://chem-bla-ics.linkedchemistry.info/2009/11/04/bioclipse-manager-for-myexperimentorg.html\">Bioclipse Manager for MyExperiment.org <i class=\"fa-solid fa-recycle fa-xs\"></i></a>):</p>\n\n<div class=\"language-javascript highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"kd\">var</span> <span class=\"nx\">smileses</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"nc\">Array</span><span class=\"p\">(</span><span class=\"dl\">\"</span><span class=\"s2\">CC(C)C</span><span class=\"dl\">\"</span><span class=\"p\">,</span> <span class=\"dl\">\"</span><span class=\"s2\">CCCN</span><span class=\"dl\">\"</span><span class=\"p\">,</span> <span class=\"dl\">\"</span><span class=\"s2\">CCC=O</span><span class=\"dl\">\"</span><span class=\"p\">);</span>\n\n<span class=\"kd\">var</span> <span class=\"nx\">unaligned</span> <span class=\"o\">=</span> <span class=\"nx\">cdk</span><span class=\"p\">.</span><span class=\"nf\">createMoleculeList</span><span class=\"p\">();</span>\n<span class=\"k\">for </span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span><span class=\"o\">&lt;</span><span class=\"nx\">smileses</span><span class=\"p\">.</span><span class=\"nx\">length</span><span class=\"p\">;</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n  <span class=\"nx\">mol</span> <span class=\"o\">=</span> <span class=\"nx\">cdk</span><span class=\"p\">.</span><span class=\"nf\">fromSMILES</span><span class=\"p\">(</span><span class=\"nx\">smileses</span><span class=\"p\">[</span><span class=\"nx\">i</span><span class=\"p\">]);</span>\n  <span class=\"nx\">mol</span> <span class=\"o\">=</span> <span class=\"nx\">cdk</span><span class=\"p\">.</span><span class=\"nf\">generate3dCoordinates</span><span class=\"p\">(</span><span class=\"nx\">mol</span><span class=\"p\">)</span>\n  <span class=\"nx\">unaligned</span><span class=\"p\">.</span><span class=\"nf\">add</span><span class=\"p\">(</span><span class=\"nx\">mol</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"kd\">var</span> <span class=\"nx\">aligned</span> <span class=\"o\">=</span> <span class=\"nx\">cdk</span><span class=\"p\">.</span><span class=\"nf\">kabsch</span><span class=\"p\">(</span><span class=\"nx\">unaligned</span><span class=\"p\">)</span>\n\n<span class=\"nx\">jmol</span><span class=\"p\">.</span><span class=\"nf\">load</span><span class=\"p\">(</span><span class=\"nx\">aligned</span><span class=\"p\">.</span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">));</span>\n<span class=\"k\">for </span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">;</span> <span class=\"nx\">i</span><span class=\"o\">&lt;</span><span class=\"nx\">aligned</span><span class=\"p\">.</span><span class=\"nf\">size</span><span class=\"p\">();</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n  <span class=\"nx\">jmol</span><span class=\"p\">.</span><span class=\"nf\">append</span><span class=\"p\">(</span><span class=\"nx\">aligned</span><span class=\"p\">.</span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">));</span>\n<span class=\"p\">}</span>\n</code></pre></div></div>\n\n<p>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\nget the idea.</p>\n\n<p>As said, there are two stories to adding this new functionality. Because we want all GUI interaction the user performs to be recordable\n(Scientist 1: <em>What did you do to get those nice results?</em> Scientist 2: <em>I pushed that button in the that long menu</em>. Scientist 1:\n<em>What button is that?</em> Scientist 2: <em>Wait, I send you the BSL script with a Google Wave.</em>)</p>\n\n<p>The managers that allow this recording is Bioclipse specific, and also the reason why it would not be trivial to make a general Bioclipse\nplugin for Eclipse… some Spring magic is used to inject the managers into the JavaScript language. Anyway, the second thing is to add\na 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\nnot using this daily (I’m doing science, not IT), but Ola was kind enough to give me the pointers for it.</p>\n\n<p>The below configuration snippet links the pop up action to Bioclipse Navigator content (you know, where your MDL SD, CML, script and other\nfiles show up in Bioclipse). <strong><em>But</em></strong> only if I have selected 3 or more files! And, only if those files are actually some molecular\ncontent with 3D coordinates! And Bioclipse inherits this functionality by using the Eclipse platform.</p>\n\n<div class=\"language-xml highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nt\">&lt;menuContribution</span>\n  <span class=\"na\">locationURI=</span><span class=\"s\">\"popup:org.eclipse.ui.popup.any?after=additions\"</span><span class=\"nt\">&gt;</span>\n  <span class=\"nt\">&lt;command</span>\n    <span class=\"na\">commandId=</span><span class=\"s\">\"net.bioclipse.cdk.ui.handlers.kabschAlignment\"</span>\n    <span class=\"na\">label=</span><span class=\"s\">\"Perform Kabsch Alignment\"</span>\n    <span class=\"na\">icon=</span><span class=\"s\">\"icons/molecule2D.png\"</span><span class=\"nt\">&gt;</span>\n    <span class=\"nt\">&lt;visibleWhen&gt;</span>\n      <span class=\"nt\">&lt;with</span> <span class=\"na\">variable=</span><span class=\"s\">\"selection\"</span><span class=\"nt\">&gt;</span>\n        <span class=\"nt\">&lt;count</span> <span class=\"na\">value=</span><span class=\"s\">\"(2-\"</span><span class=\"nt\">/&gt;</span>\n        <span class=\"nt\">&lt;iterate</span> <span class=\"na\">operator=</span><span class=\"s\">\"and\"</span> <span class=\"na\">ifEmpty=</span><span class=\"s\">\"false\"</span><span class=\"nt\">&gt;</span>\n          <span class=\"nt\">&lt;adapt</span> <span class=\"na\">type=</span><span class=\"s\">\"org.eclipse.core.resources.IResource\"</span><span class=\"nt\">&gt;</span>\n            <span class=\"nt\">&lt;or&gt;</span>\n              <span class=\"nt\">&lt;test</span> <span class=\"na\">property=</span><span class=\"s\">\"org.eclipse.core.resources.contentTypeId\"</span>\n                       <span class=\"na\">value=</span><span class=\"s\">\"net.bioclipse.contenttypes.cml.singleMolecule3d\"</span><span class=\"nt\">/&gt;</span>\n              <span class=\"nt\">&lt;test</span> <span class=\"na\">property=</span><span class=\"s\">\"org.eclipse.core.resources.contentTypeId\"</span>\n                       <span class=\"na\">value=</span><span class=\"s\">\"net.bioclipse.contenttypes.cml.singleMolecule5d\"</span><span class=\"nt\">/&gt;</span>\n              <span class=\"nt\">&lt;test</span> <span class=\"na\">property=</span><span class=\"s\">\"org.eclipse.core.resources.contentTypeId\"</span>\n                       <span class=\"na\">value=</span><span class=\"s\">\"net.bioclipse.contenttypes.mdlMolFile3D\"</span><span class=\"nt\">/&gt;</span>\n            <span class=\"nt\">&lt;/or&gt;</span>\n          <span class=\"nt\">&lt;/adapt&gt;</span>\n        <span class=\"nt\">&lt;/iterate&gt;</span>\n      <span class=\"nt\">&lt;/with&gt;</span>\n    <span class=\"nt\">&lt;/visibleWhen&gt;</span>\n  <span class=\"nt\">&lt;/command&gt;</span>\n<span class=\"nt\">&lt;/menuContribution&gt;</span>\n</code></pre></div></div>\n\n<p>When Bioclipse is run, this looks like:</p>\n\n<p><img src=\"/assets/images/kabsch.png\" alt=\"\" /></p>\n\n<p>And the alignment results will nicely show up in a Jmol viewer (while it is implemented as an Eclipse editor, it is not yet):</p>\n\n<p><img src=\"/assets/images/bioclipseKabsch1.png\" alt=\"\" /></p>\n\n<p>The first screenshot also shows the new pop-up menus for calculating two matrices for 3 or more molecules. One is based on the\n<a href=\"http://en.wikipedia.org/wiki/Root_mean_square_deviation\">RMSD</a> of the 3D atomic coordinats of the atoms in the\n<a href=\"http://blog.rguha.net/?p=113\">MCSS</a> (BTW, Asad’s SMSD work is making its way into the CDK library, and will be available in a\nlater Bioclipse version too.) and will create a distance matrix. The second new pop-up menu used the Tanimoto similarity\nmeasure based on CDK fingerprints on the selected chemical graphs. If the Bioclipse Statistics feature is installed, the\ncreated <a href=\"http://en.wikipedia.org/wiki/Comma-separated_values\">CSV</a> files will open up in a matrix editor:</p>\n\n<p><img src=\"/assets/images/rmsdMatrix.png\" alt=\"\" /></p>\n\n<p>Kabsch alignment of protein backbones is planned for a later Bioclipse release, but an important feature for\n<a href=\"http://www.ncbi.nlm.nih.gov/sites/entrez?term=proteochemometrics%20wikberg\">our groups proteochemometrics work</a>.</p>",
      "summary": "We recently submitted a second paper on Bioclipse, and have worked hard in the past two weeks on addressing the reviewers’ questions (and we love these feature requests! See also these two blogs). 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.",
      "image": "https://chem-bla-ics.linkedchemistry.info/assets/images/bioclipseKabsch1.png",
      "date_published": "2009-11-04T01:00:00+00:00",
      "date_modified": "2026-04-19T00:00:00+00:00",
      "tags": ["cheminf","cdk","bioclipse","jmol"],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
