<?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/java.xml" rel="self" type="application/atom+xml" /><link href="https://chem-bla-ics.linkedchemistry.info/" rel="alternate" type="text/html" /><updated>2026-10-07T12:46:55+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/feed/by_tag/java.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">Groovy Cheminformatics 4th edition</title><link href="https://chem-bla-ics.linkedchemistry.info/2012/01/15/groovy-cheminformatics-4th-edition.html" rel="alternate" type="text/html" title="Groovy Cheminformatics 4th edition" /><published>2012-01-15T00:00:00+00:00</published><updated>2012-01-15T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2012/01/15/groovy-cheminformatics-4th-edition</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2012/01/15/groovy-cheminformatics-4th-edition.html"><![CDATA[<p>Six month was not quite the amount of time I anticipated between the third and fourth edition, but I finally managed
to upload edition 1.4.7-0 of my <a href="http://www.lulu.com/product/paperback/groovy-cheminformatics-with-the-chemistry-development-kit/18825420">Groovy Cheminformatics</a>
book. The first three editions sold 37 copies, including two for myself. Enough to feel supported and to continue working on it.</p>

<p>So, this new edition is again thicker, summing up to 152 pages now, which is 28 pages more than
<a href="https://chem-bla-ics.linkedchemistry.info/2011/07/31/groovy-cheminformatics-3rd-edition.html">the 3rd edition <i class="fa-solid fa-recycle fa-xs"></i></a>. Indeed, the table of contents
is more than half a page longer in itself, though, just barely, still fitting on four pages. In fact, I had to remove one (new)
subsection title, because it would take otherwise two further pages.</p>

<p>The new content is again a mix of sections and chapters. While writing new chapters, I find myself realizing I need to cover
more basics. Those get typically added as new sections. I did not get many feature requests, except for one email pointing me
the text promised how to interpret and handle failing atom type perception, which explains one of the new sections.
The full list of new content is:</p>

<ul>
  <li>Section 2.1.4: explaining the three flavors of atomic coordinates</li>
  <li>Extended Section 2.2: added detail about electron counts of bonds (partly in reply to this post by Rich)</li>
  <li>Chapter 5 “Protein and DNA”: four pages, mostly about PDB files, and the matching CDK data structure</li>
  <li>Chapter 6 “IChemObjectBuilders”: four pages explaining the four alternative builders CDK 1.4.7 has</li>
  <li>Section 7.8: a new section with recipes on how to post-process read input, discussing MDL molfiles only now. It talks about what information is present in the file format, and what steps must be untertaken to add missing information</li>
  <li>Section 8.2.4 “No atom type perceived?!”</li>
  <li>Section 11.4: describes how to depict aromatic rings</li>
  <li>Section 11.5: describes how to change the background color of depictions</li>
  <li>Section 13.4: explains how to calculate the Van der Waals volume of molecules</li>
  <li>Section 18.1.3: discussing the API improvement in the iterating readers</li>
  <li>Appendix C: a list of all descriptors provided by the CDK</li>
  <li>Appendix D: a list of file formats known by the CDK, indicating which has readers and writers</li>
</ul>

<p>On top of that, I improved other bits of the book too, such as the resolution of the depictions of molecules,
as well as those of various diagrams. Also the number of scripts has seriously gone up, from 94 to 134!</p>

<p>Appendix C is a prelude to a chapter I am already writing, but did not get finished yet: a chapter about
descriptor calculation. But since I just started a new post-doc position, it may take another six months
for that chapter to make it into print.</p>

<p>The paperbak is <a href="http://www.lulu.com/product/paperback/groovy-cheminformatics-with-the-chemistry-development-kit/18825420">available from Lulu.com</a>,
an on-demand publisher, as well as <a href="http://www.lulu.com/product/ebook/groovy-cheminformatics-with-the-chemistry-development-kit/18825437">this ebook version</a>.</p>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cdkbook" /><category term="java" /><category term="cheminf" /><summary type="html"><![CDATA[Six month was not quite the amount of time I anticipated between the third and fourth edition, but I finally managed to upload edition 1.4.7-0 of my Groovy Cheminformatics book. The first three editions sold 37 copies, including two for myself. Enough to feel supported and to continue working on it.]]></summary></entry><entry><title type="html">Groovy Cheminformatics 3rd edition</title><link href="https://chem-bla-ics.linkedchemistry.info/2011/07/31/groovy-cheminformatics-3rd-edition.html" rel="alternate" type="text/html" title="Groovy Cheminformatics 3rd edition" /><published>2011-07-31T00:00:00+00:00</published><updated>2011-07-31T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2011/07/31/groovy-cheminformatics-3rd-edition</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2011/07/31/groovy-cheminformatics-3rd-edition.html"><![CDATA[<p><strong>Update</strong>: the <a href="https://chem-bla-ics.linkedchemistry.info/2012/01/15/groovy-cheminformatics-4th-edition.html">fourth edition <i class="fa-solid fa-recycle fa-xs"></i></a> is out.</p>

<p>I am starting to get the hang of this publishing soon, publishing often thing, and
<a href="http://www.lulu.com/product/paperback/groovy-cheminformatics-with-the-chemistry-development-kit/16378378">just uploaded</a>
edition 1.4.1-0 of the <a href="https://chem-bla-ics.linkedchemistry.info/2011/02/06/groovy-cheminformatics.html">Groovy Cheminformatics <i class="fa-solid fa-recycle fa-xs"></i></a> book.
The cover is the same (with one typo fix), and the content is 20 pages thicker. True, six of those pages are isotope
masses of all natural isotopes. That leaves 14 pages with this new content:</p>

<ul>
  <li>Section 2.7 on line notations with 2.7.1 about reading and writing SMILES</li>
  <li>Section 6.3 about Sybyl (mol2) atom types</li>
  <li>Section 7.4 on atom numbering with 7.4.1 on Morgan atom numbers, and 7.4.2 on InChI atom numbers</li>
  <li>Chapter 9 on molecule depiction with the new rendering code, with
    <ul>
      <li>Section 9.1 on drawing molecules,</li>
      <li>Section 9.2 on rendering parameters, and</li>
      <li>Section 9.3 on the generator API and how to add custom content</li>
    </ul>
  </li>
  <li>Section 11.4 on calculating aromaticity</li>
  <li>Appendix A.2 listing all Sybyl atom types</li>
  <li>Appendix B listing all naturally occurring isotopes</li>
</ul>

<p>Features requests most welcome.</p>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cdkbook" /><category term="java" /><category term="cheminf" /><summary type="html"><![CDATA[Update: the fourth edition is out.]]></summary></entry><entry><title type="html">Groovy Cheminformatics…</title><link href="https://chem-bla-ics.linkedchemistry.info/2011/02/06/groovy-cheminformatics.html" rel="alternate" type="text/html" title="Groovy Cheminformatics…" /><published>2011-02-06T00:00:00+00:00</published><updated>2011-02-06T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2011/02/06/groovy-cheminformatics</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2011/02/06/groovy-cheminformatics.html"><![CDATA[<p><strong>Update</strong>: the <a href="https://chem-bla-ics.linkedchemistry.info/2012/01/15/groovy-cheminformatics-4th-edition.html">fourth edition <i class="fa-solid fa-recycle fa-xs"></i></a> is out.</p>

<p>Some project are never finished. Neither is this one, but it is never too late to change how things work, so, taking advantage of
publishing-on-demand, here I introduce the release-soon, release-often equivalent of cheminformatics books, my
<a href="http://www.lulu.com/product/paperback/groovy-cheminformatics-with-the-chemistry-development-kit/14745007">Groovy Cheminformatics with the Chemistry Development Kit</a>
book:</p>

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

