<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Depth-First: Tag mcdl</title>
    <link>http://depth-first.com/articles/tag/mcdl</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Walking the Web of Chemical Informatics</description>
    <item>
      <title>Five Open Tools for 2D Structure Layout (aka Structure Diagram Generation)</title>
      <description>&lt;p&gt;&lt;a href="http://metamolecular.com/chemwriter"&gt;&lt;img src="http://depth-first.com/demo/20070411/difficult.png" align="right"&gt;&lt;/img&gt;&lt;/a&gt;Given a molecular representation without 2D coordinates, how would you display a human-readable view?&lt;/p&gt;

&lt;p&gt;This problem can arise in many situations, one of the most common of which is the parsing of &lt;a href="http://depth-first.com/articles/tag/linenotation"&gt;line notations&lt;/a&gt; such as &lt;a href="http://depth-first.com/articles/2007/10/19/easily-convert-iupac-nomenclature-to-smiles-inchi-or-molfile-with-rubidium"&gt;IUPAC nomenclature&lt;/a&gt;, SMILES, or &lt;a href="http://depth-first.com/articles/2007/10/15/an-introduction-to-the-rubidium-cheminforamtics-toolkit-interconvert-smiles-inchi-and-molfile-with-an-open-babel-like-interface"&gt;InChI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And then there are the cases when you have 2D coordinates, but they're &lt;a href="http://depth-first.com/articles/2008/02/12/the-art-and-science-of-chemical-structure-diagrams-double-trouble"&gt;not very aesthetically pleasing&lt;/a&gt;. Maybe the coordinates were created by people either in a hurry or working with low quality editors, or maybe they were generated as distorted 2D projections of 3D coordinates. Whatever the reason, simply having 2D coordinates may not be the same as having &lt;em&gt;good&lt;/em&gt; 2D coordinates.&lt;/p&gt;

&lt;p&gt;Last year, a Depth-First article &lt;a href="http://depth-first.com/articles/2007/04/11/structure-diagram-generation"&gt;discussed the Structure Diagram Generation (SDG) problem&lt;/a&gt; and how it can be solved with Open Source software. Given that nearly a year has passed, it seemed appropriate to revisit the topic.&lt;/p&gt;

