<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://chem-bla-ics.linkedchemistry.info/feed/by_tag/rstats.xml" rel="self" type="application/atom+xml" /><link href="https://chem-bla-ics.linkedchemistry.info/" rel="alternate" type="text/html" /><updated>2026-05-17T12:12:40+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/feed/by_tag/rstats.xml</id><title type="html">chem-bla-ics</title><subtitle>Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.</subtitle><author><name>Egon Willighagen</name></author><entry><title type="html">Recovering full mass spectra from GC-MS data #2</title><link href="https://chem-bla-ics.linkedchemistry.info/2008/06/05/recovering-full-mass-spectra-from-gc-ms_05.html" rel="alternate" type="text/html" title="Recovering full mass spectra from GC-MS data #2" /><published>2008-06-05T00:00:00+00:00</published><updated>2008-06-05T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2008/06/05/recovering-full-mass-spectra-from-gc-ms_05</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2008/06/05/recovering-full-mass-spectra-from-gc-ms_05.html"><![CDATA[<p>Steffen reminded me over email that the particular machine only has a 1 dalton accuracy, and that the 150ppm
parameter setting is somewhat inappropriate. As <a href="https://chem-bla-ics.linkedchemistry.info/2008/06/04/recovering-full-mass-spectra-from-gc-ms.html">seen yesterday <i class="fa-solid fa-recycle fa-xs"></i></a>,
it works fine for larger peaks, but fails for low intensity peaks. So, I reran the <code class="language-plaintext highlighter-rouge">centWave</code> peak detection with 750, 1000 and 1250 ppm,
and that indeed make <a href="http://masspec.scripps.edu/xcms/xcms.php">XCMS</a> recover many more metabolites, and, also important, with more
extracted ion chromatograms per metabolite, yielding a more accurate mass spectrum. At the same time, I notice that profiles are not
as clean as before, but that’s where the peak fitting with (Modified) Gaussians come into play.</p>

<p>The original 150ppm results:</p>

<p><img src="/assets/images/ionChromPlot4.png" alt="" /></p>

<p>The 750ppm results:</p>

<p><img src="/assets/images/map5.png" alt="" /></p>

<p>And for 1000ppm (1250ppm did not further improve):</p>

