{
  "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/2008/04/07/cdkmetabolomicschemometrics.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/f2ajz-tmr63",
      "url": "https://chem-bla-ics.linkedchemistry.info/2008/04/07/cdkmetabolomicschemometrics.html",
      "title": "The CDK/Metabolomics/Chemometrics Unconference results",
      "content_html": "<p>As <a href=\"https://chem-bla-ics.linkedchemistry.info/2008/04/03/t-plus-18-hours-dr-and-preparing-for.html\">announced earlier <i class=\"fa-solid fa-recycle fa-xs\"></i></a>, Miguel, Velitchka,\n<a href=\"http://www.steinbeck-molecular.de/steinblog/\">Christoph</a> and I held a small <a href=\"http://cdk.sf.net/\">CDK</a>/Metabolomics/Chemometrics\nunconference. We started late, and did not have an evening program, resulting in not overly much results. However, we did do\n<em><a href=\"http://chem-bla-ics.blogspot.com/search?q=molecular+chemometrics\">molecular chemometrics</a></em>. <!-- keep link --></p>\n\n<p>We used the <a href=\"http://www.r-project.org/\">R statistics software</a> together with Rajarshi’s <a href=\"http://cran.r-project.org/web/packages/rcdk/index.html\">rcdk</a>\npackage (an R wrapper around the CDK library) and Ron’s (my PhD supervisor) <a href=\"http://cran.r-project.org/web/packages/pls/index.html\">PLS</a>\npackage (see <a href=\"http://www.jstatsoft.org/v18/i02/\">this paper</a>), to predict retention indices for a number of metabolites.</p>\n\n<p>We ended up with this R script:</p>\n\n<div class=\"language-R highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"n\">library</span><span class=\"p\">(</span><span class=\"s2\">\"rJava\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">library</span><span class=\"p\">(</span><span class=\"s2\">\"rcdk\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">library</span><span class=\"p\">(</span><span class=\"s2\">\"pls\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">mols</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">load.molecules</span><span class=\"p\">(</span><span class=\"s2\">\"data_cdk.sdf\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">selection</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">get.desc.names</span><span class=\"p\">()</span><span class=\"w\">\n</span><span class=\"n\">selection</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">selection</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"n\">which</span><span class=\"p\">(</span><span class=\"n\">selection</span><span class=\"o\">==</span><span class=\"s2\">\"org.openscience.cdk.qsar.descriptors.molecular.AminoAcidCountDescriptor\"</span><span class=\"p\">)]</span><span class=\"w\">\n</span><span class=\"n\">x</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">eval.desc</span><span class=\"p\">(</span><span class=\"n\">mols</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">selection</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">verbose</span><span class=\"o\">=</span><span class=\"kc\">TRUE</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">x2</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">x</span><span class=\"p\">[,</span><span class=\"n\">apply</span><span class=\"p\">(</span><span class=\"n\">x</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"m\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"k\">function</span><span class=\"p\">(</span><span class=\"n\">a</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"nf\">all</span><span class=\"p\">(</span><span class=\"o\">!</span><span class=\"nf\">is.na</span><span class=\"p\">(</span><span class=\"n\">a</span><span class=\"p\">))})]</span><span class=\"w\">\n</span><span class=\"n\">y</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">read.table</span><span class=\"p\">(</span><span class=\"s2\">\"data_cdk_RI\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">input</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">data.frame</span><span class=\"p\">(</span><span class=\"n\">x2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">y</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">pls.model</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"n\">plsr</span><span class=\"p\">(</span><span class=\"n\">V1</span><span class=\"w\"> </span><span class=\"o\">~</span><span class=\"w\"> </span><span class=\"n\">.</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"m\">50</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">data</span><span class=\"o\">=</span><span class=\"n\">input</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">validation</span><span class=\"o\">=</span><span class=\"s2\">\"CV\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">summary</span><span class=\"p\">(</span><span class=\"n\">pls.model</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">RMSEP</span><span class=\"p\">(</span><span class=\"n\">pls.model</span><span class=\"p\">))</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">pls.model</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">ncomp</span><span class=\"o\">=</span><span class=\"m\">20</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">abline</span><span class=\"p\">(</span><span class=\"m\">0</span><span class=\"p\">,</span><span class=\"m\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">col</span><span class=\"o\">=</span><span class=\"s2\">\"red\"</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">plot</span><span class=\"p\">(</span><span class=\"n\">pls.model</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">\"loadings\"</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"n\">comps</span><span class=\"o\">=</span><span class=\"m\">1</span><span class=\"o\">:</span><span class=\"m\">2</span><span class=\"p\">)</span><span class=\"w\">\n</span><span class=\"n\">savehistory</span><span class=\"p\">(</span><span class=\"s2\">\"finalHistory.R\"</span><span class=\"p\">)</span><span class=\"w\">\n</span></code></pre></div></div>\n\n<p>The <code class=\"language-plaintext highlighter-rouge\">AminoAcidCountDescriptor</code> threw us a <code class=\"language-plaintext highlighter-rouge\">NullPointerException</code> and there were a few NAs in the resulting matrix. The CV results were\nnot so good as Velitchka’s best models, but still a good start:</p>\n\n<p><img src=\"/assets/images/riPred.png\" alt=\"\" /></p>\n\n<p>No variable selection; 200 objects, 190 variables.</p>\n\n<p>Questions:</p>\n\n<ul>\n  <li>Can we do this in <a href=\"http://www.bioclipse.net/\">Bioclipse2</a> too?</li>\n  <li>Can we improve the default CDK descriptor parameters to maximize the column count?</li>\n  <li>Rajarshi, what would be involved to write some wrapper code for atomic descriptors for rcdk?</li>\n</ul>\n\n<h4>References</h4>\n<div class=\"csl-bib-body\">\n    <div class=\"csl-entry\">Mevik, B.-H., &#38; Wehrens, R. (2007). The                     <b>pls</b>                     Package: Principal Component and Partial Least Squares Regression in                     <i>R</i>. <i>Journal of Statistical Software</i>, <i>18</i>(2). https://doi.org/10.18637/jss.v018.i02 <a href=\"https://doi.org/10.18637/jss.v018.i02\">CrossRef</a> <a href=\"https://qlever.scholia.wiki/doi/10.18637/jss.v018.i02\">Scholia</a></div>\n  </div>",
      "summary": "As announced earlier , Miguel, Velitchka, Christoph and I held a small CDK/Metabolomics/Chemometrics unconference. We started late, and did not have an evening program, resulting in not overly much results. However, we did do molecular chemometrics.",
      "image": "https://chem-bla-ics.linkedchemistry.info/assets/images/riPred.png",
      "date_published": "2008-04-07T00:10:00+00:00",
      "date_modified": "2025-10-11T00:00:00+00:00",
      "tags": ["cdk","defense","phd","metabolomics","cheminf","chemometrics"],
      "_references": [
        
          
          
            { "url": "https://doi.org/10.18637/jss.v018.i02", "doi": "10.18637/jss.v018.i02"
             }
            
          
        ],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
