<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Reviewing the CDK VFLIB patch</title>
	<atom:link href="http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/</link>
	<description>A molecular informatics weblog</description>
	<lastBuildDate>Mon, 19 Jul 2010 10:09:04 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Constance21Thomas</title>
		<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/comment-page-1/#comment-15434</link>
		<dc:creator>Constance21Thomas</dc:creator>
		<pubDate>Mon, 05 Jul 2010 13:56:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.steinbeck-molecular.de/steinblog/?p=225#comment-15434</guid>
		<description>Make your life more easy take the &lt;a href=&quot;http://lowest-rate-loans.com&quot; rel=&quot;nofollow&quot;&gt;loan&lt;/a&gt; and everything you want.</description>
		<content:encoded><![CDATA[<p>Make your life more easy take the <a href="http://lowest-rate-loans.com" onclick="javascript:pageTracker._trackPageview('/outbound/comment/lowest-rate-loans.com');" rel="nofollow">loan</a> and everything you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christoph Steinbeck</title>
		<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/comment-page-1/#comment-8997</link>
		<dc:creator>Christoph Steinbeck</dc:creator>
		<pubDate>Fri, 26 Jun 2009 12:24:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.steinbeck-molecular.de/steinblog/?p=225#comment-8997</guid>
		<description>Hi Asad, thanks a lot for your comment and offer. We are currently sorting out with Rich a few glitches in his code. Please look at http://depth-first.com/articles/2009/06/16/if-the-wheel-doesnt-work-reinvent-it and the discussion therein. The patches resulting from this might be interesting for you. I&#039;ll point Mark Rijnbeek in my group to your offer. Cheers, Chris</description>
		<content:encoded><![CDATA[<p>Hi Asad, thanks a lot for your comment and offer. We are currently sorting out with Rich a few glitches in his code. Please look at <a href="http://depth-first.com/articles/2009/06/16/if-the-wheel-doesnt-work-reinvent-it" onclick="javascript:pageTracker._trackPageview('/outbound/comment/depth-first.com');" rel="nofollow">http://depth-first.com/articles/2009/06/16/if-the-wheel-doesnt-work-reinvent-it</a> and the discussion therein. The patches resulting from this might be interesting for you. I&#8217;ll point Mark Rijnbeek in my group to your offer. Cheers, Chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Syed Asad Rahman</title>
		<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/comment-page-1/#comment-8976</link>
		<dc:creator>Syed Asad Rahman</dc:creator>
		<pubDate>Thu, 25 Jun 2009 23:14:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.steinbeck-molecular.de/steinblog/?p=225#comment-8976</guid>
		<description>Hi Chris,

I have implemented VFLib code from Rich  (avoided reinventing the wheel) into SMSD for Substructure search. It works pretty well.

The code is very much in object oriented format and I have made necessary changes in the code to work with CDK.

Would be happy to share the code if someone is interested.

Asad</description>
		<content:encoded><![CDATA[<p>Hi Chris,</p>
<p>I have implemented VFLib code from Rich  (avoided reinventing the wheel) into SMSD for Substructure search. It works pretty well.</p>
<p>The code is very much in object oriented format and I have made necessary changes in the code to work with CDK.</p>
<p>Would be happy to share the code if someone is interested.</p>
<p>Asad</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christoph Steinbeck</title>
		<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/comment-page-1/#comment-8636</link>
		<dc:creator>Christoph Steinbeck</dc:creator>
		<pubDate>Tue, 16 Jun 2009 17:43:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.steinbeck-molecular.de/steinblog/?p=225#comment-8636</guid>
		<description>Rich, thanks so much for the great comment. We&#039;ll definitely have a look at it. I will point it our to Mark, my OrChem developer. He uses Rajarshi&#039;s VFLib code extensively but would certainly welcome some maintainable code. Cheers, Chris</description>
		<content:encoded><![CDATA[<p>Rich, thanks so much for the great comment. We&#8217;ll definitely have a look at it. I will point it our to Mark, my OrChem developer. He uses Rajarshi&#8217;s VFLib code extensively but would certainly welcome some maintainable code. Cheers, Chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich Apodaca</title>
		<link>http://www.steinbeck-molecular.de/steinblog/index.php/2009/06/16/reviewing-the-cdk-vflib-patch/comment-page-1/#comment-8633</link>
		<dc:creator>Rich Apodaca</dc:creator>
		<pubDate>Tue, 16 Jun 2009 16:52:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.steinbeck-molecular.de/steinblog/?p=225#comment-8633</guid>
		<description>&quot;I checked it out and looked at the code, which looked horrible because it was a 1:1 translation of a horrible looking C code. Clearly,  a decent naming of the variables would greatly improve the code but I remember a statement that the translator himself could not make sense out of this, so the original author is to blame :-) . I do not get the impression that this problem can be rectified quickly. In fact, it took Mark a few days to debug this code by adding a rich collection of debug messages. I’m not sure that this is how it should be. The code is essentially unreadable.&quot;

Chris, my point exactly:

http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other

Rajarshi and I both made attempts to port the C code. The C code might make sense to a C programmer, but Java is really a completely different language with a totally different paradigm. Rajarshi made it to the end, but I gave up in despair. There was no way I wanted to be fighting with code like that for the next few years.

The reason I gave up on porting: unreadable code is unmaintainable and non-extendable code. It promotes bitrot, no matter how well-tested it is.

Then I discovered that the documentation on the VF algorithm is surprisingly easy to read. The algorithm lent itself very nicely to a simple, object-oriented implementation:

http://amalfi.dis.unina.it/graph/db/papers/vf-algorithm.pdf

This is why I created a Java-centric implementation of the VF algorithm from scratch for MX:

http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other

Implementation:

http://github.com/rapodaca/mx/tree/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/map

Main unit tests are here:

http://github.com/rapodaca/mx/blob/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/test/DefaultQueryMapperTest.java

High-level documentation of the code is  available here:

http://depth-first.com/articles/2008/11/17/substructure-search-from-scratch-in-java-part-1-the-atom-mapping-problem

It&#039;s MIT licensed, so feel free to port if you&#039;d like.</description>
		<content:encoded><![CDATA[<p>&#8220;I checked it out and looked at the code, which looked horrible because it was a 1:1 translation of a horrible looking C code. Clearly,  a decent naming of the variables would greatly improve the code but I remember a statement that the translator himself could not make sense out of this, so the original author is to blame <img src='http://www.steinbeck-molecular.de/steinblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  . I do not get the impression that this problem can be rectified quickly. In fact, it took Mark a few days to debug this code by adding a rich collection of debug messages. I’m not sure that this is how it should be. The code is essentially unreadable.&#8221;</p>
<p>Chris, my point exactly:</p>
<p><a href="http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other" onclick="javascript:pageTracker._trackPageview('/outbound/comment/depth-first.com');" rel="nofollow">http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other</a></p>
<p>Rajarshi and I both made attempts to port the C code. The C code might make sense to a C programmer, but Java is really a completely different language with a totally different paradigm. Rajarshi made it to the end, but I gave up in despair. There was no way I wanted to be fighting with code like that for the next few years.</p>
<p>The reason I gave up on porting: unreadable code is unmaintainable and non-extendable code. It promotes bitrot, no matter how well-tested it is.</p>
<p>Then I discovered that the documentation on the VF algorithm is surprisingly easy to read. The algorithm lent itself very nicely to a simple, object-oriented implementation:</p>
<p><a href="http://amalfi.dis.unina.it/graph/db/papers/vf-algorithm.pdf" onclick="javascript:pageTracker._trackPageview('/outbound/comment/amalfi.dis.unina.it');" rel="nofollow">http://amalfi.dis.unina.it/graph/db/papers/vf-algorithm.pdf</a></p>
<p>This is why I created a Java-centric implementation of the VF algorithm from scratch for MX:</p>
<p><a href="http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other" onclick="javascript:pageTracker._trackPageview('/outbound/comment/depth-first.com');" rel="nofollow">http://depth-first.com/articles/2008/11/13/one-of-these-things-is-not-like-the-other</a></p>
<p>Implementation:</p>
<p><a href="http://github.com/rapodaca/mx/tree/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/map" onclick="javascript:pageTracker._trackPageview('/outbound/comment/github.com');" rel="nofollow">http://github.com/rapodaca/mx/tree/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/map</a></p>
<p>Main unit tests are here:</p>
<p><a href="http://github.com/rapodaca/mx/blob/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/test/DefaultQueryMapperTest.java" onclick="javascript:pageTracker._trackPageview('/outbound/comment/github.com');" rel="nofollow">http://github.com/rapodaca/mx/blob/00b9b4e8ee0627a8a4a965cebe510ecb50a5d6cd/src/com/metamolecular/mx/test/DefaultQueryMapperTest.java</a></p>
<p>High-level documentation of the code is  available here:</p>
<p><a href="http://depth-first.com/articles/2008/11/17/substructure-search-from-scratch-in-java-part-1-the-atom-mapping-problem" onclick="javascript:pageTracker._trackPageview('/outbound/comment/depth-first.com');" rel="nofollow">http://depth-first.com/articles/2008/11/17/substructure-search-from-scratch-in-java-part-1-the-atom-mapping-problem</a></p>
<p>It&#8217;s MIT licensed, so feel free to port if you&#8217;d like.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