<p><img src="/assets/images/map6.png" alt="" /></p>]]></content><author><name>Egon Willighagen</name></author><category term="metabolomics" /><category term="rstats" /><summary type="html"><![CDATA[Steffen reminded me over email that the particular machine only has a 1 dalton accuracy, and that the 150ppm parameter setting is somewhat inappropriate. As seen yesterday , it works fine for larger peaks, but fails for low intensity peaks. So, I reran the centWave peak detection with 750, 1000 and 1250 ppm, and that indeed make XCMS recover many more metabolites, and, also important, with more extracted ion chromatograms per metabolite, yielding a more accurate mass spectrum. At the same time, I notice that profiles are not as clean as before, but that’s where the peak fitting with (Modified) Gaussians come into play.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/map6.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/map6.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Recovering full mass spectra from GC-MS data</title><link href="https://chem-bla-ics.linkedchemistry.info/2008/06/04/recovering-full-mass-spectra-from-gc-ms.html" rel="alternate" type="text/html" title="Recovering full mass spectra from GC-MS data" /><published>2008-06-04T00:00:00+00:00</published><updated>2008-06-04T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2008/06/04/recovering-full-mass-spectra-from-gc-ms</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2008/06/04/recovering-full-mass-spectra-from-gc-ms.html"><![CDATA[<p>One aspect not covered in detail by the <a href="http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=1134">ongoing</a>
<a href="http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=1133">discussion</a> on <a href="http://www.simbiosys.ca/blog/2008/06/03/research-and-software-testing/">unit</a>
<a href="http://www.simbiosys.ca/blog/2008/06/03/quality-in-chemical-software-the-debate-continues/">testing</a> quality control for scientific software,
is detecting regressions. This is the most important reason why unit testing is superior to random testing. Putting someone behind a
keyboard to tests things is nice, but this process has to be repeated, as the testing has to be repeated over and over again. Just
to make sure it works for whatever new input, for whatever refactoring, for whatever new cool feature.</p>

<p>Another advantage of unit testing over random testing, is in the fact that it provides you with statistics (lies, damn lies, and statistics).
These statistics do give some insight where to start looking, though if really written properly, each unit test has the ability to test a
single line of functional code. That’s where code coverage testing is useful, and should be part of the process too. I have no idea what
commercial chemoinformatics software vendors do regarding quality control, but I assume they make heavily use of code coverage too.</p>

<p><a href="http://www.simbiosys.ca/blog/">SimBioSys Blog</a> mentioned the use of annual software competitions. That’s important indeed, and provides
nice means to compare options, but it is not unit testing; it’s a macroscopic test of functionality, and has little means to identifying
underlying fails. Is a bad CASP score caused by wrong isotope masses used in the force field, or by the approach? I’m sure no one can tell.</p>

<p>Anyway, refactoring is a principle activity of software engineers, and unit testing manages that process in some way. Taking unit testing
to the extreme, any new coding starts with writing the unit tests for the new API. Only when those are finished, the functionality is
actually implemented.</p>

<p>Ok, now something less boring. GC-MS-based <a href="http://en.wikipedia.org/wiki/Metabolite">Metabolomics</a> with metabolite identity in particular.
Though I believe there are other uses too, for example, in between sample alignment, the recovery of a full mass spectrum is particularly
important for metabolite identification of new, yet unknown compounds (yes, even dereplication is already non-trivial, because of the lack
of free (open data preferably), machine accessible (open standards!) database of mass spectra (using different ionization methods). Look
up by monoisotopic mass is possible in, for example, <a href="http://www.chemspider.com/">ChemSpider</a> (see
<a href="https://chem-bla-ics.linkedchemistry.info/2007/11/26/metabolomics-workflows-in-taverna.html">this blog <i class="fa-solid fa-recycle fa-xs"></i></a>), but look up via full spectrum is less common.
The number of databases are growing, and likewise the openness and accessibility. Who know what the
<a href="http://www.metabolomicscentre.nl/">Netherlands Metabolomics Center</a>’s support platform will be able to offer in a year or two.</p>

<p>Now, unit tests could, for example, tests that some algorithm can deconvolute the following GC-MS data:</p>

<p><img src="/assets/images/ionChromPlot3.png" alt="" /></p>

<p>The red line is the TIC for the chromatogram, while the black lines are the extracted ion chromatograms of individual m/z (ion) peaks in
the mass spectral dimension, and, only of peaks detected using <a href="http://masspec.scripps.edu/xcms/xcms.php">XCMS</a> using the new centWave
method by Ralf. Now, the results are not perfect in this diagram, but it does seem to recognize all five eluting metabolites (that’s the
amount I would guess are eluting). However, I am more interested in the methods ability to recover all m/z peaks for each metabolite, to
allow me to identify the structure, or at least make a best possible educated guess, or, with a bit of luck the compound is already known,
I can dereplicate it against some database (Guesses differ, but, particularly in plant metabolomics, more than half of the metabolites we
can now detect have a yet undetermined structure).</p>

<p>Now, I’m sure any method will be able to deconvolute these compounds. They are well separated, show a nice gaussian shape, and deconvolution
based on just the chromatographic domain will likely already work. It starts to become more difficult for the low intensity peaks, those with
low signal-to-noise ratios, or those with a different elution profile (e.g. peak tailing). Deconvolution typically requires some peak shape
(commonly Gaussian or Exponential-Modified Gaussian), while experimental data typically does not have that. Jim Downing recently introduced
me to the term ‘Long Tail Science’ (via <a href="http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=938">this blog from Peter</a>):</p>

<blockquote>
  <p>Jim Downing cam up with the idea of “Long Tail Science”. The Long Tail is the observation that in the modern web the tail of
the distribution is often more important than the few large players. Large numbers of small units is an important concept. And
it’s complimentary and complementary.</p>
</blockquote>

<p>This <em>long tail</em> of ion chromatograms is what I am interested. I do not care about the usual suspects, I want to learn about the 80%
unknown metabolites that are found in samples. What can we learn about those? What is in the long tail of detected metabolites?</p>

<p>Now, I know I am not an expert in tuning <code class="language-plaintext highlighter-rouge">centWave</code> parameters, so I might as well be passing garbage in, but the method is not robust
against me:</p>

<div class="language-R highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">xr</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">read</span><span class="p">(</span><span class="n">file</span><span class="o">=</span><span class="s2">"someClosedData.cdf"</span><span class="p">)</span><span class="w">
</span><span class="n">p</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">findPeaks</span><span class="p">(</span><span class="n">xr</span><span class="p">,</span><span class="w"> </span><span class="n">method</span><span class="o">=</span><span class="s2">"centWave"</span><span class="p">,</span><span class="w"> </span><span class="n">ppm</span><span class="o">=</span><span class="m">150</span><span class="p">,</span><span class="w"> </span><span class="n">peakwidth</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="m">5</span><span class="p">,</span><span class="m">25</span><span class="p">))</span><span class="w">
</span></code></pre></div></div>

<p>But it fails to detect some of the metabolites in the long tail:</p>

<p><img src="/assets/images/ionChromPlot4.png" alt="" /></p>

<p>As you can observe from the low S/N ratio on the red TIC line, you can notice that we are at low intensity metabolites. Assuming some
peak shape is at such noise levels much more difficult than with better S/N ratios. The <code class="language-plaintext highlighter-rouge">centWave</code> uses a really nice non-parametric approach
here… well, not entirely, otherwise it would not have failed over my parameter settings :) Steffen/Ralf, what was the DOI again?</p>

<p>Now, I found these missed metabolites by manual browsing the data, data exploration. SBS <a href="http://www.simbiosys.ca/blog/2008/06/03/research-and-software-testing/">wrote</a>
<em>[t]here are four distinct type of tests: Func, Speed, Error and Robust</em>. I believe the above situation is really a fifth class: it’s
neither a true <em>functional test</em>, but it is not an true <em>robustness test</em> either. The input is valid, but of such that it moves towards
invalid input. Scientific data is a continuous spectrum of input (remember the <a href="https://chem-bla-ics.linkedchemistry.info/2008/06/03/good-scientists-pimp-there-research-was.html">oil in, oil out <i class="fa-solid fa-recycle fa-xs"></i></a>).
Software must be tested against such borderline data; repeatedly, over and over again, for any version, for any code change, for any
platform.</p>

<p>Oh, and code quality has nothing to do with trust. Give me statistics (I can interpret the scope of them) over any trust assurance.</p>]]></content><author><name>Egon Willighagen</name></author><category term="metabolomics" /><category term="rstats" /><summary type="html"><![CDATA[One aspect not covered in detail by the ongoing discussion on unit testing quality control for scientific software, is detecting regressions. This is the most important reason why unit testing is superior to random testing. Putting someone behind a keyboard to tests things is nice, but this process has to be repeated, as the testing has to be repeated over and over again. Just to make sure it works for whatever new input, for whatever refactoring, for whatever new cool feature.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/ionChromPlot3.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/ionChromPlot3.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">An R-based genetic algorithm</title><link href="https://chem-bla-ics.linkedchemistry.info/2007/11/19/r-based-genetic-algorithm.html" rel="alternate" type="text/html" title="An R-based genetic algorithm" /><published>2007-11-19T00:00:00+00:00</published><updated>2007-11-19T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2007/11/19/r-based-genetic-algorithm</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2007/11/19/r-based-genetic-algorithm.html"><![CDATA[<p>During my PhD I wrote a simple but <a href="http://cran.r-project.org/src/contrib/Descriptions/genalg.html">effective genetic algorithm</a> package for
<a href="http://www.r-project.org/">R</a>. Because there was a bug recently found, and there is interest in extending the functionality,
I have set up a <a href="http://sourceforge.net/">SourceForge</a> project called
<a href="http://sourceforge.net/projects/genalg">genalg</a>.</p>

<p>The package provides GA support for binary and real-value chromosomes (and integer chromosomes is something that will
be added soon), and allows to use custom evaluation functions. Here is some example code:</p>

<div class="language-R highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># optimize two values to match pi and sqrt(50)</span><span class="w">
</span><span class="n">evaluate</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="k">function</span><span class="p">(</span><span class="n">string</span><span class="o">=</span><span class="nf">c</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="n">returnVal</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">NA</span><span class="p">;</span><span class="w">
    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nf">length</span><span class="p">(</span><span class="n">string</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="m">2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
        </span><span class="n">returnVal</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">abs</span><span class="p">(</span><span class="n">string</span><span class="p">[</span><span class="m">1</span><span class="p">]</span><span class="o">-</span><span class="nb">pi</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nf">abs</span><span class="p">(</span><span class="n">string</span><span class="p">[</span><span class="m">2</span><span class="p">]</span><span class="o">-</span><span class="nf">sqrt</span><span class="p">(</span><span class="m">50</span><span class="p">));</span><span class="w">
    </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w">
        </span><span class="n">stop</span><span class="p">(</span><span class="s2">"Expecting a chromosome of length 2!"</span><span class="p">);</span><span class="w">
    </span><span class="p">}</span><span class="w">
    </span><span class="n">returnVal</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="n">monitor</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="k">function</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="c1"># plot the population</span><span class="w">
    </span><span class="n">xlim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="n">obj</span><span class="o">$</span><span class="n">stringMin</span><span class="p">[</span><span class="m">1</span><span class="p">],</span><span class="w"> </span><span class="n">obj</span><span class="o">$</span><span class="n">stringMax</span><span class="p">[</span><span class="m">1</span><span class="p">]);</span><span class="w">
    </span><span class="n">ylim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="n">obj</span><span class="o">$</span><span class="n">stringMin</span><span class="p">[</span><span class="m">2</span><span class="p">],</span><span class="w"> </span><span class="n">obj</span><span class="o">$</span><span class="n">stringMax</span><span class="p">[</span><span class="m">2</span><span class="p">]);</span><span class="w">
    </span><span class="n">plot</span><span class="p">(</span><span class="n">obj</span><span class="o">$</span><span class="n">population</span><span class="p">,</span><span class="w"> </span><span class="n">xlim</span><span class="o">=</span><span class="n">xlim</span><span class="p">,</span><span class="w"> </span><span class="n">ylim</span><span class="o">=</span><span class="n">ylim</span><span class="p">,</span><span class="w"> </span><span class="n">xlab</span><span class="o">=</span><span class="s2">"pi"</span><span class="p">,</span><span class="w"> </span><span class="n">ylab</span><span class="o">=</span><span class="s2">"sqrt(50)"</span><span class="p">);</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="n">rbga.results</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rbga</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="m">1</span><span class="p">),</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="m">5</span><span class="p">,</span><span class="w"> </span><span class="m">10</span><span class="p">),</span><span class="w"> </span><span class="n">monitorFunc</span><span class="o">=</span><span class="n">monitor</span><span class="p">,</span><span class="w">
    </span><span class="n">evalFunc</span><span class="o">=</span><span class="n">evaluate</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"> </span><span class="n">mutationChance</span><span class="o">=</span><span class="m">0.01</span><span class="p">)</span><span class="w">