&lt;p&gt;The good news is that there are at least four independent Open Source implementations of SDG algorithms, and one potential open database approach. They are, in no particular order:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://sourceforge.net/projects/mcdl"&gt;MCDL&lt;/a&gt; Written in Java, the emphasis of this software appears to be facilitating the use of &lt;a href="http://depth-first.com/articles/2006/08/19/a-first-look-at-modular-chemical-descriptor-language-mcdl"&gt;Modular Chemical Descriptor Language&lt;/a&gt;. Unfortunately, no new releases of this intriguing software package have been made in the last year.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://sf.net/projects/cdk"&gt;Chemistry Development Kit (CDK)&lt;/a&gt; This useful package handles about 70-80% of a typical assortment of chemical structures well. The large amount of activity on the CDK project in general makes this a particularly good SDG system to contribute to, especially in the areas of refactoring and handling special cases. See also &lt;a href="http://www.steinbeck-molecular.de/steinblog/index.php/2007/08/14/structure-diagram-generation-sdg-2d-layout-in-the-chemistry-development-kit-part-1/"&gt;Christoph Steinbeck's overview of CDK's layout system&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://bkchem.zirael.org/"&gt;BKChem&lt;/a&gt; A 2D structure editor written in Python. Give it an InChI and it will display the structure, courtesy of SDG. The system worked remarkably well with the molecules I tested. BKChem has also been reported to work in &lt;a href="http://bkchem.zirael.org/batch_mode_en.html"&gt;batch mode&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.rdkit.org/"&gt;RDKit&lt;/a&gt; Written in Python and C++, this package is the newest of the bunch. Although &lt;a href="http://sourceforge.net/mailarchive/message.php?msg_id=360844.35824.qm%40web34206.mail.mud.yahoo.com"&gt;I haven't had much luck compiling RDKit&lt;/a&gt;, it still looks quite promising. Any chance of switching to &lt;a href="http://www.gnu.org/software/make/"&gt;make&lt;/a&gt; as a build system?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://pubchem.ncbi.nlm.nih.gov/"&gt;PubChem&lt;/a&gt; PubChem? Maybe. With a database of small molecules now numbering well over ten million, there's a good chance that the molecule for which you need to assign coordinates is already in PubChem. And if it's in PubChem, 2D coordinates have already been assigned. Use an InChI as a hash key, and voila - instant SDG without much software. Given the novelty of large, publicly-available databases of small molecules such as PubChem, this approach may have a great deal of untapped potential.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SDG is one of those issues that can stay off the radar for some only to become an instant, nagging problem with no clear way out. The tools cited here offer an excellent place to begin working toward a comprehensive solution.&lt;/p&gt;</description>
      <pubDate>Wed, 26 Mar 2008 09:11:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:5441d3fc-3dc2-4f2d-b740-5cad16dd454b</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/03/26/five-open-tools-for-2d-structure-layout-aka-structure-diagram-generation</link>
      <category>Tools</category>
      <category>sdg</category>
      <category>2d</category>
      <category>mcdl</category>
      <category>cdk</category>
      <category>bkchem</category>
      <category>rdkit</category>
      <category>pubchem</category>
      <category>coordinates</category>
      <category>java</category>
      <category>python</category>
      <category>cplusplus</category>
      <category>layout</category>
    </item>
    <item>
      <title>Update: Four Free 2-D Structure Editors for Web Applications</title>
      <description>&lt;p&gt;A &lt;a href="http://depth-first.com/articles/2006/08/21/four-free-2-d-structure-editors-for-web-applications"&gt;previous article&lt;/a&gt; discussing the deployment of four free 2D structure editors has been fixed. The sample pages demonstrating how to obtain a molfile from each have also been restored.&lt;/p&gt;</description>
      <pubDate>Sun, 22 Apr 2007 11:26:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f4d38cf0-6401-4c13-8ecb-6440764c7a05</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/04/22/update-four-free-2-d-structure-editors-for-web-applications</link>
      <category>Tools</category>
      <category>2d</category>
      <category>editor</category>
      <category>jchempaint</category>
      <category>jme</category>
      <category>jmoldraw</category>
      <category>mcdl</category>
      <category>web</category>
      <category>webapp</category>
    </item>
    <item>
      <title>Four Free 2-D Structure Editors for Web Applications</title>
      <description>&lt;p&gt;The increasing trend toward hosting free chemical databases and other services on the web brings with it the need for a free, ergonomic, capable, and fast 2-D structure editor. For years, the options were rather limited. However, this situation has started to change. Four web-enabled editors are discussed here, with an emphasis on the steps needed to deploy them within a webpage and retrieve a text-based molecular representation. A sample webpage is provided for each editor that allows a user to draw a molecule and view the corresponding output in a browser.&lt;/p&gt;

&lt;h4&gt;Building a Web Application: The Key Players&lt;/h4&gt;

&lt;p&gt;Consider the case of John, who would like to know the TPSA of caffeine. John finds a new website, http://tpsacalculate.com, that calculates the TPSA of any molecule. This site presents John with a 2-D structure editor applet and a "Submit" button. John uses the applet to draw caffeine and then presses the  button. After one second, John sees a new page showing the structure of caffeine and its TPSA descriptor.&lt;/p&gt;

&lt;p&gt;By pressing the "Submit" button, John sets in motion a series of transactions between the editor applet, the webpage, and the server. First, the webpage extracts a molfile representation of caffeine from the editor using JavaScript. This molfile is then submitted to the server using an HTTP POST request. After processing the molfile, the server returns a page containing the TPSA that John requested.&lt;/p&gt;

&lt;p&gt;Several variations on this pattern are conceivable, each involving varying levels of involvement by the browser, the applet, and the server. Advanced use of JavaScript can lead to elimination of the applet entirely, an approach taken by the &lt;a href="http://pubchem.ncbi.nlm.nih.gov/search/"&gt;PubChem structure search&lt;/a&gt;. Even more interesting is the use of &lt;a href="http://www.ajaxian.com/"&gt;AJAX&lt;/a&gt;, which would eliminate both the applet and the page refresh step, setting the stage for highly-interactive chemical content using only a browser and JavaScript. Although no AJAX-powered 2-D structure editors currently exist, this situation can be expected to change in the future.&lt;/p&gt;

&lt;h4&gt;Obtaining Text Output From a 2-D Editor&lt;/h4&gt;