<p>With a serious discount for just being the first edition (1.3.8-0), but still counting at 72 pages with 75 code examples, this edition
marks a personal milestone (and probably not much more than that). There remains much to do, but I promised a release by tomorrow, so
here it is. Next releases will contain more code examples, more functionality descriptions, and more literature reviewing where such
code is used in science. The plan is to make new editions with each new <a href="http://cdk.sf.net/">CDK</a> release, as well as new editions
when I added a new chapter, section, or just paragraph. But, there will not be a Nightly build service anytime soon.</p>

<p>The current table of content is as follows:</p>

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

<p>Now, the book content is <strong><em>not</em></strong> open content. However, it contains nothing that is not available in other means. It’s just the
compilation that makes this book interesting, as well as that I put effort in ensuring the code examples remain working.
For that, I ask a minor financial contribution.</p>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="java" /><category term="cheminf" /><category term="cdkbook" /><summary type="html"><![CDATA[Update: the fourth edition is out.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://chem-bla-ics.linkedchemistry.info/assets/images/cdkBookLulu.png" /><media:content medium="image" url="https://chem-bla-ics.linkedchemistry.info/assets/images/cdkBookLulu.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Adding a new dictionary to Oscar</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/11/29/adding-new-dictionary-to-oscar.html" rel="alternate" type="text/html" title="Adding a new dictionary to Oscar" /><published>2010-11-29T00:00:00+00:00</published><updated>2010-11-29T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/11/29/adding-new-dictionary-to-oscar</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/11/29/adding-new-dictionary-to-oscar.html"><![CDATA[<p>Say, you have your own dictionary of chemical compounds. For example, like your company’s list of yet-unpublished
<a href="http://chembl.blogspot.com/2010/08/research-code-to-company-name-mapping.html">internal research codes</a>. Still,
you want to index your local <a href="http://en.wikipedia.org/wiki/LISTSERV">listserv</a> to make it easier for your
employees to search for particular chemistry you are working on and perhaps related to something done at
other company sites. This is what Oscar is for.</p>

<p>But, it will need to understand things like <a href="http://chembl.blogspot.com/p/research-code-stems.html">UK-92,480</a>.
This is made possible with the Oscar4 refactorings we are currently working on. You only need to
<a href="https://chem-bla-ics.linkedchemistry.info/2010/10/28/oscar4-java-api-chemical-name.html">register a dedicated dictionary <i class="fa-solid fa-recycle fa-xs"></i></a>.
Oscar4 has a default dictionary which corresponds to the dictionary used by Oscar3, and a dictionary based on
<a href="http://www.ebi.ac.uk/chebi/">ChEBI</a> (an old version) (see <a href="http://bitbucket.org/wwmm/oscar4/src/247b8deef001/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/core/">this folder</a>
in the source code repository).</p>

<p>Adding a new dictionary is very straightforward: you just implement the <a href="http://bitbucket.org/wwmm/oscar4/src/247b8deef001/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/IChemNameDict.java">IChemNameDict</a>
interface. This is, for example, what the OPSIN dictionary looks like:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">OpsinDictionary</span>
<span class="kd">implements</span> <span class="nc">IChemNameDict</span><span class="o">,</span> <span class="nc">IInChIProvider</span> <span class="o">{</span>

  <span class="kd">private</span> <span class="no">URI</span> <span class="n">uri</span><span class="o">;</span>

  <span class="kd">public</span> <span class="nf">OpsinDictionary</span><span class="o">()</span> <span class="kd">throws</span> <span class="nc">URISyntaxException</span> <span class="o">{</span>
    <span class="k">this</span><span class="o">.</span><span class="na">uri</span> <span class="o">=</span> <span class="k">new</span> <span class="no">URI</span><span class="o">(</span>
      <span class="s">"http://wwmm.cam.ac.uk/oscar/dictionariy/opsin/"</span>
    <span class="o">);</span>
  <span class="o">}</span>

  <span class="c1">// the URI is somewhat like a namespace</span>
  <span class="kd">public</span> <span class="no">URI</span> <span class="nf">getURI</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="n">uri</span><span class="o">;</span>
  <span class="o">}</span>

  <span class="c1">// there are no stop words defined in this</span>
  <span class="c1">// dictionary</span>
  <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">hasStopWord</span><span class="o">(</span><span class="nc">String</span> <span class="n">queryWord</span><span class="o">)</span> <span class="o">{</span>
    <span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
  <span class="o">}</span>

  <span class="c1">// see hasStopWord()</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getStopWords</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>

  <span class="c1">// it has the name in the dictionary if the name</span>
  <span class="c1">// can be converted into an InChI</span>
  <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">hasName</span><span class="o">(</span><span class="nc">String</span> <span class="n">queryName</span><span class="o">)</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nf">getInChI</span><span class="o">(</span><span class="n">queryName</span><span class="o">).</span><span class="na">size</span><span class="o">()</span> <span class="o">!=</span> <span class="mi">0</span><span class="o">;</span>
  <span class="o">}</span>

  <span class="c1">// this dictionary can return InChIs for names</span>
  <span class="c1">// so, it implements the IInChIProvider interface</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getInChI</span><span class="o">(</span><span class="nc">String</span> <span class="n">queryName</span><span class="o">)</span> <span class="o">{</span>
    <span class="k">try</span> <span class="o">{</span>
      <span class="nc">NameToStructure</span> <span class="n">nameToStructure</span> <span class="o">=</span>
        <span class="nc">NameToStructure</span><span class="o">.</span><span class="na">getInstance</span><span class="o">();</span>
      <span class="nc">OpsinResult</span> <span class="n">result</span> <span class="o">=</span> <span class="n">nameToStructure</span>
        <span class="o">.</span><span class="na">parseChemicalName</span><span class="o">(</span>
          <span class="n">queryName</span><span class="o">,</span> <span class="kc">false</span>
        <span class="o">);</span>
      <span class="k">if</span> <span class="o">(</span><span class="n">result</span><span class="o">.</span><span class="na">getStatus</span><span class="o">()</span>
          <span class="o">==</span> <span class="no">OPSIN_RESULT_STATUS</span><span class="o">.</span><span class="na">SUCCESS</span><span class="o">)</span> <span class="o">{</span>
        <span class="nc">Set</span> <span class="n">inchis</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HashSet</span><span class="o">();</span>
        <span class="nc">String</span> <span class="n">inchi</span> <span class="o">=</span> <span class="nc">NameToInchi</span>
          <span class="o">.</span><span class="na">convertResultToInChI</span><span class="o">(</span>
            <span class="n">result</span><span class="o">,</span> <span class="kc">false</span>
          <span class="o">);</span>
        <span class="n">inchis</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">inchi</span><span class="o">);</span>
        <span class="k">return</span> <span class="n">inchis</span><span class="o">;</span>
      <span class="o">}</span>
    <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">NameToStructureException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
      <span class="n">e</span><span class="o">.</span><span class="na">printStackTrace</span><span class="o">();</span>   
    <span class="o">}</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>

  <span class="kd">public</span> <span class="nc">String</span> <span class="nf">getInChIforShortestSMILES</span><span class="o">(</span>
    <span class="nc">String</span> <span class="n">queryName</span><span class="o">)</span>
  <span class="o">{</span>
    <span class="nc">Set</span> <span class="n">inchis</span> <span class="o">=</span> <span class="n">getInChI</span><span class="o">(</span><span class="n">queryName</span><span class="o">);</span>
    <span class="k">if</span> <span class="o">(</span><span class="n">inchis</span><span class="o">.</span><span class="na">size</span><span class="o">()</span> <span class="o">==</span> <span class="mi">0</span><span class="o">)</span> <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
    <span class="k">return</span> <span class="n">inchis</span><span class="o">.</span><span class="na">iterator</span><span class="o">().</span><span class="na">next</span><span class="o">();</span>
  <span class="o">}</span>

  <span class="c1">// since names are converted on the fly, we do</span>
  <span class="c1">// not enumerate them</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getNames</span><span class="o">(</span><span class="nc">String</span> <span class="n">inchi</span><span class="o">)</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getNames</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getOrphanNames</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>
  <span class="kd">public</span> <span class="nc">Set</span> <span class="nf">getChemRecords</span><span class="o">()</span> <span class="o">{</span>
    <span class="k">return</span> <span class="nc">Collections</span><span class="o">.</span><span class="na">emptySet</span><span class="o">();</span>
  <span class="o">}</span>
  <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">hasOntologyIdentifier</span><span class="o">(</span>
    <span class="nc">String</span> <span class="n">identifier</span><span class="o">)</span>
  <span class="o">{</span>
    <span class="c1">// this ontology does not use ontology</span>
    <span class="c1">// identifiers</span>
    <span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
  <span class="o">}</span>