</span><span class="n">plot</span><span class="p">(</span><span class="n">rbga.results</span><span class="p">)</span><span class="w">
</span><span class="n">plot</span><span class="p">(</span><span class="n">rbga.results</span><span class="p">,</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"hist"</span><span class="p">)</span><span class="w">
</span><span class="n">plot</span><span class="p">(</span><span class="n">rbga.results</span><span class="p">,</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"vars"</span><span class="p">)</span><span class="w">
</span></code></pre></div></div>]]></content><author><name>Egon Willighagen</name></author><category term="rstats" /><category term="chemometrics" /><summary type="html"><![CDATA[During my PhD I wrote a simple but effective genetic algorithm package for R. Because there was a bug recently found, and there is interest in extending the functionality, I have set up a SourceForge project called genalg.]]></summary></entry><entry><title type="html">R News special issue on chemistry</title><link href="https://chem-bla-ics.linkedchemistry.info/2006/08/25/r-news-special-issue-on-chemistry.html" rel="alternate" type="text/html" title="R News special issue on chemistry" /><published>2006-08-25T00:00:00+00:00</published><updated>2006-08-25T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2006/08/25/r-news-special-issue-on-chemistry</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2006/08/25/r-news-special-issue-on-chemistry.html"><![CDATA[<p><a href="http://cran.r-project.org/doc/Rnews/">R News</a> just released a <a href="http://cran.r-project.org/doc/Rnews/Rnews_2006-3.pdf">special issue</a> on
the use of the versatile statistics program <a href="http://www.r-project.org/">R</a> in chemistry. It features six articles amongst which one by
Rajarshi Guha on the <a href="http://cdk.sf.net/">CDK</a>-R bridge, and one by my supervisor and me on the use of self-organizing maps to
cluster crystal structures.</p>]]></content><author><name>Egon Willighagen</name></author><category term="rstats" /><category term="chemistry" /><summary type="html"><![CDATA[R News just released a special issue on the use of the versatile statistics program R in chemistry. It features six articles amongst which one by Rajarshi Guha on the CDK-R bridge, and one by my supervisor and me on the use of self-organizing maps to cluster crystal structures.]]></summary></entry><entry><title type="html">A R GUI: rkward</title><link href="https://chem-bla-ics.linkedchemistry.info/2005/11/08/r-gui-rkward.html" rel="alternate" type="text/html" title="A R GUI: rkward" /><published>2005-11-08T00:00:00+00:00</published><updated>2005-11-08T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2005/11/08/r-gui-rkward</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2005/11/08/r-gui-rkward.html"><![CDATA[<p>The great thing about open source is that… it’s open.</p>