&lt;p&gt;Extracting text-based output requires the same boilerplate code for all four editors. This code consists of four main components: (1) an editor applet into which the user draws a structure; (2) a JavaScript function that collects the output from the applet; (3) an HTML text field into which the JavaScript function inserts the output; and (4) an HTML form containing a button that when pressed sets the process in motion.&lt;/p&gt;

&lt;p&gt;These commonalities make it possible factor out editor specific code and logic. The HTML below gives an example of what one basic template looks like.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;html&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;head&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Molfile Test&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;head&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;body&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="comment"&gt;&amp;lt;!-- JavaScript --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;script&lt;/span&gt; &lt;span class="attribute"&gt;language&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;JavaScript&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
      function writeOutput()
      {
       document.form.output.value = document.applet.OUTPUT_METHOD();
      }
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="comment"&gt;&amp;lt;!-- Applet --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;applet&lt;/span&gt; &lt;span class="attribute"&gt;code&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;APPLET_CLASS&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;applet&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                &lt;span class="attribute"&gt;archive&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;APPLET_JARFILE.jar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                &lt;span class="attribute"&gt;width&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;510&lt;/span&gt; &lt;span class="attribute"&gt;height&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;360&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
    Please enable Java and JavaScript on your machine.
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;applet&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="comment"&gt;&amp;lt;!-- Form --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;form&lt;/span&gt; &lt;span class="attribute"&gt;method&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;form&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;input&lt;/span&gt; &lt;span class="attribute"&gt;type&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;button&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                 &lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Get Output&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                 &lt;span class="attribute"&gt;onclick&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;writeOutput()&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;input&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;textarea&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;output&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;rows&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;20&lt;/span&gt; &lt;span class="attribute"&gt;cols&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;80&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;textarea&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;form&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;body&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;html&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The above HTML contains three editor-specific pieces of information: (1) APPLET_JARFILE; (2) APPLET_CLASS; and (3) OUTPUT_METHOD. APPLET_JARFILE is the name of the Java archive file (*.jar) containing the applet code. This name is created by the developer when s/he saves the archive to the webserver. APPLET_CLASS is the fully-qualified class name of the editor applet. OUTPUT_METHOD is the name of the applet method that returns output. These last two pieces of editor-specific information are listed in the summary that follows.&lt;/p&gt;

&lt;h4&gt;Java Molecular Editor (JME)&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://www.molinspiration.com/jme/"&gt;Molinspiration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; Free for noncommercial development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; N/A&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; 39 Kb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; JME&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; molFile(); smiles(); nonisomericSmiles(); jmeFile();&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jme/jme.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;JChemPaint&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://almost.cubic.uni-koeln.de/cdk/jcp"&gt;CDK&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a href="http://www.opensource.org/licenses/gpl-license.php"&gt;GPL&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=20024&amp;amp;package_id=173599&amp;amp;release_id=400854"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; up to 6.2 Mb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; org.openscience.cdk.applications.jchempaint.applet.JChemPaintEditorApplet  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getMolFile();&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comment:&lt;/strong&gt; Although getSmiles() and getSmilesChiral() methods are available, neither produced the desired output during this test (version 2.1.5). The applet consists of 35 jar files, only some of which are necessary for minimal functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jchempaint/jchempaint.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;JMolDraw&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://sourceforge.net/projects/jmoldraw"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a href="http://www.opensource.org/licenses/gpl-license.php"&gt;GPL&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=155468&amp;amp;package_id=173185&amp;amp;release_id=379497"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; up to 1.4 Mb &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; org.jmd.editor.main.JMolDraw&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getContentsAsMolfile(); getContentsAsJMEString()  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; In contrast to the other three editors, there is no option to display this applet in the browser itself; it must be rendered as a separate window. In addition, this editor requires that several configuration and resource files be accessible on the server. Molfile output uses V3000 ctabs. Although V2000 ctabs are supported, the only way to activate this functionality is to modify the source code.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jmoldraw/jmoldraw.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;MCDL&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://sourceforge.net/projects/mcdl"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; Public Domain  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=148281&amp;amp;package_id=163529&amp;amp;release_id=405662"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; 256 Kb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; mcdl.MCDLEditor  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getMDCL()  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; This editor only supports output in &lt;a href="http://depth-first.com/articles/2006/08/19/a-first-look-at-modular-chemical-descriptor-language-mcdl"&gt;Modular Chemical Descriptor Language&lt;/a&gt; format.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/mcdl/mcdl.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;This review has only scratched the surface of what is possible with these editors. For example, all accept input as well as providing output. As a result, they can be used to render 2-D molecular images, with more or less Java coding. Both MCDL and JME are especially attractive from the developer perspective because they are each distributed as a single jar file with a small footprint.&lt;/p&gt;