<span class="o">}</span>
</code></pre></div></div>

<p>Now, you can implement the interface in various ways. You can even have the implementation hook into a SQL database
with JDBC, or use something else fancy. The dictionary will be used at various steps of the Oscar4 text analysis
workflow.</p>

<p>Mind you, the refactoring is not over yet, and the details may change here and there.</p>

<p>Your comments are most welcome!</p>]]></content><author><name>Egon Willighagen</name></author><category term="oscar" /><category term="java" /><summary type="html"><![CDATA[Say, you have your own dictionary of chemical compounds. For example, like your company’s list of yet-unpublished internal research codes. Still, you want to index your local listserv to make it easier for your employees to search for particular chemistry you are working on and perhaps related to something done at other company sites. This is what Oscar is for.]]></summary></entry><entry><title type="html">Oscar4 Java API: chemical name dictionaries</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/10/28/oscar4-java-api-chemical-name.html" rel="alternate" type="text/html" title="Oscar4 Java API: chemical name dictionaries" /><published>2010-10-28T00:00:00+00:00</published><updated>2010-10-28T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/10/28/oscar4-java-api-chemical-name</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/10/28/oscar4-java-api-chemical-name.html"><![CDATA[<p>Besides getting Oscar used by <a href="http://www.ebi.ac.uk/chebi/">ChEBI</a> (hopefully <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/21/oscar-text-mining-in-taverna.html">via Taverna <i class="fa-solid fa-recycle fa-xs"></i></a>),
my main task in <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/15/working-on-oscar-for-three-months.html">my three month Oscar project <i class="fa-solid fa-recycle fa-xs"></i></a>
is to refactor things to make it more modular, and remove some features no longer needed (e.g. an automatically created workspace environment).
Clearly, I need to define a lot of <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/26/multiple-unit-test-inheritance-with.html">new unit tests <i class="fa-solid fa-recycle fa-xs"></i></a>
to ensure my assumptions on how to code works are valid.</p>

<p>So, what are the API requirements set out? These include (but are not limited to):</p>

<ul>
  <li>have reasonable defaults</li>
  <li>being able to add custom dictionaries</li>
  <li>easily change the chemical entity recogniser</li>
  <li>plugin text normalization (see <a href="https://blogs.ch.cam.ac.uk/pmr/2010/10/24/the-absolute-minimum-every-scientist-with-data-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/">Peter’s post on UNICODE <i class="fa-solid fa-recycle fa-xs"></i></a>)</li>
</ul>

<p>This week I worked on the dictionary refactoring, and talked with Lezan about the <a href="http://www-ucc.ch.cam.ac.uk/products/software/chemicaltagger">ChemicalTagger</a>
and trying to get this based on the newer Oscar code (I think we’ll be able to finish that today). So, I cleaned up
some code I did in the first week, and introduced <a href="https://bitbucket.org/wwmm/oscar4/src/bf79fd11045c/oscar4-api/src/main/java/uk/ac/cam/ch/wwmm/oscar/Oscar.java">a Oscar class</a>
providing a Java API to the Oscar functionality.</p>

<p>So, to get started with Oscar in your application, you only need to do:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Oscar</span> <span class="n">oscar</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Oscar</span><span class="o">(</span>
  <span class="k">this</span><span class="o">.</span><span class="na">getClass</span><span class="o">().</span><span class="na">getClassLoader</span><span class="o">()</span>
<span class="o">);</span>
<span class="n">oscar</span><span class="o">.</span><span class="na">loadDefaultDictionaries</span><span class="o">();</span>
<span class="nc">Map</span><span class="o">&lt;</span><span class="nc">NamedEntity</span><span class="o">,</span><span class="nc">String</span><span class="o">&gt;</span> <span class="n">structures</span> <span class="o">=</span>
  <span class="n">oscar</span><span class="o">.</span><span class="na">getNamedEntities</span><span class="o">(</span>
    <span class="s">"Ingredients: acetic acid, water."</span>
  <span class="o">);</span>
</code></pre></div></div>

<p>The ClassLoader is needed because the Oscar class will not generally know how to load custom classes.</p>

<p>You can add additional dictionaries, by implementing the <a href="https://bitbucket.org/wwmm/oscar4/src/tip/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/IChemNameDict.java">IChemNameDict</a>
interface and one or more of <a href="https://bitbucket.org/wwmm/oscar4/src/tip/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/IInChIProvider.java">IInChIProvider</a>,
<a href="https://bitbucket.org/wwmm/oscar4/src/tip/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/ISMILESProvider.java">ISMILESProvider</a>,
and <a href="https://bitbucket.org/wwmm/oscar4/src/tip/oscar4-chemnamedict/src/main/java/uk/ac/cam/ch/wwmm/oscar/chemnamedict/ICMLProvider.java">ICMLProvider</a>.
For example, adding the OPSIN dictionary would extend the above code to:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">Oscar</span> <span class="n">oscar</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Oscar</span><span class="o">(</span>
  <span class="k">this</span><span class="o">.</span><span class="na">getClass</span><span class="o">().</span><span class="na">getClassLoader</span><span class="o">()</span>
<span class="o">);</span>
<span class="n">oscar</span><span class="o">.</span><span class="na">loadDefaultDictionaries</span><span class="o">();</span>
<span class="n">oscar</span><span class="o">.</span><span class="na">getChemNameDict</span><span class="o">().</span><span class="na">register</span><span class="o">(</span>
  <span class="k">new</span> <span class="nf">OpsinDictionary</span><span class="o">()</span>
<span class="o">);</span>
<span class="nc">Map</span><span class="o">&lt;</span><span class="nc">NamedEntity</span><span class="o">,</span><span class="nc">String</span><span class="o">&gt;</span> <span class="n">structures</span> <span class="o">=</span>
  <span class="n">oscar</span><span class="o">.</span><span class="na">getNamedEntities</span><span class="o">(</span>
    <span class="s">"Ingredients: acetic acid, water."</span>
  <span class="o">);</span>
</code></pre></div></div>

<p>And, I think the <code class="language-plaintext highlighter-rouge">oscar.getChemNameDict()</code> method will be renamed to something like <code class="language-plaintext highlighter-rouge">oscar.getDictionaryRegistry()</code> really soon.</p>]]></content><author><name>Egon Willighagen</name></author><category term="oscar" /><category term="java" /><category term="chebi" /><category term="inchikey:XLYOFNOQVPJJNP-UHFFFAOYSA-N" /><category term="inchikey:QTBSBXVTEAMEQO-UHFFFAOYSA-N" /><summary type="html"><![CDATA[Besides getting Oscar used by ChEBI (hopefully via Taverna ), my main task in my three month Oscar project is to refactor things to make it more modular, and remove some features no longer needed (e.g. an automatically created workspace environment). Clearly, I need to define a lot of new unit tests to ensure my assumptions on how to code works are valid.]]></summary></entry><entry><title type="html">CDK 1.2 to 1.4 API changes #1: creating objects with an IChemObjectBuilder</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-1-creating.html" rel="alternate" type="text/html" title="CDK 1.2 to 1.4 API changes #1: creating objects with an IChemObjectBuilder" /><published>2010-10-27T00:00:00+00:00</published><updated>2010-10-27T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-1-creating</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-1-creating.html"><![CDATA[<p>Later this year (planned) a new stable branch of the CDK library will be released.
Time to look at some API changes, to ease migration. In this first post of the
series, I will show how the IChemObjectBuilder functionality has changed.</p>