<p>When I was browsing the internet just now, I dropped in on <a href="http://dot.kde.org/">KDE Dot News</a>. In the rightside column, there is a feed of
new KDE software from <a href="http://www.kde-apps.org/">KDE-apps.org</a>. A new version of my favoriate music player,
<a href="http://amarok.kde.org/">amarok</a>, lured me to the KDE-apps website, where I saw <a href="http://rkward.sf.net/">rkward</a> is latest announcement. The funny
name, and the categorization as scientific, triggered some interest on my side, and it turned out to be a graphical frontend to my favorite statistics program,
<a href="http://www.r-project.org/">R</a>.</p>

<p>Ok, they had a <a href="http://www.debian.org/">Debian</a> package, and the debian/ build dir in the tar.gz so I downloaded it and started making a
<a href="http://www.woc.science.ru.nl/devel/egonw/rkward_0.3.4_i386.deb">Kubuntu 5.10 package</a>. While doing this I saw some notice about the R syntax highlighting
used, which conflicts with the older version in the Kate packages.</p>

<p>Then I realized that a long time ago, I wrote such syntax highlighting for Kate, so my attention was lured again. And, indeed, they use my syntax highlighting,
though <a href="http://www.uni-kiel.de/agrarpol/ahenningsen/index-e.html">extended later</a> (somewhere down the page).</p>