&lt;p&gt;Although numerous 2-D structure editors &lt;a href="http://dragon.klte.hu/~gundat/rajzprogramok/dprog.html"&gt;are available&lt;/a&gt;, those reviewed here meet the minimum requirements for the development of free chemical web applications: they work on nearly all computing platforms thanks to Java; and they are themselves free.&lt;/p&gt;</description>
      <pubDate>Mon, 21 Aug 2006 00:13:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:0bf7a108-3f4f-477a-b528-7dbb2352bda3</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2006/08/21/four-free-2-d-structure-editors-for-web-applications</link>
      <category>Graphics</category>
      <category>web</category>
      <category>jchempaint</category>
      <category>mcdl</category>
      <category>jmoldraw</category>
      <category>jme</category>
      <category>editor</category>
      <category>2d</category>
      <category>webapp</category>
    </item>
    <item>
      <title>A First Look at Modular Chemical Descriptor Language (MCDL)</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;img src="http://depth-first.com/files/mcdl_2001_1.png" /&gt;&lt;/center&gt;&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;The Modular Chemical Descriptor Language (MCDL) was developed to address the need for linear representation of structural and other chemical information for chemical databases, E-journals and the Internet.&lt;/p&gt;

    &lt;p&gt;&lt;cite&gt;-Andrei A. Gakh and Michael N. Burnett &lt;a href="http://dx.doi.org/10.1021/ci000108y"&gt;J. Chem. Inf. Comput. Sci. 2001, 41, 1494-1499&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Molecular line notations reduce a molecular structure to a string of ASCII characters. This is helpful in a variety of situations: as a method of text-based structure input; as a compact representation that can be stored and transmitted over a network; and in some cases as a method for uniquely identifying a molecular structure. The development of line notations is one of the &lt;a href="http://octetsource.net/articles/2006/08/18/107-years-of-line-formula-notations-1861-1968"&gt;oldest&lt;/a&gt; pursuits in chemical informatics.&lt;/p&gt;

&lt;p&gt;MCDL has a lot in common with &lt;a href="http://www.iupac.org/inchi/"&gt;InChI&lt;/a&gt;. Both languages are modular in the sense that succeeding levels of structural complexity are represented by individual &#8220;modules&#8221; (MCDL) or &#8220;layers&#8221; (InChI): constitution; connectivity; and stereochemistry. Both languages sport free developer toolkits written in C (the InChI toolkit, and LINDES, respectively).  Interactive structure-drawing tools even exist for both languages (the interactive MCDL tool was &lt;a href="http://sourceforge.net/projects/mcdl"&gt;recently released&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;MCDL and InChI also differ in some significant ways. One of the biggest differences is that InChI separates hydrogen atoms and their parent atoms into separate layers, whereas MCDL places hydrogen atoms together with the atom to which they are attached. Another difference is in the approach to canonicalization. InChI uses a relatively &lt;a href="http://octetsource.net/articles/2006/08/12/inchi-canonicalization-algorithm"&gt;complex system&lt;/a&gt; not unlike that of &lt;a href="http://pubs3.acs.org/acs/journals/doilookup?in_doi=10.1021/ci00062a008"&gt;canonical SMILES&lt;/a&gt;. In contrast, MCDL uses a simpler system based on ASCII lexical ordering of atom types. On the non-technical side, InChI carries the endorsement of &lt;a href="http://www.iupac.org/"&gt;IUPAC&lt;/a&gt;, whereas MCDL is the work of independent developers.&lt;/p&gt;

&lt;p&gt;MCDL and InChI approach the problem of developing an internet-ready line notation from different angles. It will be interesting to see how each evolves.&lt;/p&gt;</description>
      <pubDate>Sat, 19 Aug 2006 20:04:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:cfebcd69-2080-4251-a3dc-8fbede550b5e</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2006/08/19/a-first-look-at-modular-chemical-descriptor-language-mcdl</link>
      <category>Tools</category>
      <category>lindes</category>
      <category>mcdl</category>
      <category>linenotation</category>
      <category>inchi</category>
    </item>
  </channel>
</rss>