<p><strong>CDK 1.2 code</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">IChemObjectBuilder</span> <span class="n">builder</span> <span class="o">=</span>
  <span class="nc">DefaultChemObjectBuilder</span><span class="o">.</span><span class="na">getInstance</span><span class="o">();</span>
<span class="nc">IMolecule</span> <span class="n">molecule</span> <span class="o">=</span> <span class="n">builder</span><span class="o">.</span><span class="na">newMolecule</span><span class="o">();</span>
<span class="n">molecule</span><span class="o">.</span><span class="na">addAtom</span><span class="o">(</span><span class="n">builder</span><span class="o">.</span><span class="na">newAtom</span><span class="o">(</span><span class="s">"C"</span><span class="o">));</span>
</code></pre></div></div>

<p><strong>CDK 1.4 code</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">IChemObjectBuilder</span> <span class="n">builder</span> <span class="o">=</span>
  <span class="nc">DefaultChemObjectBuilder</span><span class="o">.</span><span class="na">getInstance</span><span class="o">();</span>
<span class="nc">IMolecule</span> <span class="n">molecule</span> <span class="o">=</span> <span class="n">builder</span><span class="o">.</span><span class="na">newInstance</span><span class="o">(</span>
  <span class="nc">IMolecule</span><span class="o">.</span><span class="na">class</span>
<span class="o">);</span>
<span class="n">molecule</span><span class="o">.</span><span class="na">addAtom</span><span class="o">(</span>
  <span class="n">builder</span><span class="o">.</span><span class="na">newInstance</span><span class="o">(</span><span class="nc">IAtom</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"C"</span><span class="o">)</span>
<span class="o">);</span>
</code></pre></div></div>

<p>Now, please note that the <em>builder.newInstance()</em> method may actually return
null. This is not the case for the <a href="https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/DefaultChemObjectBuilder.html">DefaultChemObjectBuilder <i class="fa-solid fa-recycle fa-xs"></i></a>,
or the <a href="https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/nonotify/NoNotificationChemObjectBuilder.html">NoNotifiationChemObjectBuilder <i class="fa-solid fa-recycle fa-xs"></i></a>,
but future releases may have dedicated builders that do have such functionality.
However, these builder would not supposed to be used for building molecules
anyway.</p>

<p>The general patterns of <em>newInstance()</em> calls is that the first argument is
the interface for which you want an instance. All further parameters are passed
as parameters for the object’s constructor. The builder maps the input to appropriate
class constructors. To know what parameters you can pass when instantiating
an IAtom with the DefaultChemObjectBuilder, you would look at the constructor
of <a href="https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/Atom.html">Atom <i class="fa-solid fa-recycle fa-xs"></i></a>.
Therefore, we can also call:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">IAtom</span> <span class="n">atom</span> <span class="o">=</span> <span class="n">builder</span><span class="o">.</span><span class="na">newInstance</span><span class="o">(</span>
  <span class="nc">IAtom</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="s">"C"</span><span class="o">,</span> <span class="k">new</span> <span class="nc">Point2d</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span><span class="mi">0</span><span class="o">)</span>
<span class="o">);</span>
</code></pre></div></div>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cheminf" /><category term="java" /><summary type="html"><![CDATA[Later this year (planned) a new stable branch of the CDK library will be released. Time to look at some API changes, to ease migration. In this first post of the series, I will show how the IChemObjectBuilder functionality has changed.]]></summary></entry><entry><title type="html">CDK 1.2 to 1.4 API changes #2: implicit hydrogens</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-2-implicit.html" rel="alternate" type="text/html" title="CDK 1.2 to 1.4 API changes #2: implicit hydrogens" /><published>2010-10-27T00:00:00+00:00</published><updated>2010-10-27T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-2-implicit</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/10/27/cdk-12-to-14-api-changes-2-implicit.html"><![CDATA[<p>A second API change lies deep in the <a href="https://cdk.github.io/cdk/latest/docs/api/org/openscience/cdk/interfaces/IAtom.html">IAtom <i class="fa-solid fa-recycle fa-xs"></i></a>
interface. To reflect more accurately the meaning of the method, the <em>IAtomType.getHydrogenCount()</em>
has been renamed to <em>IAtomType.getImplicitHydrogenCount()</em>, and likewise the
setter methods.</p>

<p><strong>CDK 1.2 code</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">carbon</span><span class="o">.</span><span class="na">setHydrogenCount</span><span class="o">(</span><span class="mi">4</span><span class="o">);</span>
</code></pre></div></div>

<p><strong>CDK 1.4 code</strong></p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">carbon</span><span class="o">.</span><span class="na">setImplicitHydrogenCount</span><span class="o">(</span><span class="mi">4</span><span class="o">);</span>
</code></pre></div></div>

<p>Yeah, that’s a simple one. Just to make clear, in both versions the count reflected
the number of implicit hydrogens. The <em>getHydrogenCount()</em> suggested, however,
to return the number of all hydrogens attached to that atom, that is, the sum
of implicit and explicit hydrogens.</p>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cheminf" /><category term="java" /><summary type="html"><![CDATA[A second API change lies deep in the IAtom interface. To reflect more accurately the meaning of the method, the IAtomType.getHydrogenCount() has been renamed to IAtomType.getImplicitHydrogenCount(), and likewise the setter methods.]]></summary></entry><entry><title type="html">Multiple unit test inheritance with JExample</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/10/26/multiple-unit-test-inheritance-with.html" rel="alternate" type="text/html" title="Multiple unit test inheritance with JExample" /><published>2010-10-26T00:10:00+00:00</published><updated>2010-10-26T00:10:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/10/26/multiple-unit-test-inheritance-with</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/10/26/multiple-unit-test-inheritance-with.html"><![CDATA[<p>Two months ago I wrote about <a href="http://scg.unibe.ch/research/jexample">JExample</a> (see
<a href="https://chem-bla-ics.linkedchemistry.info/2010/08/14/specifying-unit-test-dependencies-with.html">Specifying unit test dependencies with JExample <i class="fa-solid fa-recycle fa-xs"></i></a>).
At the time, my examples did not include multiple unit test inheritance, but was informed later by @jexample
that is possible. I just got time to try it in the <a href="https://chem-bla-ics.linkedchemistry.info/2010/10/15/working-on-oscar-for-three-months.html">Oscar <i class="fa-solid fa-recycle fa-xs"></i></a>
project:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nd">@Test</span> <span class="kd">public</span> <span class="nc">Oscar</span> <span class="nf">testConstructor</span><span class="o">()</span>
<span class="kd">throws</span> <span class="nc">URISyntaxException</span>
<span class="o">{</span>
  <span class="nc">Oscar</span> <span class="n">oscar</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Oscar</span><span class="o">();</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertNotNull</span><span class="o">(</span><span class="n">oscar</span><span class="o">);</span>
  <span class="k">return</span> <span class="n">oscar</span><span class="o">;</span>
<span class="o">}</span>