<p>And this makes me happy. The syntax highlighting was useful to me in the past, but apparently to a lot of other people too. And because I released it
as GPL, back then, it now appears in rkward! Yes, a really like open source :)</p>]]></content><author><name>Egon Willighagen</name></author><category term="rstats" /><category term="kde" /><summary type="html"><![CDATA[The great thing about open source is that… it’s open.]]></summary></entry><entry><title type="html">R/CDK install fails on GCC 4.0 systems</title><link href="https://chem-bla-ics.linkedchemistry.info/2005/11/02/rcdk-install-fails-on-gcc-40-systems.html" rel="alternate" type="text/html" title="R/CDK install fails on GCC 4.0 systems" /><published>2005-11-02T00:00:00+00:00</published><updated>2005-11-02T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2005/11/02/rcdk-install-fails-on-gcc-40-systems</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2005/11/02/rcdk-install-fails-on-gcc-40-systems.html"><![CDATA[<p>Some time ago <a href="http://blue.chem.psu.edu/~rajarshi/">Rajarshi Guha</a> introduced <a href="http://www.r-project.org/">R</a> bindings for the
<a href="http://cdk.sf.net/">CDK</a> (see his CDK News <a href="http://almost.cubic.uni-koeln.de/cdk/cdk_top/cdk_news/">articles</a>), and
today I tried to install his rcdk package that makes it happen.</p>

<p>However, it requires <a href="http://www.omegahat.org/RSJava/">SJava</a> which compiled fine on other machines, but not on my AMD64
machine. The problem seems to be related to the GNU GCC 4.0 compiler I have installed. Compiling with 3.4 works fine,
but 4.0 complains with:</p>

<div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CtoJava.cweb:215: error: static declaration of <span class="s1">'std_env'</span> follows non-static declaration
CtoJava.cweb:195: error: previous declaration of <span class="s1">'std_env'</span> was here
</code></pre></div></div>

<p>Googling, learned me that I am not the only one with this problem, but did not find any solution. If you know how to fix this problem, please leave a message in the comments.</p>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="rstats" /><summary type="html"><![CDATA[Some time ago Rajarshi Guha introduced R bindings for the CDK (see his CDK News articles), and today I tried to install his rcdk package that makes it happen.]]></summary></entry></feed>