<span class="nd">@Given</span><span class="o">(</span><span class="s">"#testConstructor"</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">testNormalize</span><span class="o">(</span><span class="nc">Oscar</span> <span class="n">oscar</span><span class="o">)</span>
<span class="kd">throws</span> <span class="nc">URISyntaxException</span>
<span class="o">{</span>
  <span class="nc">String</span> <span class="n">input</span> <span class="o">=</span> <span class="n">oscar</span><span class="o">.</span><span class="na">normalize</span><span class="o">(</span>
    <span class="s">"This is a simple input string with benzene."</span>
  <span class="o">);</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertNotNull</span><span class="o">(</span><span class="n">input</span><span class="o">);</span>
  <span class="k">return</span> <span class="n">input</span><span class="o">;</span>
<span class="o">}</span>

<span class="nd">@Given</span><span class="o">(</span><span class="s">"#testConstructor,#testNormalize"</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">List</span> <span class="nf">testTokenize</span><span class="o">(</span>
  <span class="nc">Oscar</span> <span class="n">oscar</span><span class="o">,</span> <span class="nc">String</span> <span class="n">input</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span>
<span class="o">{</span>
  <span class="nc">List</span> <span class="n">tokens</span> <span class="o">=</span> <span class="n">oscar</span><span class="o">.</span><span class="na">tokenize</span><span class="o">(</span><span class="n">input</span><span class="o">);</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertNotNull</span><span class="o">(</span><span class="n">tokens</span><span class="o">);</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertNotSame</span><span class="o">(</span><span class="mi">0</span><span class="o">,</span> <span class="n">tokens</span><span class="o">.</span><span class="na">size</span><span class="o">());</span>
  <span class="k">return</span> <span class="n">tokens</span><span class="o">;</span>
<span class="o">}</span>

<span class="nd">@Given</span><span class="o">(</span><span class="s">"#testConstructor,#testTokenize"</span><span class="o">)</span>
<span class="kd">public</span> <span class="nc">List</span> <span class="nf">testRecognizeNamedEntities</span><span class="o">(</span>
  <span class="nc">Oscar</span> <span class="n">oscar</span><span class="o">,</span> <span class="nc">List</span> <span class="n">tokens</span><span class="o">)</span>
<span class="kd">throws</span> <span class="nc">Exception</span>
<span class="o">{</span>
  <span class="nc">List</span> <span class="n">entities</span> <span class="o">=</span>
    <span class="n">oscar</span><span class="o">.</span><span class="na">recognizeNamedEntities</span><span class="o">(</span><span class="n">tokens</span><span class="o">);</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertNotNull</span><span class="o">(</span><span class="n">entities</span><span class="o">);</span>
  <span class="nc">Assert</span><span class="o">.</span><span class="na">assertEquals</span><span class="o">(</span><span class="mi">1</span><span class="o">,</span> <span class="n">entities</span><span class="o">.</span><span class="na">size</span><span class="o">());</span>
  <span class="k">return</span> <span class="n">entities</span><span class="o">;</span>
<span class="o">}</span>
</code></pre></div></div>

<p>The pattern here is that each test method returns one variable, so that any method depending on two
other unit test will have two parameters. The order is defined by the order in which they are given
by the <em>@Given</em> clause.</p>]]></content><author><name>Egon Willighagen</name></author><category term="java" /><category term="junit" /><summary type="html"><![CDATA[Two months ago I wrote about JExample (see Specifying unit test dependencies with JExample ). At the time, my examples did not include multiple unit test inheritance, but was informed later by @jexample that is possible. I just got time to try it in the Oscar project:]]></summary></entry><entry><title type="html">CDK 1.3.6: the changes, authors, and reviewers</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/09/15/cdk-137-changes-authors-and-reviewers.html" rel="alternate" type="text/html" title="CDK 1.3.6: the changes, authors, and reviewers" /><published>2010-09-15T00:00:00+00:00</published><updated>2010-09-15T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/09/15/cdk-137-changes-authors-and-reviewers</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/09/15/cdk-137-changes-authors-and-reviewers.html"><![CDATA[<p>The list of changes is particularly long for this development release. Therefore,
I will list the authors and reviewers first. Note that this release also includes
the changes of the <a href="http://chem-bla-ics.blogspot.com/2010/07/cdk-126-changes-and-authors.html">1.2.6</a>
and <a href="https://chem-bla-ics.linkedchemistry.info//2010/09/12/cdk-127-changes-authors-and-reviewers.html">CDK 1.2.7 release <i class="fa-solid fa-recycle fa-xs"></i></a>.</p>

<p><strong>The authors</strong><br />
I am mildly impressed by this release’s list of authors… it is certainly not
the usual suspects anymore, and I would like to thank all contributors very
much. Interestingly, we also see the number of places where contributions increase,
and see patches from 7 different institutes (6 if you count the current ones)!</p>

<pre>87  Egon Willighagen
42  Gilleain Torrance
17  Syed Asad Rahman
 9  Rajarshi Guha
 3  Jules Kerssemakers
 4  Mark Rijnbeek
 2  Andreas Truszkowski
 2  Saravanaraj
 1  Jonathan Alversson
</pre>

<p><strong>The reviewers</strong><br />
The below list has also slight gained size, and I welcome <a href="http://gilleain.blogspot.com/">Gilliean</a>
and <a href="http://sites.google.com/site/chembioinfo/">Syed</a> as active reviewers.</p>

<pre>56  Rajarshi  Guha 
18  Egon Willighagen 
12  Syed Asad Rahman 
 4  Gilleain Torrance
</pre>

<p><strong>The changes</strong><br />
The changes include bug fixes (see also the <a href="http://chem-bla-ics.blogspot.com/2010/07/cdk-126-changes-and-authors.html">1.2.6</a>
and <a href="https://chem-bla-ics.linkedchemistry.info//2010/09/12/cdk-127-changes-authors-and-reviewers.html">1.2.7 release notes <i class="fa-solid fa-recycle fa-xs"></i></a>),
but also an updated SMSD engine, a rename of the <em>IAtomType</em> method <em>getHydrogenCount()</em>
into <em>getImplicitHydrogenCount()</em> and of <em>MDLWriter</em> into <em>MDLV2000Writer</em>,
and the addition of the <a href="http://gilleain.blogspot.com/2009/06/faulons-signatures-possible.html">signature code by Gilleain</a>,
and many, many small fixes.</p>

<ul>
  <li>Compare values not objects (fixes #3061263) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1e4adac">1e4adac</a></li>
  <li>Unit test to reproduce failing atom type perception with one of the options
to create a -1 Integer object <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=87f8bfe">87f8bfe</a></li>
  <li>Smiles parser setting to preserve aromaticity as provided in the Smiles String
itself. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ae21ee2">ae21ee2</a></li>
  <li>Added two further unit tests: one to see if the descriptor properly ‘ignores’
hydrogens; a second to reproduce the numbers in the original Wiener paper
from 1947 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=91c58dd">91c58dd</a></li>
  <li>Renabled test which was (accidentally?) outcommented when switching to JUnit4
in commit 06a1a3dd <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ac82b12">ac82b12</a></li>
  <li>Added a reference to the original Wiener paper <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0c5187e">0c5187e</a></li>
  <li>No need to declare throws for other Exception’s if the superclass is already
declared thrown itself (also, no need to define java.lang explicitly) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e73a291">e73a291</a></li>
  <li>Minor cleanup: corrected copyright statement; simplified JavaDoc by removing
empty parameter table <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6292875">6292875</a></li>
  <li>Replaced inline citation by reference to the main bibliography <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8ddbb1b">8ddbb1b</a></li>
  <li>Implementation of a descriptor to measure molecular complexity in terms of
sp3 to sp2 ratio of carbon atoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6a6db0b">6a6db0b</a></li>
  <li>Updated javadocs and added extra unit test <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ac211ce">ac211ce</a></li>
  <li>Implementation of a descriptor to measure molecular complexity in terms of
sp3 to sp2 ratio of carbon atoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bd9fb4f">bd9fb4f</a></li>
  <li>Removed output to STDOUT <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=18f7d52">18f7d52</a></li>
  <li>Fix for branching bracket issue when generating SMILES for BrC1C(Br)C(Br)C(Br)C(Br)C1Br
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=526362e">526362e</a></li>
  <li>Unit test for bug #3040273. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3bf8397">3bf8397</a></li>
  <li>Fixed hybridization information: these are sp3 hybridized systems <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e8cec0f">e8cec0f</a></li>
  <li>More missing elements for SMILES parsing problems reported in bug #3048501
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bcb8432">bcb8432</a></li>
  <li>Unit tests for SMILES parsing bugs reported in #3048501 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bb5ffe1">bb5ffe1</a></li>
  <li>Upper case the first character to also properly recognize lower cased ‘aromatic’
two-character element symbols (fixes SMILES parsign of things like c1[se]ccccc1
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3f6056b">3f6056b</a></li>
  <li>JavaDoc fixes: correct @cdk.cite use, and small typo <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d097acf">d097acf</a></li>
  <li>Updated the JavaDoc for an API changed a while ago: the getInChIToStructure()
method now takes an IChemObjectBuilder as second argument (fixes #3035890)
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3e1aba0">3e1aba0</a></li>
  <li>Updated the JavaDoc for the atoms() Iterable API change (fixes #3034824) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2a5bb6b">2a5bb6b</a></li>
  <li>Added the maven build file (closes #3042475) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6209a48">6209a48</a></li>
  <li>a)removed blank/unused methods and fixed imports Signed-off-by: Syed Asad
Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=911af3f">911af3f</a></li>
  <li>a)IMatch to Match and constructor call for state used TargetProperties for
faster processing Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4a2f9c1">4a2f9c1</a></li>
  <li>a)Assert cleaned and fixed b)Correct ASSERT imports used <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a420b61">a420b61</a></li>
  <li>Removed unused code <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cb4048e">cb4048e</a></li>
  <li>Updated checking of indices which now are -1 if unset, instead of null <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cd8ccee">cd8ccee</a></li>
  <li>a) Default constructor supported as per changes in the CDK b) VFMCS index
error should point to -1 not null Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9c6c830">9c6c830</a></li>
  <li>a)Refactored matchers, atom matcher and bond matcher b)getTanimoto score fixed
for single atoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1dae4f2">1dae4f2</a></li>
  <li>Updates for the getImplicitHydrogenCount() renaming <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0f64e4d">0f64e4d</a></li>
  <li>The smsd module now depends on the signature module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7d5fc9d">7d5fc9d</a></li>
  <li>Latest SMSD code 1.2.0: Major changes are: <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7217e82">7217e82</a></li>
  <li>Use the factory to not depend on an implementation <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e2c8329">e2c8329</a></li>
  <li>Renamed get/setHydrogenCount() to get/setImplicitHydrogenCount(), per report #3020065
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8ec9ad4">8ec9ad4</a></li>
  <li>Introduced a helper class with info about the CDK library: the version number,
which is read from the build.props which is now included in the cdk-core.jar
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=5a2bc65">5a2bc65</a></li>
  <li>Also take into account super classes <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0de5777">0de5777</a></li>
  <li>Renamed MDLWriter into MDLV2000Writer (implements #3029447) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f0256d0">f0256d0</a></li>
  <li>Assert pattern has the expected value as first argument <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d4045cc">d4045cc</a></li>
  <li>Use the builder pattern to instantiate an IIsotope <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6760330">6760330</a></li>
  <li>MDLV2000 reader interprets D and T without M ISO line mandatory <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f6fd82b">f6fd82b</a></li>
  <li>Use the PT class to see if something can be an element and removing the redundant
element symbol info <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=937c4c7">937c4c7</a></li>
  <li>Fixed annotation with TestMethod, not TestClass (fixes #3016632) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9eb04e5">9eb04e5</a></li>
  <li>Skip inner classes for @cdk.module and @cdk.githash JavaDoc tests (fixes #3043084)
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d070396">d070396</a></li>
  <li>Throw a CDKException when a QUADRUPLE bond order is in the input, which is
not supported by the MDL/Symyx molfile format (fixes #3029352) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=32cdc48">32cdc48</a></li>
  <li>Deal with a special situation: pyridine N-oxide in the non-charge-separated
representation, with a N.sp2.3 nitrogen, with two double bonds. Previously,
any ring-outward double bond would disqualify the ring as aromatic. This compound
is now an exception. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c66039d">c66039d</a></li>
  <li>Assert the compound is aromatic (fixes false negative) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d1da527">d1da527</a></li>
  <li>Exporting the signatures jar <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7959947">7959947</a></li>
  <li>Removed the OpenJavaDocCheck Jazzy extension which was not supposed to go
in; it’s not ready for prime time <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9364179">9364179</a></li>
  <li>Added missing dependencies (fixes failing unit tests) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e582852">e582852</a></li>
  <li>Added missing dependencies (fixes failing unit tests) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ef14ef0">ef14ef0</a></li>
  <li>Added missing dependency <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a0f22f6">a0f22f6</a></li>
  <li>Copy the 2D templates into the source distribution <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=5bcd111">5bcd111</a></li>
  <li>Added finally blocks to MolHandler to close its input streams, with proper
logging calls if it fails Fixes bug #3032568 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1201e01">1201e01</a></li>
  <li>UIT timeout fix <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=5a329d4">5a329d4</a></li>
  <li>Cleaned up exception handling in TemplateHandler.loadTemplates() to be more
specific and less pessimistic. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e1df763">e1df763</a></li>
  <li>QSAR descriptor values made serializeable <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2ef459c">2ef459c</a></li>
  <li>Fixed assertion to compare two Vector3d’s <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c133da5">c133da5</a></li>
  <li>Added test to assert that two Vector3d’s are identical <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6651956">6651956</a></li>
  <li>All methods now tested <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=004770a">004770a</a></li>
  <li>Hooking up test machinery <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=32155b0">32155b0</a></li>
  <li>Altered the getTetrahedralDescription to be get stereo and return ITetrahedralChirality.Stereo
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f61266c">f61266c</a></li>
  <li>Moved Stereotool to stereo package <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a99c918">a99c918</a></li>
  <li>Convenience method that returns chirality descriptor (R/S) given four atoms
in priority order <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7abbdcc">7abbdcc</a></li>
  <li>Missing docs <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9a55100">9a55100</a></li>
  <li>Copyright statements <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d96f596">d96f596</a></li>
  <li>Just to be paranoid, test +/- tetrahedra above and below the XY plane <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e32f334">e32f334</a></li>
  <li>Tests for square planar shapes, trig bipyr, and oct <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8b49490">8b49490</a></li>
  <li>Cleanup and fixing (I think) of the trigonal bipyramidal method <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1b01c84">1b01c84</a></li>
  <li>Test for 3 colinear points <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=01ae3fc">01ae3fc</a></li>
  <li>Better docs <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bb38d10">bb38d10</a></li>
  <li>Tests for tetrahedral sign, some basic defined vectors <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=897b6ee">897b6ee</a></li>
  <li>Test class, and name change of distanceToPlane to show that it returns signed
(+/-) distance <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1735551">1735551</a></li>
  <li>Initial go at the StereoTool - functions taken from Jmol’s smiles package
for 3D stereo checking <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c25591f">c25591f</a></li>
  <li>Updated OB note and robustified unit tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2b96512">2b96512</a></li>
  <li>Added support for multi-molecule mol2 files. Updated source and added unit
test and test file <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=dbd6df4">dbd6df4</a></li>
  <li>Updated cdk-1.2.x patches for master API <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e383f4b">e383f4b</a></li>
  <li>Updated the DebugBond unit test too now: new DebugBond() has zero atoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6ef1fb1">6ef1fb1</a></li>
  <li>Backport patch, to make the patches compile with cdk-1.2.x <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ce9b1bd">ce9b1bd</a></li>
  <li>Additional patch to reduce atom count on setAtom(null, int) and unit tests
for the setAtom(IAtom, int) behavior. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6cf95db">6cf95db</a></li>
  <li>Also fix the new NNBond() == 0 atoms for the nonotify module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=23d9685">23d9685</a></li>
  <li>Fixed Bond() constructor to create a bond with zero atoms. Also fixed setAtom(IAtom,
int) to increase the atom count if a null entry is filled with a non-null
IAtom. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=916ab96">916ab96</a></li>
  <li>Updated test to assume new Bond() creates a bond with zero atoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4ac7111">4ac7111</a></li>
  <li>Added two unit tests for aromatic N-oxides that are the basis for failures
in SMARTS matching <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=12fb96b">12fb96b</a></li>
  <li>added javadoc to IChemObjectReader explaining the split between ISimple and
IIterating ChemObjectReaders <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1574e42">1574e42</a></li>
  <li>Exceptions when clone atomless ISingleElectron and ILonePair too <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c5d4cd3">c5d4cd3</a></li>
  <li>Unit test for ArrayIndexOutOfBoundsException occuring when trying to clone
an IAtomContainer with an IBond with no IAtoms <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d71c31c">d71c31c</a></li>
  <li>Added unit tests for SMILES with failing atom typing, from email on the cdk-devel
mailing list June 11 2010 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=890d0f5">890d0f5</a></li>
  <li>Added the N.oxide atom type, for structures like (CH3)N=O <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bb431e3">bb431e3</a></li>
  <li>Fixed reading of SD properties: keep the first line too <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3133a18">3133a18</a></li>
  <li>Added missing dependency <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=14003dc">14003dc</a></li>
  <li>Fixed unit test: surely there is no atom with symbol 0… how long has this
been failing?? <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c888e4f">c888e4f</a></li>
  <li>Updated fingerprinter javadoc <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e6fecf2">e6fecf2</a></li>
  <li>Added a test class to aromaticity of three compounds: the last incorrectly
fails <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a454ab8">a454ab8</a></li>
  <li>Also except N.amide as part of an aromatic ring <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3357113">3357113</a></li>
  <li>Added a test class to repeat atom type perception and test consistency <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0bd5b42">0bd5b42</a></li>
  <li>Unit test fix: the molecules *is* aromatic, as we should assume it is. Fixes
a big goof up <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cd83236">cd83236</a></li>
  <li>Replace special chars where spaces are supposed to occur, fixing the fail
of the unit tests every now and then <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=483c856">483c856</a></li>
  <li>Merge branch ‘master’ of ssh://cdk.git.sourceforge.net/gitroot/cdk/cdk <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=eb6defd">eb6defd</a></li>
  <li>BooleanIOSetting to let MDLWriter output bond type 4 (aromatic) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a586d6a">a586d6a</a></li>
  <li>Reorderd imports <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2896226">2896226</a></li>
  <li>Added test cases to check that the code runs when faced with covalently bonded
metals. Currenly on failure is due to the presence of Pt, for which we do
not have a valency in AtomValence <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f32e9a2">f32e9a2</a></li>
  <li>chemfilter improvised Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2a7ee54">2a7ee54</a></li>
  <li>SMSD Test cases updated as per new code Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8f3c70a">8f3c70a</a></li>
  <li>SMSD Test cases updated as per new code Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3266460">3266460</a></li>
  <li>added ExtAtomContainerManipulator Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d4d8339">d4d8339</a></li>
  <li>deleted ext Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b44c82b">b44c82b</a></li>
  <li>updated SMSD code Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=eccc70d">eccc70d</a></li>
  <li>updated SMSD code Signed-off-by: Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=370a926">370a926</a></li>
  <li>Convenience constructors for AtomSignature that take IAtoms rather than atom
indices <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=935b5f6">935b5f6</a></li>
  <li>Added missing jar meta file for the Signatures library <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=805103a">805103a</a></li>
  <li>Updated to reflect the upstream jar name <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d33a71a">d33a71a</a></li>
  <li>Abstract methods not part of API are now protected, to discourage thier use
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7a92d42">7a92d42</a></li>
  <li>Various fixes to tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=592b920">592b920</a></li>
  <li>Added the missing assert: runCoverageTest() returns a boolean stating the
success <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=850fd1a">850fd1a</a></li>
  <li>cdk.cite references for two Faulon papers <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e7ccc4e">e7ccc4e</a></li>
  <li>More missing javadocs - notably the class documentation for AtomSignature
and MoleculeSignature <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=8bd664f">8bd664f</a></li>
  <li>Mising constructor javadoc, and inheritdoc annotation on AtomSignature <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=88ffdd6">88ffdd6</a></li>
  <li>Final missing test <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cf148dd">cf148dd</a></li>
  <li>Atom signature test methods <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=888bf60">888bf60</a></li>
  <li>Molecule signature tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b64c4e5">b64c4e5</a></li>
  <li>Signature quotient graph test method <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0d0a95e">0d0a95e</a></li>
  <li>Missing test for Orbit::iterator <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2609f1b">2609f1b</a></li>
  <li>Removed unused import <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=020fb92">020fb92</a></li>
  <li>Molecule From Signature Builder tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9d2a0c0">9d2a0c0</a></li>
  <li>All orbit methods tested <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7c46a7c">7c46a7c</a></li>
  <li>Finally correct junit annotations, and sort test <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=fba5ff5">fba5ff5</a></li>
  <li>BeforeClass method must be static; better clone test <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7e370a2">7e370a2</a></li>
  <li>Fixes some problems flagged by PMD <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cd3a866">cd3a866</a></li>
  <li>Use junit’s BeforeClass instead of Before annotation <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=2566b87">2566b87</a></li>
  <li>Added missing githash tags, to add links in the JavaDoc to the source code
repository <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=fc0a9f9">fc0a9f9</a></li>
  <li>Inherit JavaDoc where methods overwrite a super method <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d4a9436">d4a9436</a></li>
  <li>Fixed PMD warnings: more descriptive field names; use of Integer.valueOf()
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=02020d6">02020d6</a></li>
  <li>Added test method annotation for the clone() method <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=cabd95f">cabd95f</a></li>
  <li>Removed some unnecessary imports <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=19b21a3">19b21a3</a></li>
  <li>Test orbit cloning <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3c85ab2">3c85ab2</a></li>
  <li>Improved canonical label method in graph signature <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=0bca11f">0bca11f</a></li>
  <li>Integer invariants, and updated signatures jarfile <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=5c838b6">5c838b6</a></li>
  <li>Added JavaDoc HTML generation for the signature module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7617074">7617074</a></li>
  <li>Hooked in PMD testing for the signature module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=7384bc3">7384bc3</a></li>
  <li>Defined dependencies for the test module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=132badc">132badc</a></li>
  <li>Hooked the signature module into the CDK build system <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=4ea7d48">4ea7d48</a></li>
  <li>Removed the dependency on the nonotify module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=93e0a22">93e0a22</a></li>
  <li>Created a CDK style module test suite <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a9a4aa8">a9a4aa8</a></li>
  <li>MoleculeFromSignatureBuilder tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=d7bb6f6">d7bb6f6</a></li>
  <li>Extend from CDKTestCase and use the slow running test check <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6969629">6969629</a></li>
  <li>Fixed and cleaned up molecule signature tests <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3998ed7">3998ed7</a></li>
  <li>Initial commit of signature package <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ff2bdeb">ff2bdeb</a></li>
  <li>Added OpenJavaDocCheck 0.5 - the Jazzy spell checking extension <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=57e7eea">57e7eea</a></li>
  <li>specify fail behavior (returns null) in javadoc <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bfd06db">bfd06db</a></li>
  <li>Added PMD tests for detecting misuse of TestClass and TestMethod, e.g. TestClass
on a method. (fixes #3014808) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=c94ebcf">c94ebcf</a></li>
  <li>Removed two lines added in master to the removed doccheck target <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9d679fe">9d679fe</a></li>
  <li>Merge branch ‘cdk-1.2.x’ <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=055f702">055f702</a></li>
  <li>Improved javadoc generation using a link tag, so that references to java library
classes are resolved properly <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1f8bb2d">1f8bb2d</a></li>
  <li>Update OpenJavaDocCheck to 0.5: fixing a few false positives <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f0c7d0c">f0c7d0c</a></li>
  <li>Removed use of the proprietary DocCheck utility <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1523f66">1523f66</a></li>
  <li>OpenJavaDocCheck errors are fixed for SMSD related modules Signed-off-by:
Syed Asad Rahman <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ac9384a">ac9384a</a></li>
  <li>solved cdk-Bugs-3006773 : small JavaDoc errors in the smsd module <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=f66a779">f66a779</a></li>
  <li>Fix for character spacing for “APO” line in RGFile output <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=ed510bf">ed510bf</a></li>
  <li>Branch open for commits for the future 1.3.6 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=1ab64ff">1ab64ff</a></li>
  <li>Use the new tests in more situations <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=e8b13b2">e8b13b2</a></li>
</ul>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cheminf" /><category term="java" /><summary type="html"><![CDATA[The list of changes is particularly long for this development release. Therefore, I will list the authors and reviewers first. Note that this release also includes the changes of the 1.2.6 and CDK 1.2.7 release .]]></summary></entry><entry><title type="html">CDK 1.2.7: the changes, the authors, and the reviewers</title><link href="https://chem-bla-ics.linkedchemistry.info/2010/09/12/cdk-127-changes-authors-and-reviewers.html" rel="alternate" type="text/html" title="CDK 1.2.7: the changes, the authors, and the reviewers" /><published>2010-09-12T00:00:00+00:00</published><updated>2010-09-12T00:00:00+00:00</updated><id>https://chem-bla-ics.linkedchemistry.info/2010/09/12/cdk-127-changes-authors-and-reviewers</id><content type="html" xml:base="https://chem-bla-ics.linkedchemistry.info/2010/09/12/cdk-127-changes-authors-and-reviewers.html"><![CDATA[<p><a href="http://cdk.sf.net">CDK</a> 1.2.7 is the latest of bug fix releases in the 1.2
series. It brings a number of JavaDoc fixes, but, importantly, also bug fixes
in SMILES handling and atom type perception. I am really pleased to see the
application domain of various algorithms in the CDK continously grow: SMILES
parsing for some transition metals has been fixed, and the SMILES generation
for some types of ring closures too. Additionally, an important bug was fixed
in the atom type perception algorithm, which failed for custom atom types with
formal charges. Everyone using the CDK 1.2 series is advised to upgrade to this
version.</p>

<p><strong>The changes</strong></p>

<ul>
  <li>Compare values not objects (fixes #3061263) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=324f7f5">324f7f5</a></li>
  <li>Unit test to reproduce failing atom type perception with one of the options
to create a -1 Integer object <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=9c1b95a">9c1b95a</a></li>
  <li>Removed output to STDOUT <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=223fc9a">223fc9a</a></li>
  <li>Fix for branching bracket issue when generating SMILES for BrC1C(Br)C(Br)C(Br)C(Br)C1Br
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=b9b2272">b9b2272</a></li>
  <li>Unit test for bug #3040273. <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6d9b3d2">6d9b3d2</a></li>
  <li>Fixed hybridization information: these are sp3 hybridized systems <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=a01de91">a01de91</a></li>
  <li>More missing elements for SMILES parsing problems reported in bug #3048501
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=31f7462">31f7462</a></li>
  <li>Unit tests for SMILES parsing bugs reported in #3048501 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=bf8defd">bf8defd</a></li>
  <li>A few more missing elements in the SMILES two-character element symbol parsing
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=5cf9334">5cf9334</a></li>
  <li>Added missing elements, fixing several problems reported in bug #3048501 <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=6ab74bc">6ab74bc</a></li>
  <li>Upper case the first character to also properly recognize lower cased ‘aromatic’
two-character element symbols (fixes SMILES parsign of things like c1[se]ccccc1
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=3ec1480">3ec1480</a></li>
  <li>JavaDoc fixes: correct @cdk.cite use, and small typo <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=394f9ed">394f9ed</a></li>
  <li>Updated the JavaDoc for an API changed a while ago: the getInChIToStructure()
method now takes an IChemObjectBuilder as second argument (fixes #3035890)
<a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=be56aac">be56aac</a></li>
  <li>Updated the JavaDoc for the atoms() Iterable API change (fixes #3034824) <a href="http://cdk.git.sourceforge.net/git/gitweb.cgi?p=cdk/cdk;a=commit;h=38873dc">38873dc</a></li>
</ul>

<p><strong>The authors</strong>
The below numbers are based on the number of commits, but keep in mind that
some developers, like myself, need more commits for the same number of changed
lines.</p>

<pre>13  Egon Willighagen
 2  Saravanaraj
</pre>

<p><strong>The reviewers</strong>
The below list is based on who signed off the patches. Anyone who reviews patches
in the patch tracker can basically do this. Ask on cdk-devel on how to do this.</p>

<pre> 8  Rajarshi Guha
 4  Gilleain Torrance
 2  Egon Willighagen
</pre>]]></content><author><name>Egon Willighagen</name></author><category term="cdk" /><category term="cheminf" /><category term="java" /><summary type="html"><![CDATA[CDK 1.2.7 is the latest of bug fix releases in the 1.2 series. It brings a number of JavaDoc fixes, but, importantly, also bug fixes in SMILES handling and atom type perception. I am really pleased to see the application domain of various algorithms in the CDK continously grow: SMILES parsing for some transition metals has been fixed, and the SMILES generation for some types of ring closures too. Additionally, an important bug was fixed in the atom type perception algorithm, which failed for custom atom types with formal charges. Everyone using the CDK 1.2 series is advised to upgrade to this version.]]></summary></entry></feed>