<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;CUcBSHcycCp7ImA9WhRUFUQ.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482</id><updated>2012-01-26T07:50:59.998-08:00</updated><category term="ruby" /><category term="linux" /><category term="gnuplot" /><category term="mediawiki" /><category term="Jmol" /><category term="Add to Connotea" /><category term="tools" /><category term="OpenBabel" /><category term="PDF" /><category term="vmware" /><category term="PDB" /><category term="Chemical Blogspace" /><category term="Open Source development" /><category term="Avogadro" /><category term="Stack It" /><category term="humour" /><category term="twirlymol" /><category term="cheminformatics" /><category term="conference" /><category term="cclib" /><category term="cinfony" /><category term="Greasemonkey" /><category term="Blogging" /><category term="CDK" /><category term="webservice" /><category term="academia" /><category term="RDKit" /><category term="python" /><category term="scipy" /><category term="searching" /><category term="optimization" /><category term="publication" /><category term="Journals" /><category term="GaussSum" /><category term="SourceForge" /><category term="review" /><category term="ZINC" /><category term="data" /><category term="talks" /><category term="prism" /><category term="R" /><title>Noel O'Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>257</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/baoilleach" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="baoilleach" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">baoilleach</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CEEFQ3gzcSp7ImA9WhRUFUU.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-714276544503681585</id><published>2012-01-26T03:53:00.000-08:00</published><updated>2012-01-26T04:56:52.689-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-26T04:56:52.689-08:00</app:edited><title>Visualising the fragments in a path-based fingerprint</title><content type="html">With any tool, users will often come up with ways of applying it that the developers of the tool did not originally anticipate. In the Open Babel paper, I gave an example where the InChI was used (by Fábián and Brock) as part of a workflow to identify a specific class of racemic crystals - I don't think that NIST had this use-case originally in mind.&lt;br /&gt;
&lt;br /&gt;
Similarly, although Open Babel's path-based (or Daylight-type) fingerprint FP2 was developed for similarity searching of databases, we realised that users wanted to use the information in the fingerprint for other purposes. From time to time, someone would ask on the mailing list what fragments corresponded to each of the 1024 bits. At first, our response was to point out that we couldn't really say as (a) more than one fragment might correspond to a particular bit and (b) the hashing algorithm that was used to link the fragments and the bits only worked one-way.&lt;br /&gt;
&lt;br /&gt;
Eventually we realised that people wanted something more, and so Chris added an output option to describe the fragments and their corresponding bits. These can be used just like fragments from other fragmentation schemes (looking for privileged fragments, unusual fragments, whatever), and the purpose of this blog post is to show how to get to grips with these fragments by visualising them.&lt;br /&gt;
&lt;br /&gt;
The example molecule is:&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="300" width="300" src="http://2.bp.blogspot.com/-SatvN-nX9nU/TyFFHYspgPI/AAAAAAAABRI/5hCInOFs1Ko/s400/example.png" /&gt;&lt;/div&gt;generated by:&lt;pre&gt;obabel -:N1CC1C(=O)Cl -O example.png&lt;/pre&gt;And here are the corresponding fragments generated by the FP2 fingerprint (scroll to zoom in the image below, click+drag to pan):&lt;embed src="http://baoilleach.webfactional.com/site_media/blog_svg_zoom/frags.svg" type="image/svg+xml" width="500" height="500"/&gt;Note: In the visualisation above, hydrogens should be ignored as they are not included in the paths (we could add an option to the SVG depiction to suppress these if necessary). Also, aromatic bonds are depicted as single bonds unless a complete aromatic ring is present in the fragment.&lt;br /&gt;
&lt;br /&gt;
So...how is it done?&lt;br /&gt;
&lt;br /&gt;
The first step in creating this visualisation is to generate a description of the bits in the corresponding FP2 fingerprint:&lt;pre&gt;obabel -:N1CC1C(=O)Cl -ofpt -xs -xf FP2 &gt; example.txt&lt;/pre&gt;example.txt will contain the following:&lt;pre&gt;&gt;
0 6 1 6 &lt;670&gt;
0 6 1 6 1 6 &lt;260&gt;
0 6 1 7 1 6 &lt;693&gt;
0 6 1 7 1 6 1 6 &lt;9&gt;
0 7 1 6 &lt;82&gt;
0 7 1 6 1 6 &lt;906&gt;
0 7 1 6 1 6 1 6 &lt;348&gt;
0 8 2 6 &lt;623&gt;
0 8 2 6 1 6 &lt;329&gt;
0 8 2 6 1 6 1 6 &lt;652&gt;
0 8 2 6 1 6 1 6 1 7 &lt;635&gt;
0 8 2 6 1 6 1 7 &lt;653&gt;
0 8 2 6 1 6 1 7 1 6 &lt;46&gt;
0 17 &lt;17&gt;
0 17 1 6 &lt;328&gt;
0 17 1 6 1 6 &lt;219&gt;
0 17 1 6 1 6 1 6 &lt;1009&gt;
0 17 1 6 1 6 1 6 1 7 &lt;24&gt;
0 17 1 6 1 6 1 7 &lt;1010&gt;
0 17 1 6 1 6 1 7 1 6 &lt;456&gt;
0 17 1 6 2 8 &lt;329&gt;
1 7 1 6 1 6 &lt;225&gt;
&lt;/pre&gt;The help text for the FPT format explains what this means:&lt;pre style="overflow:auto;"&gt;obabel -H fpt
...
For the path-based fingerprint FP2, the output from the ``-xs`` option is
instead a list of the chemical fragments used to set bits, e.g.::

 $ obabel -:"CCC(=O)Cl" -ofpt -xs -xf FP2
 &gt;
 0 6 1 6 &lt;670&gt;
 0 6 1 6 1 6 &lt;260&gt;
 0 8 2 6 &lt;623&gt;
 ...etc

where the first digit is 0 for linear fragments but is a bond order
for cyclic fragments. The remaining digits indicate the atomic number
and bond order alternatively. Note that a bond order of 5 is used for
aromatic bonds. For example, bit 623 above is the linear fragment O=C
(8 for oxygen, 2 for double bond and 6 for carbon).
...&lt;/pre&gt;If we want to visualise these fragments, a small Python script can read example.txt, create the corresponding molecules, and write out their SMILES strings to output.smi:&lt;script src="https://gist.github.com/1682432.js?file=drawfrags.py"&gt;&lt;/script&gt;Visualising a file full of SMILES strings is then easy. The following line generates the SVG depiction shown above:&lt;pre&gt;obabel output.smi -O fragments.svg -xC&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-714276544503681585?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-4YvagUiyes:IIbSuskl_jA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=-4YvagUiyes:IIbSuskl_jA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-4YvagUiyes:IIbSuskl_jA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-4YvagUiyes:IIbSuskl_jA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-4YvagUiyes:IIbSuskl_jA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-4YvagUiyes:IIbSuskl_jA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=-4YvagUiyes:IIbSuskl_jA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/-4YvagUiyes" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/714276544503681585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=714276544503681585" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/714276544503681585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/714276544503681585?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/01/visualising-fragments-in-path-based.html" title="Visualising the fragments in a path-based fingerprint" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-SatvN-nX9nU/TyFFHYspgPI/AAAAAAAABRI/5hCInOFs1Ko/s72-c/example.png" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CEEASXk4eSp7ImA9WhRVGE0.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-8717521662596366659</id><published>2012-01-17T04:17:00.000-08:00</published><updated>2012-01-17T04:17:28.731-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T04:17:28.731-08:00</app:edited><title>What's up dock?  - Calculate the RMSD between docked and crystal poses</title><content type="html">In cheminformatics, there are two reasons why one might want to calculate the RMSD between two conformers. The first is to check whether two conformers are very close in structure - e.g. for the purpose of generating a diverse set of conformers. This problem is solved using (1) a least squares alignment followed by (2) calculation of the RMSD.&lt;br /&gt;
&lt;br /&gt;
The other situation is comparing two sets of 3D coordinates to see whether a prediction method has accurately reproduced experimental coordinates (e.g. docking). This just requires step (2) above.&lt;br /&gt;
&lt;br /&gt;
The situation is complicated a little bit by the fact that only "heavy" atoms (i.e. non-H atoms in this context) are typically used to calculate the RMSD. A much greater complication is that automorphisms (well, isomorphisms of two molecules which are identical, to be exact) must be taken into account in both cases above. For example, consider the case where two para-substituted benzene rings must be compared; the RMSD calculation must take into account the fact that a 180 degree flip of the ring might yield a smaller RMSD.&lt;br /&gt;
&lt;br /&gt;
Anyhoo, here's some Pybel code that will calculate the RMSD between a crystal pose and a set of docked poses. The code also illustrates how to access the isomorphisms. You should modify the code for your specific purpose:&lt;script src="https://gist.github.com/974477.js?file=dockedpose.py"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-8717521662596366659?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ua0MHCiJvVI:ZDeRFE7kmPk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ua0MHCiJvVI:ZDeRFE7kmPk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ua0MHCiJvVI:ZDeRFE7kmPk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ua0MHCiJvVI:ZDeRFE7kmPk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ua0MHCiJvVI:ZDeRFE7kmPk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ua0MHCiJvVI:ZDeRFE7kmPk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ua0MHCiJvVI:ZDeRFE7kmPk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/ua0MHCiJvVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/8717521662596366659/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=8717521662596366659" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8717521662596366659?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8717521662596366659?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/01/whats-up-dock-calculate-rmsd-between.html" title="What's up dock?  - Calculate the RMSD between docked and crystal poses" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;C0UHR3o5fyp7ImA9WhRXFEs.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6792068952791074697</id><published>2011-12-21T01:53:00.000-08:00</published><updated>2011-12-21T01:53:56.427-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T01:53:56.427-08:00</app:edited><title>Open Babel: 10 Years and Future Directions</title><content type="html">On the Open Babel mailing list, &lt;a href="http://hutchison.chem.pitt.edu/"&gt;Geoff&lt;/a&gt; looks back on 10 years of the project, and looks forward to the future:&lt;blockquote&gt;As 2011 draws to a close, Open Babel is over 10 years old! At this point, it's used by over 40 open source projects, downloaded over 200,000 times, and been used in over 400 academic papers. And of course, there have been 15 releases and dozens of contributors.&lt;/blockquote&gt;...&lt;a href="http://forums.openbabel.org/Open-Babel-10-Years-and-Future-Directions-tc4220643.html"&gt;Read the rest&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
See you in 2012!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-6792068952791074697?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-AGsZSD9eF8:5EKWH9cMn_A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=-AGsZSD9eF8:5EKWH9cMn_A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-AGsZSD9eF8:5EKWH9cMn_A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-AGsZSD9eF8:5EKWH9cMn_A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-AGsZSD9eF8:5EKWH9cMn_A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=-AGsZSD9eF8:5EKWH9cMn_A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=-AGsZSD9eF8:5EKWH9cMn_A:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/-AGsZSD9eF8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6792068952791074697/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6792068952791074697" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6792068952791074697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6792068952791074697?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/12/open-babel-10-years-and-future.html" title="Open Babel: 10 Years and Future Directions" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUQHQ3c_fSp7ImA9WhRQEUw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7983735939812200375</id><published>2011-12-05T11:23:00.000-08:00</published><updated>2011-12-05T11:28:52.945-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-05T11:28:52.945-08:00</app:edited><title>Poll over and discuss Goslar</title><content type="html">So maybe my &lt;a href="http://baoilleach.blogspot.com/2011/11/your-turn-poll-up-and-answer.html"&gt;poll question&lt;/a&gt; was not very difficult (given that 50% of you got it right), but I thought it was quite surprising nonetheless when I came across a guest editorial by Steve Heller* in &lt;i&gt;Anal. Chim. Acta&lt;/i&gt; in 1982, entitled &lt;a href="http://www.hellers.com/steve/resume/p87.html"&gt;"Where have all the data gone?"&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;"Unless something real and practical is done in the near future, it will become impossible to find or use scientific data with the resulting loss of time and money for those who need to repeat experiments."&lt;/blockquote&gt;The future alluded to is the one in which we now live. A follow-up letter, &lt;a href="http://www.hellers.com/steve/resume/p91.html"&gt;"Computer readable analytical chemical data - comments on a critical need"&lt;/a&gt; in &lt;i&gt;Trends in Anal. Chem.&lt;/i&gt; discusses this further.&lt;br /&gt;
&lt;br /&gt;
I was put in mind of these articles at the recent &lt;a href="https://www.gdch.de/index.php?id=780"&gt;German Conference on Chemoinformatics&lt;/a&gt; (GCC2011) in Goslar, when (a) I met Steve Heller, and (b) in Prof Johnny Gasteiger's talk, he highlighted this same problem as one of the outstanding challenges that we should be sorting out. PMR of course has been discussing this issue for some time, but it's the first time I'd heard Prof Gasteiger mention it. &lt;br /&gt;
&lt;br /&gt;
Since I'm on the subject of the GCC, it was good to meet several people who I know through the Open Babel mailing lists, and in particular &lt;a href="http://www.advogato.org/person/mbanck/diary/58.html"&gt;Michael Banck&lt;/a&gt;, who plays a major role in curating chemistry software for Debian. For example, see this &lt;a href="http://blends.alioth.debian.org/debichem/tasks/"&gt;list of packages&lt;/a&gt;. His talk is available on &lt;a href="http://lanyrd.com/2011/gcc2011/coverage/"&gt;Lanyrd&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In a &lt;a href="http://baoilleach.blogspot.com/2011/11/my-new-book-made-of-100-recycled-papers.html"&gt;recent blogpost&lt;/a&gt; I mentioned that Open Access makes it easy to redistribute copies of papers, and I wondered why OA journals don't take advantage of this. Well, it turns out they are - Jan Kuras of Chemistry Central was giving out nice colour copies of the Open Babel paper printed in booklet form, along with similar booklets summarising the three series they have recently published on &lt;a href="http://www.jcheminf.com/series/semantic_mol_future"&gt;RDF&lt;/a&gt;, &lt;a href="http://www.jcheminf.com/series/PubChem3D"&gt;PubChem3D&lt;/a&gt; and &lt;a href="http://www.jcheminf.com/series/semantic_mol_future"&gt;PMR's Symposium&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
And finally here's a picture of me trying to steal a pretzel from one of the &lt;a href="http://cic-fachgruppe.blogspot.com/2011/10/fiz-chemie-berlin-preise-2011_21.html"&gt;FIZ-Chemie Berlin Award winners&lt;/a&gt;, Dr. Volker Dirk Hähnke, who gave a very interesting talk on using sequence alignment methods to align a string representation of a chemical graph:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Q77sNgd9LQo/Tt0W0qIJOCI/AAAAAAAABQw/rYwhGEvX0DE/s1600/blog_post.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://3.bp.blogspot.com/-Q77sNgd9LQo/Tt0W0qIJOCI/AAAAAAAABQw/rYwhGEvX0DE/s400/blog_post.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Footnote:&lt;/b&gt;&lt;br /&gt;
* You may know of Steve from such string representations as the InChI. Incidentally, I thought I was blazing a trail putting my talks on the web, but check out &lt;a href="http://www.hellers.com/steve/pub-talks/"&gt;Steve's page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7983735939812200375?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=I_JEkXDGw-U:ZLKf_RstdlU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=I_JEkXDGw-U:ZLKf_RstdlU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=I_JEkXDGw-U:ZLKf_RstdlU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=I_JEkXDGw-U:ZLKf_RstdlU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=I_JEkXDGw-U:ZLKf_RstdlU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=I_JEkXDGw-U:ZLKf_RstdlU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=I_JEkXDGw-U:ZLKf_RstdlU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/I_JEkXDGw-U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7983735939812200375/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7983735939812200375" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7983735939812200375?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7983735939812200375?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/12/poll-over-and-discuss-goslar.html" title="Poll over and discuss Goslar" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Q77sNgd9LQo/Tt0W0qIJOCI/AAAAAAAABQw/rYwhGEvX0DE/s72-c/blog_post.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DE4DRnY9fip7ImA9WhRRF0k.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-255707051320529283</id><published>2011-12-01T05:42:00.000-08:00</published><updated>2011-12-01T05:42:57.866-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T05:42:57.866-08:00</app:edited><title>Cinfony 1.1 released</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://cinfony.googlecode.com"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_x5Hz3F0jd4Q/SPRd-GzDBbI/AAAAAAAAAqM/E0JytdTVeXs/s400/cinfony_200.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256929986606204338" /&gt;&lt;/a&gt;Cinfony presents a &lt;a href="http://www.redbrick.dcu.ie/~noel/cinfony/1.1"&gt;common API&lt;/a&gt; to several cheminformatics toolkits. It uses the Python programming language, and builds on top of Open Babel, the RDKit, the CDK, Indigo, OPSIN and cheminformatics webservices.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cinfony 1.1 is now &lt;a href="http://cinfony.googlecode.com/"&gt;available for download&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The two major additions in this release are support for using the &lt;a href="http://ggasoftware.com/opensource/indigo"&gt;Indigo&lt;/a&gt; cheminformatics toolkit (the &lt;b&gt;indy&lt;/b&gt; module) and support for &lt;a href="http://opsin.ch.cam.ac.uk/index.html"&gt;OPSIN&lt;/a&gt; (IUPAC name to structure, the &lt;b&gt;opsin&lt;/b&gt; module).&lt;br /&gt;
&lt;br /&gt;
As usual, Cinfony has been updated to use the latest stable releases of each toolkit: Open Babel 2.3.1, CDK 1.4.5, RDKit 2011.09, Indigo 1.0 and OPSIN 1.1. Installation on Windows has also been simplified somewhat as Open Babel 2.3.1 now includes the necessary .jar file and .NET libraries (for use from Jython and IronPython).&lt;br /&gt;
&lt;br /&gt;
The Cinfony website has a somewhat condensed (and only slightly contrived :-) &lt;a href="http://code.google.com/p/cinfony/#Example"&gt;example&lt;/a&gt; showing the use of all of these resources in just 12 lines of Python. Here's a small example showing that roundtripping of IUPAC names is now easy to play with:&lt;pre&gt;&gt;&gt;&gt; from cinfony import opsin, webel
&gt;&gt;&gt; mol = opsin.readstring("iupac",
                           "1-chloro-2-bromopropane")
&gt;&gt;&gt; print webel.Molecule(mol).write("iupac")
2-Bromo-1-chloropropane&lt;/pre&gt;&lt;br /&gt;
To support Cinfony, please cite:&lt;br /&gt;
&lt;blockquote&gt;N.M. O'Boyle, G.R. Hutchison, &lt;i&gt;Chem. Cent. J.&lt;/i&gt;, &lt;b&gt;2008&lt;/b&gt;, &lt;i&gt;2&lt;/i&gt;, 24. [&lt;a href="http://dx.doi.org/10.1186/1752-153X-2-24"&gt;link&lt;/a&gt;]&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-255707051320529283?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=74vSQIUmv6c:QmBeIDEPSOI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=74vSQIUmv6c:QmBeIDEPSOI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=74vSQIUmv6c:QmBeIDEPSOI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=74vSQIUmv6c:QmBeIDEPSOI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=74vSQIUmv6c:QmBeIDEPSOI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=74vSQIUmv6c:QmBeIDEPSOI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=74vSQIUmv6c:QmBeIDEPSOI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/74vSQIUmv6c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/255707051320529283/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=255707051320529283" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/255707051320529283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/255707051320529283?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/12/cinfony-11-released.html" title="Cinfony 1.1 released" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_x5Hz3F0jd4Q/SPRd-GzDBbI/AAAAAAAAAqM/E0JytdTVeXs/s72-c/cinfony_200.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;D04FSX49cSp7ImA9WhRREk8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7265472439347070854</id><published>2011-11-25T04:57:00.000-08:00</published><updated>2011-11-25T04:58:38.069-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T04:58:38.069-08:00</app:edited><title>Your turn - Poll up and answer</title><content type="html">It's been a while, so here's a poll (see the sidebar on the left). &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;In which decade was the following statement made?&lt;/b&gt; Guess before you google it, and extra marks if you know who the author was also.&lt;br /&gt;
&lt;blockquote&gt;With the ever-increasing number of publications, coupled with higher printing costs, there is great pressure brought on journal editors to keep manuscripts as short as possible. While this is quite understandable, it has, in my opinion, lead to a very serious problem. The vast majority of (hopefully) good analytical data, such as spectroscopic, kinetic and thermodynamic measurements, is never readily made available to the scientific community. Published data are often so "compressed" that one is unable to examine alternative interpretations, as the published data are not sufficient. Partial data are preferred to complete data...&lt;br /&gt;
&lt;br /&gt;
Why doesn't [______] make it a policy to require authors to submit full data on spectroscopic and other data for which there are existing data centres? Furthermore, I propose that the editors of this journal and other such journals establish criteria for collecting relevant data for which no data center exists today in order to prepare for the future. Perhaps it is time for a conference of journal editors to meet and propose a solution to this problem. Unless something real and practical is done in the near future, it will become impossible to find or use scientific data with the resulting loss of time and money for those who need to repeat experiments.&lt;/blockquote&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;
(1) I've mixed up the spelling of center/re to protect the innocent.&lt;br /&gt;
(2) Poll closes in 7 days.&lt;br /&gt;
(3) Please - no spoilers in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7265472439347070854?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=D-qYIkfiJdk:Jy5S4SjdRcU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=D-qYIkfiJdk:Jy5S4SjdRcU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=D-qYIkfiJdk:Jy5S4SjdRcU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=D-qYIkfiJdk:Jy5S4SjdRcU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=D-qYIkfiJdk:Jy5S4SjdRcU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=D-qYIkfiJdk:Jy5S4SjdRcU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=D-qYIkfiJdk:Jy5S4SjdRcU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/D-qYIkfiJdk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7265472439347070854/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7265472439347070854" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7265472439347070854?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7265472439347070854?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/11/your-turn-poll-up-and-answer.html" title="Your turn - Poll up and answer" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;C0UCRXgzeCp7ImA9WhRSFkw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-5885866319105532041</id><published>2011-11-18T02:13:00.000-08:00</published><updated>2011-11-18T02:14:24.680-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-18T02:14:24.680-08:00</app:edited><title>Displaying pharmacophores from Pharao in Avogadro</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2-b5Mqv_7Ok/TsYuKai0NJI/AAAAAAAABQg/x5DboG8vWWg/s1600/pharmacophore.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="350" src="http://2.bp.blogspot.com/-2-b5Mqv_7Ok/TsYuKai0NJI/AAAAAAAABQg/x5DboG8vWWg/s400/pharmacophore.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Following on from the &lt;a href="http://baoilleach.blogspot.com/2011/07/displaying-pharmacophores-from-pharmer.html"&gt;equivalent post&lt;/a&gt; for Pharmer, here is an extended &lt;a href="http://avogadro.sf.net"&gt;Avogadro&lt;/a&gt; plugin that works for both &lt;a href="http://pharmer.sf.net/"&gt;Pharmer&lt;/a&gt; and &lt;a href="http://silicos.com/download.html"&gt;Pharao&lt;/a&gt; generated pharmacophores.&lt;br /&gt;
&lt;br /&gt;
The plugin allows the user to click through all of the pharmacophores defined in a file and display them one by one. See install instructions in the previous post. The code is kinda rough-and-ready so be prepared to hack around if you need to sort something out:&lt;script src="https://gist.github.com/1376056.js?file=pharamcophore.py"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-5885866319105532041?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PWoNdWkPjyE:Xn-IEXUDU5Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=PWoNdWkPjyE:Xn-IEXUDU5Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PWoNdWkPjyE:Xn-IEXUDU5Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PWoNdWkPjyE:Xn-IEXUDU5Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PWoNdWkPjyE:Xn-IEXUDU5Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PWoNdWkPjyE:Xn-IEXUDU5Q:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=PWoNdWkPjyE:Xn-IEXUDU5Q:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/PWoNdWkPjyE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/5885866319105532041/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=5885866319105532041" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5885866319105532041?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5885866319105532041?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/11/displaying-pharmacophores-from-pharao.html" title="Displaying pharmacophores from Pharao in Avogadro" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-2-b5Mqv_7Ok/TsYuKai0NJI/AAAAAAAABQg/x5DboG8vWWg/s72-c/pharmacophore.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkAAQXgzcCp7ImA9WhRSFEk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-3856200627790212989</id><published>2011-11-16T03:59:00.000-08:00</published><updated>2011-11-16T03:59:00.688-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T03:59:00.688-08:00</app:edited><title>Plotting accesses on the axis</title><content type="html">It's quite interesting to monitor the page accesses for publications in &lt;a href="http://jcheminf.com"&gt;J. Cheminf.&lt;/a&gt; (which incidentally has just gotten a much improved interface). While page accesses are not citations, they do provide a measure of general interest in a paper. Also, if you reach a certain level (relative to other publications in the journal), your paper gets the "Highly Accessed" badge, which helps to highlight it. PMR has been &lt;a href="http://blogs.ch.cam.ac.uk/pmr/2011/11/15/semantic-molecular-future-article-accesses-during-first-30-days/"&gt;talking about this&lt;/a&gt; too.&lt;br /&gt;
&lt;br /&gt;
I monitored the page accesses in the first month for two recent papers, the &lt;a href="http://www.jcheminf.com/content/3/1/37"&gt;Blue Obelisk paper&lt;/a&gt; and the &lt;a href="http://www.jcheminf.com/content/3/1/33"&gt;Open Babel paper&lt;/a&gt;. I missed a day or two here or there, but the results are shown in this Google spreadsheet graph:&lt;script type="text/javascript" src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js"&gt; {"dataSourceUrl":"//docs.google.com/spreadsheet/tq?key=0AkCMyDkjbsFHdG5IYVE5M1FxcWwzaWw0bi1lV19QSWc&amp;transpose=0&amp;headers=1&amp;range=A1%3AC32&amp;gid=0&amp;pub=1","options":{"vAxes":[{"title":"Accesses","viewWindowMode":"pretty","viewWindow":{}},{"viewWindowMode":"pretty","viewWindow":{}}],"title":"Accesses in First Month","titleX":"No. of days from first availability in preliminary form","pointSize":7,"backgroundColor":"#FFFFFF","legend":"right","lineWidth":0,"hAxis":{"minValue":null,"viewWindowMode":"explicit","viewWindow":{"min":null,"max":30},"maxValue":30},"hasLabelsColumn":false,"width":500,"height":236},"state":{},"chartType":"ScatterChart","chartName":"Chart 1"} &lt;/script&gt;&lt;br /&gt;
It is worth noting that about half of the accesses in the month occur in the first week. At that stage only the preliminary manuscript is available (I think it was two weeks later that the final HTML and PDF was produced). Furthermore, the DOI was not registered until the HTML went live and thus you need provide the direct URL rather than DOI if promoting the paper (I've complained about this to the journal).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-3856200627790212989?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=m2aVYlJ5jR8:Fl3gdadIBJA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=m2aVYlJ5jR8:Fl3gdadIBJA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=m2aVYlJ5jR8:Fl3gdadIBJA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=m2aVYlJ5jR8:Fl3gdadIBJA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=m2aVYlJ5jR8:Fl3gdadIBJA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=m2aVYlJ5jR8:Fl3gdadIBJA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=m2aVYlJ5jR8:Fl3gdadIBJA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/m2aVYlJ5jR8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/3856200627790212989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=3856200627790212989" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3856200627790212989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3856200627790212989?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/11/plotting-accesses-on-axis.html" title="Plotting accesses on the axis" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CEMMQ309fCp7ImA9WhRTE04.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-9202434197269193645</id><published>2011-11-03T03:23:00.000-07:00</published><updated>2011-11-03T08:01:22.364-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T08:01:22.364-07:00</app:edited><title>My new book, made of 100% recycled papers</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.openaccessweek.org/" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"&gt;&lt;img border="0" height="95" width="314" src="http://3.bp.blogspot.com/-9Oumi9bUd9U/TrJwVtPM0zI/AAAAAAAABQU/1Fntd0WzqdA/s400/oaweek.png" /&gt;&lt;/a&gt;&lt;/div&gt;There are many advantages associated with publishing with an Open Access journal...but I'm not going to go into these now (see recent posts on PMR's blog [e.g. &lt;a href="http://blogs.ch.cam.ac.uk/pmr/2011/09/30/access-to-scientific-publications-should-be-a-fundamental-right/"&gt;this one&lt;/a&gt;] for a comprehensive background if the advantages are not self-evident). Here the point I want to make is that the authors of OA papers can do things with their papers which are not allowed by traditional publishers.&lt;br /&gt;
&lt;br /&gt;
As a trivial example, authors of OA publications can &lt;b&gt;&lt;i&gt;legally distribute copies of their papers&lt;/i&gt;&lt;/b&gt; - sort of handy if you're a scientist, eh? :-) With most Open Access publishers, the author does not transfer copyright to the publisher but rather licenses it to them under a Creative Commons License. In other words, the author retains the right to do whatever they want with the paper: they can copy+paste the text into their blog (&lt;i&gt;insert example here if someone can send me one&lt;/i&gt;), they can insert the paper as an appendix to another publication (as I did with the &lt;a href="http://baoilleach.blogspot.com/2011/03/open-babel-book-now-available.html"&gt;Open Babel book&lt;/a&gt;), they can magnify it to A0 size and present it as a poster or art installation or whatever... (I've sometimes wondered why Open Access journals don't make more capital out of this difference between themselves and closed journals - for example, they could hand out the top 10 most accessed papers at conferences.)&lt;br /&gt;
&lt;br /&gt;
Well, in the spirit of exercising my right to recycle my OA papers as I like, I've put together a book (well, a PDF at least) consisting of the various PDFs stitched together with a Table of Contents. Here is the result (a 15MB &lt;a href="http://baoilleach.webfactional.com/site_media/blog_OAPapers/MyOAPapers.pdf"&gt;PDF&lt;/a&gt;)&lt;div&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" style="width:500px;height:353px" id="8ab3cdd2-99a9-0535-4243-f01e5f479bb9" &gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf?mode=mini&amp;amp;autoFlip=true&amp;amp;pageNumber=2&amp;amp;titleBarEnabled=true&amp;amp;shareMenuEnabled=false&amp;amp;printButtonEnabled=false&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111103144225-595103121e384c7ab26a8fb23081b01b" /&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="menu" value="false"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" wmode="transparent" style="width:500px;height:353px" flashvars="mode=mini&amp;amp;autoFlip=true&amp;amp;pageNumber=2&amp;amp;titleBarEnabled=true&amp;amp;shareMenuEnabled=false&amp;amp;printButtonEnabled=false&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111103144225-595103121e384c7ab26a8fb23081b01b" /&gt;&lt;/object&gt;&lt;div style="width:500px;text-align:left;"&gt;&lt;a href="http://issuu.com/baoilleach/docs/my_open_access_papers/2?mode=window&amp;amp;printButtonEnabled=false&amp;amp;backgroundColor=%23222222" target="_blank"&gt;Open publication&lt;/a&gt; - Free &lt;a href="http://issuu.com" target="_blank"&gt;publishing&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;If I wanted to, I could upload this to Lulu and allow people to order a copy in the post, all nicely bound with a cover. Maybe another day.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Notes:&lt;/b&gt; The PDF was created based on comments on the &lt;a href="http://forums.debian.net/viewtopic.php?t=30598"&gt;Debian message board&lt;/a&gt;. To avoid confusion over page numbers, I added the short form of the appropriate reference to the footer of all of the papers. The following Python script was used to automate some of the steps:&lt;pre style="height:200px; overflow:auto;"&gt;import os

latex="""\\documentclass[12pt,a4paper]{book}
\\usepackage{multido}
\\usepackage[hmargin=.8cm,vmargin=0.5cm,nohead,nofoot]{geometry}
\\usepackage[explicit]{titlesec}

\\newcommand*\\Hide{%%
\\titleformat{\\chapter}[display]
  {}{}{0pt}{\\Huge\\thispagestyle{empty}}
\\titleformat{\\part}
  {}{}{0pt}{}
}

\\begin{document}
\\pagestyle{empty}

\\title{Open Access Publications of\\\\Noel O'Boyle}
\\maketitle
\\tableofcontents

%s

\\end{document}
"""

data = {
    "BO.pdf": [15,
"""Open Data, Open Source and Open Standards in chemistry: The Blue Obelisk five years on

N. M. O'Boyle, R. Guha, E. L. Willighagen, S. E. Adams, J. Alvarsson, J.-C. Bradley, I. V. Filippov, R. M. Hanson, M. D. Hanwell, G. R. Hutchison, C. A. James, N. Jeliazkova, A. S. I. D. Lang, K. M. Langner, D. C. Lonie, D. M. Lowe, J. Pansanel, D. Pavlov, O. Spjuth, C. Steinbeck, A. L. Tenderholt, K. J. Theisen and P. Murray-Rust.
J. Cheminf. 2011, 3, 37."""],
    "GM.pdf": [12,
"""Userscripts for the life sciences

E. L. Willighagen, N. M. O'Boyle, H. Gopalakrishnan, D. Jiao, R. Guha, C. Steinbeck and D. J. Wild.
BMC Bioinformatcs. 2007, 8, 487."""],
    "Cinfony.pdf": [10, """Cinfony - combining Open Source cheminformatics toolkits behind a common interface

N. M. O'Boyle and G. R. Hutchison.
Chem. Cent. J. 2008, 2, 24."""],
    "Confab.pdf": [9, """Confab - Systematic generation of diverse low-energy conformers

N. M. O'Boyle, T. Vandermeersch, C. J. Flynn, A. R. Maguire and G. R. Hutchison.
J. Cheminf. 2011, 3, 8."""],
    "AntColony.pdf": [15, """Simultaneous feature selection and parameter optimisation using an artificial ant colony: case study of melting point prediction

N. M. O'Boyle, D. S. Palmer, F. Nigsch and J. B. O. Mitchell.
Chem. Cent. J. 2008, 2, 21."""],
    "DataAnalysis.pdf": [2, """Review of ``Data Analysis with Open Source Tools"

N. M. O'Boyle.
J. Cheminf. 2011, 3, 10."""],
    "MACIE2005.pdf": [2, """MACiE: a database of enzyme reaction mechanisms

G. L. Holliday, G. J. Bartlett, D. E. Almonacid, N. M. O'Boyle, P. Murray-Rust, J. M. Thornton and J. B. O. Mitchell.
Bioinformatics. 2005, 21, 4315-4316."""],
    "MACIE2007.pdf": [6, """MACiE (Mechanism, Annotation and Classification in Enzymes): novel tools for searching catalytic mechanisms

G. L. Holliday, D. E. Almonacid, G. J. Bartlett, N. M. O'Boyle, J. W. Torrance, P. Murray-Rust, J. B. O. Mitchell and J. M. Thornton.
Nucleic Acid Res. 2007, 35, D515-D520."""],
    "OB.pdf": [14, """Open Babel: An open chemical toolbox

N. M. O'Boyle, M. Banck, C. A. James, C. Morley, T. Vandermeersch and G. R. Hutchison.
J. Cheminf. 2011, 3, 33."""],
    "PyChem.pdf": [2, """PYCHEM: a multivariate analysis package for python

R. M. Jarvis, D. Broadhurst, H. Johnson, N. M. O'Boyle and R. Goodacre.
Bioinformatics. 2006, 22, 2565-2566."""],
    "Pybel.pdf": [7, """Pybel: a Python wrapper for the OpenBabel cheminformatics toolkit

N. M. O'Boyle, C. Morley and G. R. Hutchison.
Chem. Cent. J. 2008, 2, 5."""]
    }

order = [["Cheminformatics toolkits", ['Pybel', 'Cinfony', 'OB']],
         ["Enzyme reaction mechanisms", ['MACIE2005', 'MACIE2007']],
         ["QSAR", ['PyChem', 'AntColony']],
         ["The Rest", ["GM", "Confab", "DataAnalysis", "BO"]]
         ]

def formatjournal(text):
    """Format the journal metadata

    &gt;&gt;&gt; formatjournal("Chem. Cent. J. 2008, 2, 5.")
    '\\\\textit{Chem. Cent. J.} \\\\textbf{2008}, \\\\textit{2}, 5.'
    """
    broken = text.split(" ")
    pages = broken[-1][:-1]
    year = broken[-3][:-1]
    volume = broken[-2][:-1]
    journal = " ".join(broken[:-3])
    return "\\textit{%s} \\textbf{%s}, \\textit{%s}, %s." % (journal, year, volume, pages)
    
def test():
    import doctest
    doctest.testmod()

if __name__ == "__main__":
    # Sanity checks
    N = 0
    for x, y in data.iteritems():
        assert os.path.isfile(x)
        N += y[0]
    assert len(data) == sum(len(y) for x, y in order)

    # Write latex
    output = []
    for a, b, in order:
        output.append("\\part{%s}{\\Hide" % a)
        for paper in b:
            pages, biblio = data["%s.pdf" % paper]
            broken = biblio.split("\n")
            title = broken[0]
            output.append("\\chapter{%s}" % title)
            authors = broken[2]
            journaldata = formatjournal(broken[3])
            output.append("""\\multido{}{%d}{\\null\\vfill
    %s
    \\newpage}""" % (pages, journaldata))
        output.append("}")

    with open("generated.tex", "w") as f:
        f.write(latex % "\n".join(output))

    # Join Papers together
    pages = 1
    paper_idx = 1
    names = "A=generated.pdf"
    cat = "A2 A2 A2 A2"
    pages += 4
    for a, b in order:
        cat += " A2 A2"
        pages += 2
        for paper in b:
            # New chapters always on odd-number pages
            if pages % 2 == 0:
                cat += " A2"
                pages += 1
##            print pages
            paper_idx += 1
            papername = chr(64+paper_idx)
            names += " %s=%s.pdf" % (papername, paper)
            cat += " %s" % papername
            pages += data["%s.pdf" % paper][0]
    print &gt;&gt; open("run.bat", "w"), "pdftk %s cat %s output combined.pdf" % (names, cat)

    print """Now run...
pdflatex generated
pdflatex generated
run.bat
pdftk combined.pdf burst output tmp\\file_%03d.pdf
pdftk generated.pdf burst output tmp\\numbers_%03d.pdf

bash-3.2$ cd tmp &amp;&amp; for i in `seq -w 1 109`; do pdftk file_$i.pdf background numbers_$i.pdf output new-$i.pdf; done

pdftk tmp\\new-???.pdf output new.pdf
"""
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-9202434197269193645?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=QGQ8DYswGAY:9L9xmPfKgvw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=QGQ8DYswGAY:9L9xmPfKgvw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=QGQ8DYswGAY:9L9xmPfKgvw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=QGQ8DYswGAY:9L9xmPfKgvw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=QGQ8DYswGAY:9L9xmPfKgvw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=QGQ8DYswGAY:9L9xmPfKgvw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=QGQ8DYswGAY:9L9xmPfKgvw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/QGQ8DYswGAY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/9202434197269193645/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=9202434197269193645" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9202434197269193645?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9202434197269193645?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/11/my-new-book-made-of-100-recycled-papers.html" title="My new book, made of 100% recycled papers" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-9Oumi9bUd9U/TrJwVtPM0zI/AAAAAAAABQU/1Fntd0WzqdA/s72-c/oaweek.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UAQHo5fip7ImA9WhdaEEQ.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7199251206742922424</id><published>2011-10-20T01:20:00.001-07:00</published><updated>2011-10-20T01:27:21.426-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-20T01:27:21.426-07:00</app:edited><title>Open Babel 2.3.1 released</title><content type="html">Coming close on the heels of the &lt;a href="http://baoilleach.blogspot.com/2011/10/open-babel-paper-published-in-journal.html"&gt;Open Babel paper&lt;/a&gt; is the release of &lt;b&gt;Open Babel 2.3.1&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;As announced by Geoff on the mailing list:&lt;br /&gt;&lt;blockquote&gt;I am very happy to finally announce the release of Open Babel 2.3.1, a major update release of the open source chemistry toolbox.&lt;br /&gt;&lt;br /&gt;Open Babel has been downloaded nearly 200,000 times and is used in over 45 projects and over 400 publications.&lt;br /&gt;&lt;a href="http://www.jcheminf.com/content/3/1/33"&gt;http://www.jcheminf.com/content/3/1/33&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This release represents a major bug-fix-release and should be a stable upgrade, strongly recommended for all users of Open Babel. Many bugs and enhancements have been added in the last year since the 2.3.0 release.&lt;br /&gt;&lt;br /&gt;What's new? See the &lt;a href="http://openbabel.org/wiki/Open_Babel_2.3.1"&gt;full release notes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See the new &lt;a href="http://openbabel.org/docs/2.3.1/"&gt;user guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See the updated &lt;a href="http://openbabel.org/api/2.3/"&gt;developer documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To download, see:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/openbabel/files/"&gt;http://sourceforge.net/projects/openbabel/files/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For more information, see the &lt;a href="http://openbabel.org/"&gt;project website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd particularly like to thank Chris Morley, Noel O'Boyle, and many others who put large amounts of time testing and improving this release.&lt;br /&gt;&lt;br /&gt;This is a community project and we couldn't have made this release without you. Many thanks to all the contributors to Open Babel including those of you who submitted feedback, bug reports, and code.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;-Geoff&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Prof. Geoffrey Hutchison&lt;br /&gt;Department of Chemistry&lt;br /&gt;University of Pittsburgh&lt;br /&gt;email: geoffh@pitt.edu&lt;br /&gt;web: http://hutchison.chem.pitt.edu/&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7199251206742922424?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Sa9AHVqWfbw:rLjmCkh8B7o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Sa9AHVqWfbw:rLjmCkh8B7o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Sa9AHVqWfbw:rLjmCkh8B7o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Sa9AHVqWfbw:rLjmCkh8B7o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Sa9AHVqWfbw:rLjmCkh8B7o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Sa9AHVqWfbw:rLjmCkh8B7o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Sa9AHVqWfbw:rLjmCkh8B7o:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/Sa9AHVqWfbw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7199251206742922424/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7199251206742922424" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7199251206742922424?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7199251206742922424?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/10/open-babel-231-released.html" title="Open Babel 2.3.1 released" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkUBQHw7cCp7ImA9WhdaEEk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-4762636952380215125</id><published>2011-10-17T03:07:00.000-07:00</published><updated>2011-10-19T09:04:11.208-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-19T09:04:11.208-07:00</app:edited><title>The Blue Obelisk - An update after 5 years</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jcheminf.com/content/figures/1758-2946-3-37-graphical-abstract.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 126px;" src="http://www.jcheminf.com/content/figures/1758-2946-3-37-graphical-abstract.gif" border="0" alt="" /&gt;&lt;/a&gt;The &lt;a href="http://blueobelisk.org"&gt;Blue Obelisk&lt;/a&gt; group was established at the Spring ACS Meeting in 2005. Following on from the &lt;a href="http://baoilleach.blogspot.com/2011/01/blue-obelisk-lightning-talk-and-poster.html"&gt;presentation/poster&lt;/a&gt; I gave at &lt;a href="http://www-pmr.ch.cam.ac.uk/wiki/Visions_of_a_%28Semantic%29_Molecular_Future"&gt;PMR's Symposium&lt;/a&gt; in January, I put together an overview of the activities of the group over the past 5 years with help from Rajarshi Guha, Egon Willighagen and Peter Murray-Rust, and further contributions on particular projects from many more.&lt;br /&gt;&lt;br /&gt;This paper has just appeared in Journal of Cheminformatics as part of the PMR Symposium &lt;a href="http://jcheminf.com/series/semantic_mol_future"&gt;themed issue&lt;/a&gt;:&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.jcheminf.com/content/3/1/37"&gt;Open Data, Open Source and Open Standards in chemistry: The Blue Obelisk five years on&lt;/a&gt;&lt;/b&gt; Noel M O'Boyle, Rajarshi Guha, Egon L Willighagen, Samuel E Adams, Jonathan Alvarsson, Jean-Claude Bradley, Igor V Filippov, Robert M Hanson, Marcus D Hanwell, Geoffrey R Hutchison, Craig A James, Nina Jeliazkova, Andrew SID Lang, Karol M Langner, David C Lonie, Daniel M Lowe, Jerome Pansanel, Dmitry Pavlov, Ola Spjuth, Christoph Steinbeck, Adam L Tenderholt, Kevin J Theisen, Peter Murray-Rust.&lt;br /&gt;&lt;i&gt;Journal of Cheminformatics&lt;/i&gt; &lt;b&gt;2011&lt;/b&gt;, &lt;i&gt;3&lt;/i&gt;:37.&lt;br /&gt;&lt;br /&gt;Here's the abstract:&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Blue Obelisk movement was established in 2005 as a response to the lack of Open Data, Open Standards and Open Source (ODOSOS) in chemistry. It aims to make it easier to carry out chemistry research by promoting interoperability between chemistry software, encouraging cooperation between Open Source developers, and developing community resources and Open Standards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Results&lt;/span&gt;&lt;br /&gt;This contribution looks back on the work carried out by the Blue Obelisk in thjavascript:void(0)e past 5 years and surveys progress and remaining challenges in the areas of Open Data, Open Standards, and Open Source in chemistry.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusions&lt;/span&gt;&lt;br /&gt;We show that the Blue Obelisk has been very successful in bringing together researchers and developers with common interests in ODOSOS, leading to development of many useful resources freely available to the chemistry community.&lt;/blockquote&gt;Check out the other papers in the themed series over at &lt;a href="http://jcheminf.com/series/semantic_mol_future"&gt;Journal of Cheminformatics&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-4762636952380215125?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=vLsBkwHv8Kw:mUW24CoKD1o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=vLsBkwHv8Kw:mUW24CoKD1o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=vLsBkwHv8Kw:mUW24CoKD1o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=vLsBkwHv8Kw:mUW24CoKD1o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=vLsBkwHv8Kw:mUW24CoKD1o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=vLsBkwHv8Kw:mUW24CoKD1o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=vLsBkwHv8Kw:mUW24CoKD1o:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/vLsBkwHv8Kw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/4762636952380215125/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=4762636952380215125" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4762636952380215125?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4762636952380215125?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/10/blue-obelisk-update-after-5-years.html" title="The Blue Obelisk - An update after 5 years" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;A0UHSH85cCp7ImA9WhdbFUw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-1331259369208219394</id><published>2011-10-13T03:50:00.000-07:00</published><updated>2011-10-13T08:20:39.128-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T08:20:39.128-07:00</app:edited><title>Recognise this? Roundtripping chemical images</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-xHERbsnBLOg/TpbC0tiCoSI/AAAAAAAABPc/5vMnpoYULd4/s1600/tmp.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 201px; height: 196px;" src="http://1.bp.blogspot.com/-xHERbsnBLOg/TpbC0tiCoSI/AAAAAAAABPc/5vMnpoYULd4/s400/tmp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5662927792296337698" /&gt;&lt;/a&gt;With the imminent release of Open Babel 2.3.1, I thought I'd come up with some examples of use for a new feature, PNG depiction.&lt;br /&gt;&lt;br /&gt;To generate a PNG with Open Babel you just use the PNG output format:&lt;pre&gt;obabel -:CC(=O)Cl -O tmp.png&lt;/pre&gt;&lt;br /&gt;Open Babel actually allows you to embed the chemical structure (in any format) directly into a new or existing PNG file. If you do this, then you can roundtrip as follows:&lt;pre&gt;&amp;gt; obabel -:CC(=O)Cl -O tmp.png -xO smi&lt;br /&gt;&amp;gt; obabel tmp.png -osmi&lt;br /&gt;CC(=O)Cl&lt;/pre&gt;&lt;br /&gt;If you haven't embedded a chemical structure in the image, you'll have to use optical chemical recognition software such as the open source &lt;a href="http://osra.sf.net"&gt;OSRA&lt;/a&gt; (Igor Filippov) or &lt;a href="http://ggasoftware.com/opensource/imago"&gt;Imago&lt;/a&gt; (GGA Software). Both of these can output a MOL/SDF file, which contains the 2D coordinates of the perceived structure, and this can be depicted. I did this for a set of &lt;a href="https://sourceforge.net/apps/mediawiki/osra/index.php?title=Validation"&gt;450 images&lt;/a&gt; from the Japanese Patent Office as follows:&lt;pre style="overflow:auto"&gt;&amp;gt; for %a in (*.tif) do "C:\Program Files (x86)\osra\1.3.8\osra.bat" %a --format sdf | obabel -isdf -O %~na_osra.png -d&lt;br /&gt;&amp;gt; for %a in (*_chem.png) do "C:\Program Files\GGA Software\Imago Toolkit\alter_ego.exe" %a -o tmp.mol -q &amp;amp;&amp;amp; obabel tmp.mol -O %~na_imago.png -d&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The results are here: Subset &lt;a href="http://baoilleach.webfactional.com/site_media/blog_osra_convert/subset_1.html"&gt;1&lt;/a&gt; &lt;a href="http://baoilleach.webfactional.com/site_media/blog_osra_convert/subset_2.html"&gt;2&lt;/a&gt; &lt;a href="http://baoilleach.webfactional.com/site_media/blog_osra_convert/subset_3.html"&gt;3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;1. Open Babel depiction for large molecules needs to be fixed, as the lines get faint and disappear in some cases.&lt;br /&gt;2. The tiff files needed to be converted to pngs for Imago (used a "for" loop with Imagemagick convert).&lt;br /&gt;3. In the case of multiple molecules in the OSRA output, only the first molecule is depicted (I think).&lt;br /&gt;4. Several structure gave error messages when depicting the Imago structures due to unrecognised labels. I think there's a way around this but I didn't look into it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-1331259369208219394?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exASptYwSHk:IIvb172OgPI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=exASptYwSHk:IIvb172OgPI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exASptYwSHk:IIvb172OgPI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exASptYwSHk:IIvb172OgPI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exASptYwSHk:IIvb172OgPI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exASptYwSHk:IIvb172OgPI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=exASptYwSHk:IIvb172OgPI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/exASptYwSHk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/1331259369208219394/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=1331259369208219394" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1331259369208219394?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1331259369208219394?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/10/recognise-this-roundtripping-chemical.html" title="Recognise this? Roundtripping chemical images" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-xHERbsnBLOg/TpbC0tiCoSI/AAAAAAAABPc/5vMnpoYULd4/s72-c/tmp.png" height="72" width="72" /><thr:total>7</thr:total></entry><entry gd:etag="W/&quot;DE8ERXc4cSp7ImA9WhdUGUQ.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6732280792847034382</id><published>2011-10-07T07:04:00.000-07:00</published><updated>2011-10-07T07:13:24.939-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-07T07:13:24.939-07:00</app:edited><title>Open Babel paper published in Journal of Cheminformatics</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jcheminf.com/content/3/1/33"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://jcheminf.com/content/figures/1758-2946-3-33-graphical-abstract.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;After almost 10 years as an independent project, the paper is finally here...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.jcheminf.com/content/3/1/33"&gt;Open Babel: An open chemical toolbox&lt;/a&gt;&lt;/b&gt; N. M. O'Boyle, M. Banck, C. A. James, C. Morley, T. Vandermeersch and G. R. Hutchison. &lt;i&gt;Journal of Cheminformatics&lt;/i&gt; &lt;b&gt;2011&lt;/b&gt;, &lt;i&gt;3&lt;/i&gt;:33.&lt;br /&gt;&lt;br /&gt;Here's the abstract:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Background&lt;/b&gt;&lt;br /&gt;A frequent problem in computational modeling is the interconversion of chemical structures between different formats. While standard interchange formats exist (for example, Chemical Markup Language) and de facto standards have arisen (for example, SMILES format), the need to interconvert formats is a continuing problem due to the multitude of different application areas for chemistry data, differences in the data stored by different formats (0D versus 3D, for example), and competition between software along with a lack of vendor-neutral formats.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Results&lt;/b&gt;&lt;br /&gt;We discuss, for the first time, Open Babel, an open-source chemical toolbox that speaks the many languages of chemical data. Open Babel version 2.3 interconverts over 110 formats. The need to represent such a wide variety of chemical and molecular data requires a library that implements a wide range of cheminformatics algorithms, from partial charge assignment and aromaticity detection, to bond order perception and canonicalization. We detail the implementation of Open Babel, describe key advances in the 2.3 release, and outline a variety of uses both in terms of software products and scientific research, including applications far beyond simple format interconversion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;Open Babel presents a solution to the proliferation of multiple chemical file formats. In addition, it provides a variety of useful utilities from conformer searching and 2D depiction, to filtering, batch conversion, and substructure and similarity searching. For developers, it can be used as a programming library to handle chemical data in areas such as organic chemistry, drug design, materials science, and computational chemistry. It is freely available under an open-source license from &lt;a href="http://openbabel.org"&gt;http://openbabel.org&lt;/a&gt;. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-6732280792847034382?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Uc6Ls8h5yaU:GocS849VwaU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Uc6Ls8h5yaU:GocS849VwaU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Uc6Ls8h5yaU:GocS849VwaU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Uc6Ls8h5yaU:GocS849VwaU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Uc6Ls8h5yaU:GocS849VwaU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Uc6Ls8h5yaU:GocS849VwaU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Uc6Ls8h5yaU:GocS849VwaU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/Uc6Ls8h5yaU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6732280792847034382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6732280792847034382" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6732280792847034382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6732280792847034382?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/10/open-babel-paper-published-in-journal.html" title="Open Babel paper published in Journal of Cheminformatics" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;D08BR3s4eCp7ImA9WhdbEUU.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-318303412924142714</id><published>2011-09-26T04:25:00.000-07:00</published><updated>2011-10-09T11:44:16.530-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-09T11:44:16.530-07:00</app:edited><title>chemfp 1.0 - Get your fingerprints off this</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" com="" photos="" jackofspades="" 2133774193="" title="Cool Mint Fingerprint by Jack Spades, on Flickr"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 160px; height: 240px;" src="http://farm3.static.flickr.com/2298/2133774193_bf8384bde4_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;Andrew Dalke has just released V1.0 of his chemical fingerprint package, &lt;b&gt;&lt;a href="http://code.google.com/p/chem-fingerprints/"&gt;chemfp&lt;/a&gt;&lt;/b&gt;. The goal of the project is to produce a standardised file format called &lt;b&gt;FPS&lt;/b&gt; for chemical fingerprints, as well as a set of tools around them. The project itself is a Python module with some superfast C code.&lt;br /&gt;&lt;br /&gt;Why is this needed? Well, right now, if you wanted to use several different toolkits to generate fingerprints and then compare and contrast their use for some application (e.g. 2D similarity searching), you would have to go to quite some lengths to figure out how to handle the file format from each toolkit, and so forth. You could of course avoid the file format completely and use a standard API such as &lt;a href="http://cinfony.googlecode.com/"&gt;Cinfony&lt;/a&gt;, but it's often useful to precalculate the fingerprint and store as a file (also, you may not have access to the toolkit, only a file of fingerprints).&lt;br /&gt;&lt;br /&gt;So, if you have the appropriate toolkit, you can use chemfp to generate fingerprints in the FPS format. For example, if you have the Python bindings for Open Babel, you can use generate the FP2, FP3, FP4 and MACCS fingerprints in FPS format. Other toolkits are supported, namely OEChem and RDKit, with their own fingerprints. Of course, it would make sense for this format to be supported by the toolkits themselves, and indeed Cactvs &lt;a href="http://ccl.net/cgi-bin/ccl/message-new?2011+09+21+004"&gt;already supports&lt;/a&gt; the FPS format, as does Rajarshi's &lt;a href="http://blog.rguha.net/?p=962"&gt;fingerprint&lt;/a&gt; R package. Direct FPS support by Open Babel is also on the cards.&lt;br /&gt;&lt;br /&gt;What about the tools around this format? Right now, there's only a similarity search tool, but that already is very useful as (for example) it supports "many against many" searches, a feature which I have heard requested by several Open Babel users. More tools are on the way though. It's also possible to write your own tools using the Python API. For example, Andrew has written up examples on &lt;a href="http://readthedocs.org/docs/chemfp/en/latest/using-api.html#computing-a-distance-matrix-for-clustering"&gt;generating a distance matrix and drawing a cluster dendrogram&lt;/a&gt; (in about 20 lines of code, albeit with the help of a few libraries), and on &lt;a href="http://readthedocs.org/docs/chemfp/en/latest/using-api.html#taylor-butina-clustering"&gt;Taylor-Butina clustering&lt;/a&gt; (this one maybe 40 lines).&lt;br /&gt;&lt;br /&gt;So check it out at &lt;a href="http://chem-fingerprints.googlecode.com/"&gt;http://chem-fingerprints.googlecode.com&lt;/a&gt;. In particular, the &lt;a href="http://readthedocs.org/docs/chemfp/en/latest/index.html"&gt;documentation&lt;/a&gt; is excellent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Image credit:&lt;/b&gt; &lt;a href="http://www.flickr.com/photos/jackofspades/"&gt;Jack of Spades&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-318303412924142714?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exgqxwnzI14:IW81JQhB5SU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=exgqxwnzI14:IW81JQhB5SU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exgqxwnzI14:IW81JQhB5SU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exgqxwnzI14:IW81JQhB5SU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exgqxwnzI14:IW81JQhB5SU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=exgqxwnzI14:IW81JQhB5SU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=exgqxwnzI14:IW81JQhB5SU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/exgqxwnzI14" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/318303412924142714/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=318303412924142714" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/318303412924142714?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/318303412924142714?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/09/chemfp-10-get-your-fingerprints-off.html" title="chemfp 1.0 - Get your fingerprints off this" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm3.static.flickr.com/2298/2133774193_bf8384bde4_t.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D0IGQnkzeip7ImA9WhdbFEk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-4215900868322791636</id><published>2011-09-13T03:33:00.000-07:00</published><updated>2011-10-12T11:52:03.782-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-12T11:52:03.782-07:00</app:edited><title>Comments on 5th Meeting on U.S. Government Chemical Databases and Open Chemistry</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-B4o6v-LfKZA/Tm8vmzWy3yI/AAAAAAAABPI/XtE0tpU7eSo/s1600/specialrelationship.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-B4o6v-LfKZA/Tm8vmzWy3yI/AAAAAAAABPI/XtE0tpU7eSo/s400/specialrelationship.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5651788401040613154" /&gt;&lt;/a&gt;As &lt;a href="http://baoilleach.blogspot.com/2011/08/presentation-on-open-babel-and.html"&gt;previously discussed&lt;/a&gt;, I attended and presented at the &lt;a href="http://web.ncifcrf.gov/events/chemicaldatabases/"&gt;5th Meeting on U.S. Government Chemical Databases and Open Chemistry&lt;/a&gt; in Frederick, Maryland. Talks were 20 min plus 5 for questions and so quite a lot of ground was covered over the two days.&lt;br /&gt;&lt;br /&gt;I understand that Marc is going to put up many of the talks on the web somewhere (insert link &lt;a href="http://cactus.nci.nih.gov/presentations/meeting-08-2011/meeting-2011-08-25.html"&gt;here&lt;/a&gt; from future), but in the meanwhile you can check out several of the talks over at &lt;a href="http://lanyrd.com/2011/chemdbopenchem/coverage/"&gt;Lanyrd&lt;/a&gt;. The image above is from  &lt;a href="http://dl.dropbox.com/u/1306676/NCI%20Database%20Meeting%20Frederick%20August%202011.pdf"&gt;John Overington's talk&lt;/a&gt; (included with permission), and is meant as a joke as in reality the various databases really do cooperate quite well. In fact there was some talk (-ing) of just having a single database maintained by several partners (like the PDB does it).&lt;br /&gt;&lt;br /&gt;Now some random notes on the meeting...&lt;br /&gt;&lt;br /&gt;It's interesting to note that many of the ideas championed by PMR have now mainstreamed. As an example, the database people were very clear that chemical data should be available directly from publications (in this day and age) rather than have to manually (or automatically) read the literature and enter it in as ChEMBL (and many others) are doing. Attendees on various editorial boards were planning to try to make this happen, although it was noted that submissions to non-prestige journals decrease with every additional hurdle for authors. The counter argument was made that providing these data would make the publication more discoverable, something academia is very keen on.&lt;br /&gt;&lt;br /&gt;Jonathan Goodman took a break from finding &lt;a href="http://www.chemconnector.com/2011/09/01/an-inchikey-collision-is-discovered-and-not-based-on-stereochemistry/"&gt;InChIKey collisions&lt;/a&gt; to describe some work on the development of &lt;a href="http://www-rinchi.ch.cam.ac.uk/"&gt;RInChI&lt;/a&gt;, a variant on InChI for reaction indexing. &lt;br /&gt;&lt;br /&gt;Jasmine Young from the PDB pointed out that reviewers have a role in ensuring data quality too; the PDB is an archival site, not a policing site, and journal reviewers should request the validation report from the PDB when reviewing papers with protein crystal structures.&lt;br /&gt;&lt;br /&gt;I learnt, at least a bit, about computational toxicology programmes. Ann Richard from the National Center for Computational Toxicology (part of the EPA) described &lt;a href="http://www.epa.gov/ncct/Tox21/"&gt;Tox21&lt;/a&gt; and &lt;a href="http://www.epa.gov/ncct/toxcast/"&gt;ToxCast&lt;/a&gt;, two large screening programmes. Tox21 has 10,000 chemicals with 50-&gt;100 assays, while ToxCast has 960 chemical and 500 assays (E&amp;OE). The overall idea is to generate high quality tox data that can be used to develop tox models and essentially push the whole field forward. QC review of the chemicals bought from suppliers was an important and essential part of the process; 20-&gt;30% of purchased chemicals had "issues" (purity but also identity).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vedina.users.sourceforge.net/"&gt;Nina Jeliazkova&lt;/a&gt; described the EU &lt;a href="http://www.opentox.org/"&gt;OpenTox&lt;/a&gt; programme (see slides at link above). Apparently, this programme is just complete but it has successfully developed a set of resources, principally a REST interface to a series of webservices for QSAR. Essentially, these webservices can be used to build a model and make predictions. Applications can be built using these webservices, e.g. &lt;a href="http://apps.ideaconsult.net:8080/ToxPredict"&gt;ToxPredict&lt;/a&gt; and &lt;a href="http://www.toxcreate.net/create"&gt;ToxCreate&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;On the way back from the meeting, I decided to stop off in Keflavik airport in Iceland due to smoke in the cockpit. Any recommendations for must-have Icelandish merch for next time? I held back from buying a jar of volcanic ash from Eyjafjallajökull, and went for the liquorice instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-4215900868322791636?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2PEsxKZi3jo:vQreCLV4ecc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=2PEsxKZi3jo:vQreCLV4ecc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2PEsxKZi3jo:vQreCLV4ecc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2PEsxKZi3jo:vQreCLV4ecc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2PEsxKZi3jo:vQreCLV4ecc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2PEsxKZi3jo:vQreCLV4ecc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=2PEsxKZi3jo:vQreCLV4ecc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/2PEsxKZi3jo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/4215900868322791636/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=4215900868322791636" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4215900868322791636?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4215900868322791636?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/09/comments-on-5th-meeting-on-us.html" title="Comments on 5th Meeting on U.S. Government Chemical Databases and Open Chemistry" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-B4o6v-LfKZA/Tm8vmzWy3yI/AAAAAAAABPI/XtE0tpU7eSo/s72-c/specialrelationship.png" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;DEYBSX0ycCp7ImA9WhdXFkw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-940748403511511129</id><published>2011-08-29T03:22:00.000-07:00</published><updated>2011-08-29T04:09:18.398-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T04:09:18.398-07:00</app:edited><title>Presentation on Open Babel and Databases at 5th Meeting on U.S. Government Chemical Databases and Open Chemistry</title><content type="html">I was fortunate to be able to attend and present at last week's &lt;b&gt;&lt;a href="http://web.ncifcrf.gov/events/chemicaldatabases/"&gt;5th Meeting on U.S. Government Chemical Databases and Open Chemistry&lt;/a&gt;&lt;/b&gt; in Frederick, Maryland. This was really an excellent meeting, and I have to thank &lt;a href="http://ccr.cancer.gov/resources/Cbl/Scientists/Nicklaus.aspx"&gt;Marc Nicklaus&lt;/a&gt; for the invitation and support to attend, and especial thanks to Julia Lam for the superb organisation.
&lt;br /&gt;
&lt;br /&gt;I'll blog separately about the meeting itself, but first here's my talk, &lt;b&gt;"Improving the quality of chemical databases with community-developed tools (and vice versa)"&lt;/b&gt;, which discussed improvements in Open Babel over the last 2 years in the handling of chemical data, and using Open Babel to find errors in databases:
&lt;br /&gt;&lt;div style="width:425px" id="__ss_9053389"&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/9053389" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/baoilleach" target="_blank"&gt;baoilleach&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;In case it's not obvious, the work presented in the first half involved all of the Open Babel developers, each working on different aspects of the toolkit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-940748403511511129?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9gZQ2FJ2P3c:yjuEuRso2W4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=9gZQ2FJ2P3c:yjuEuRso2W4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9gZQ2FJ2P3c:yjuEuRso2W4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9gZQ2FJ2P3c:yjuEuRso2W4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9gZQ2FJ2P3c:yjuEuRso2W4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9gZQ2FJ2P3c:yjuEuRso2W4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=9gZQ2FJ2P3c:yjuEuRso2W4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/9gZQ2FJ2P3c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/940748403511511129/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=940748403511511129" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/940748403511511129?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/940748403511511129?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/08/presentation-on-open-babel-and.html" title="Presentation on Open Babel and Databases at 5th Meeting on U.S. Government Chemical Databases and Open Chemistry" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;A0YHRHw6eCp7ImA9WhdRE0o.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7649097446098329141</id><published>2011-08-03T03:50:00.000-07:00</published><updated>2011-08-03T06:45:35.210-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-03T06:45:35.210-07:00</app:edited><title>The electron density is not an isosurface</title><content type="html">There's no need for us to keep drawing isosurfaces for the electron density and other volumetric data generated by QM calculations. Driven by the engineering field, there are a couple of really amazing open source visualisation toolkits out there that we can use to do so much more. One of these is the &lt;a href="http:://www.vtk.org"&gt;VTK&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://davidlonie.blogspot.com/2011/07/vtkchemistry-now-with-electrons.html"&gt;David Lonie&lt;/a&gt;, as part of Google Summer of Code with &lt;a href="http://blog.cryos.net/"&gt;Marcus Hanwell&lt;/a&gt; of VTK/Avogadro as mentor, is integrating aspects of the VTK into Avogadro (see &lt;a href="http://davidlonie.blogspot.com/2011/07/vtkchemistry-now-with-electrons.html"&gt;this post&lt;/a&gt; for example). But I can't wait, so I've busted out the VTK myself and now present the ELF of water:&lt;img style="display:block;margin:0px auto 10px;" src="http://baoilleach.webfactional.com/site_media/blog/out.gif"/&gt;&lt;br /&gt;&lt;br /&gt;To generate this type of image, install &lt;a href="http://code.enthought.com/projects/mayavi/"&gt;Mayavi2&lt;/a&gt; (not exactly trivial to be honest), and then run the following Python script to generate PNG files (this script is adapted from &lt;a href="http://github.enthought.com/mayavi/mayavi/auto/example_chemistry.html"&gt;a Mayavi example&lt;/a&gt;, which you may want to run first):&lt;pre style="overflow:auto"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&lt;font color="#ff00ff"&gt;In this example, we display the H2O molecule, and use volume rendering to&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;display the electron localization function.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;The atoms and the bounds are displayed using mlab.points3d and&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;mlab.plot3d, with scalar information to control the color.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;The electron localization function is displayed using volume rendering.&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;Good use of the `vmin` and `vmax` argument to&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;`mlab.pipeline.volume` is critical to achieve a good visualization: the&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;`vmin` threshold should placed high-enough for features to stand out.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#ff00ff"&gt;The original is an electron localization function from Axel Kohlmeyer.&lt;/font&gt;&lt;br /&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Author: Gael Varoquaux &amp;lt;gael.varoquaux@normalesup.org&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Copyright (c) 2008, Enthought, Inc.&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# License: BSD Style.&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Edited by: Noel O'Boyle &amp;lt;baoileach@gmail.com&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Retrieve the electron localization data for H2O ##############################&lt;/font&gt;&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;os&lt;br /&gt;&lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;not&lt;/b&gt;&lt;/font&gt;&amp;nbsp;os.path.exists('&lt;font color="#ff00ff"&gt;h2o-elf.cube&lt;/font&gt;'):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# Download the data&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;urllib&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;'&lt;font color="#ff00ff"&gt;Downloading data, please wait&lt;/font&gt;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opener = urllib.urlopen(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;&lt;a href="http://code.enthought.com/projects/mayavi/data/h2o-elf.cube"&gt;http://code.enthought.com/projects/mayavi/data/h2o-elf.cube&lt;/a&gt;&lt;/font&gt;'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;open('&lt;font color="#ff00ff"&gt;h2o-elf.cube&lt;/font&gt;', '&lt;font color="#ff00ff"&gt;wb&lt;/font&gt;').write(opener.read())&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Plot the atoms and the bonds #################################################&lt;/font&gt;&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;numpy &lt;font color="#a020f0"&gt;as&lt;/font&gt;&amp;nbsp;np&lt;br /&gt;&lt;font color="#a020f0"&gt;from&lt;/font&gt;&amp;nbsp;mayavi &lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;mlab&lt;br /&gt;mlab.options.offscreen = True&lt;br /&gt;mlab.figure(1, bgcolor=(0, 0, 0), size=(350, 350))&lt;br /&gt;mlab.clf()&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# The position of the atoms&lt;/font&gt;&lt;br /&gt;atoms_x = np.array([2.9, 2.9, 3.8])*40/5.5&lt;br /&gt;atoms_y = np.array([3.0, 3.0, 3.0])*40/5.5&lt;br /&gt;atoms_z = np.array([3.8, 2.9, 2.7])*40/5.5&lt;br /&gt;&lt;br /&gt;O = mlab.points3d(atoms_x[1:-1], atoms_y[1:-1], atoms_z[1:-1],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scale_factor=3,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resolution=20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color=(1, 0, 0),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scale_mode='&lt;font color="#ff00ff"&gt;none&lt;/font&gt;')&lt;br /&gt;&lt;br /&gt;H1 = mlab.points3d(atoms_x[:1], atoms_y[:1], atoms_z[:1],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scale_factor=2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution=20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color=(1, 1, 1),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scale_mode='&lt;font color="#ff00ff"&gt;none&lt;/font&gt;')&lt;br /&gt;&lt;br /&gt;H2 = mlab.points3d(atoms_x[-1:], atoms_y[-1:], atoms_z[-1:],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scale_factor=2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resolution=20,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color=(1, 1, 1),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scale_mode='&lt;font color="#ff00ff"&gt;none&lt;/font&gt;')&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# The bounds between the atoms, we use the scalar information to give&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# color&lt;/font&gt;&lt;br /&gt;mlab.plot3d(atoms_x, atoms_y, atoms_z, [1, 2, 1],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tube_radius=0.4, colormap='&lt;font color="#ff00ff"&gt;Reds&lt;/font&gt;')&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Display the electron localization function ###################################&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;## Load the data, we need to remove the first 8 lines and the '\n'&lt;/font&gt;&lt;br /&gt;str = '&lt;font color="#ff00ff"&gt;&amp;nbsp;&lt;/font&gt;'.join(file('&lt;font color="#ff00ff"&gt;h2o-elf.cube&lt;/font&gt;').readlines()[9:])&lt;br /&gt;data = np.fromstring(str, sep='&lt;font color="#ff00ff"&gt;&amp;nbsp;&lt;/font&gt;')&lt;br /&gt;data.shape = (40, 40, 40)&lt;br /&gt;&lt;br /&gt;source = mlab.pipeline.scalar_field(data)&lt;br /&gt;min = data.min()&lt;br /&gt;max = data.max()&lt;br /&gt;vol = mlab.pipeline.volume(source, vmin=min+0.65*(max-min),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vmax=min+0.9*(max-min))&lt;br /&gt;&lt;br /&gt;mlab.view(132, 54, 45, [21, 20, 21.5])&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;##mlab.show()&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;f = mlab.gcf()&lt;br /&gt;&lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;range(36):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.scene.camera.azimuth(10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.scene.render()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mlab.savefig('&lt;font color="#ff00ff"&gt;example_%02d.png&lt;/font&gt;'&amp;nbsp;% i)&lt;/pre&gt;&lt;br /&gt;To create an AVI from these PNGs, use mencoder:&lt;pre style="overflow:auto"&gt;C:\Tools\mayavi&gt;..\MPlayer-p4-svn-33883\mencoder.exe "mf://example_%02d.png" -mf fps=10 -o anim.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=500&lt;/pre&gt;&lt;br /&gt;To create an animated GIF use ImageMagick:&lt;pre style="overflow:auto"&gt;C:\Tools\mayavi&gt;convert -delay 10 -loop 0 example_*.png animation.gif&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7649097446098329141?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=0Rp9uZiAiZg:5k8pHafABwk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=0Rp9uZiAiZg:5k8pHafABwk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=0Rp9uZiAiZg:5k8pHafABwk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=0Rp9uZiAiZg:5k8pHafABwk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=0Rp9uZiAiZg:5k8pHafABwk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=0Rp9uZiAiZg:5k8pHafABwk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=0Rp9uZiAiZg:5k8pHafABwk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/0Rp9uZiAiZg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7649097446098329141/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7649097446098329141" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7649097446098329141?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7649097446098329141?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/08/electron-density-is-not-isosurface.html" title="The electron density is not an isosurface" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CkADQ3o4cSp7ImA9WhdSFUk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-915718976666715848</id><published>2011-07-24T13:52:00.000-07:00</published><updated>2011-07-24T13:52:52.439-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-24T13:52:52.439-07:00</app:edited><title>Depict a chemical structure...without graphics Part II</title><content type="html">In an &lt;a href="http://baoilleach.blogspot.com/2010/09/depict-chemical-structurewithout.html"&gt;earlier post&lt;/a&gt;, I showed how PNGs depicting 2D molecular structures could be viewed in a text terminal. This can be useful when you're logged into a remote server and don't have access to a graphical viewer.&lt;br /&gt;&lt;br /&gt;Just for fun, I've thrown together an ASCII depiction format for Open Babel that uses &lt;a href="http://aa-project.sourceforge.net/aalib/"&gt;aalib&lt;/a&gt;. But this time, rather than create a PNG depiction and then convert that to ASCII, this "Painter" (in the language of the Open Babel API) draws the structure directly onto an ASCII canvas. This should lead to better resolution, although I haven't done a proper head-to-head comparison. Here's how it looks in action (compare to the images in my &lt;a href="http://baoilleach.blogspot.com/2010/09/depict-chemical-structurewithout.html"&gt;earlier post&lt;/a&gt;):&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-F4Mgh8rn5VM/Tix-WVodx7I/AAAAAAAABJI/-XJUatatldw/s1600/Screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 330px;" src="http://1.bp.blogspot.com/-F4Mgh8rn5VM/Tix-WVodx7I/AAAAAAAABJI/-XJUatatldw/s400/Screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5633016156162738098" /&gt;&lt;/a&gt;&lt;br /&gt;Note that I haven't checked this code into SVN, and I'm not sure I will. For my own reference, I've stored some of the relevant files at &lt;a href="http://baoilleach.webfactional.com/site_media/blog_ascii/asciiformat.diff"&gt;this link&lt;/a&gt; (diff against r4530). Includes code taken from &lt;a href="http://icculus.org/aahelper/"&gt;aa-helper&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-915718976666715848?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7VO5KM1uyuY:f7K0f0Tasf8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=7VO5KM1uyuY:f7K0f0Tasf8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7VO5KM1uyuY:f7K0f0Tasf8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7VO5KM1uyuY:f7K0f0Tasf8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7VO5KM1uyuY:f7K0f0Tasf8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7VO5KM1uyuY:f7K0f0Tasf8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=7VO5KM1uyuY:f7K0f0Tasf8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/7VO5KM1uyuY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/915718976666715848/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=915718976666715848" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/915718976666715848?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/915718976666715848?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/depict-chemical-structurewithout.html" title="Depict a chemical structure...without graphics Part II" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-F4Mgh8rn5VM/Tix-WVodx7I/AAAAAAAABJI/-XJUatatldw/s72-c/Screenshot.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkACQ3g6cCp7ImA9WhdSEks.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-5710555033714755034</id><published>2011-07-21T09:00:00.000-07:00</published><updated>2011-07-21T09:12:42.618-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T09:12:42.618-07:00</app:edited><title>Presentation on Solar Cells at Goslar (Nov 2010)</title><content type="html">Now that &lt;a href="http://baoilleach.blogspot.com/2011/07/we-can-design-molecular-wires-for-you.html"&gt;the paper&lt;/a&gt; has come out, I think it's safe to post the corresponding talk I gave at the &lt;a href="http://www.gdch.de/vas/tagungen/tg/5412__e.htm"&gt;6th German Conference on Chemoinformatics&lt;/a&gt; at Goslar last November:&lt;div style="width:425px" id="__ss_8642321"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/baoilleach/de-novo-design-of-molecular-wires-with-optimal-properties-for-solar-energy-conversion" title="De novo design of molecular wires with optimal properties for solar energy conversion" target="_blank"&gt;De novo design of molecular wires with optimal properties for solar energy conversion&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8642321" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/baoilleach" target="_blank"&gt;baoilleach&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-5710555033714755034?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aCj1Nfh71Uc:9qa86xdb3qg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=aCj1Nfh71Uc:9qa86xdb3qg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aCj1Nfh71Uc:9qa86xdb3qg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aCj1Nfh71Uc:9qa86xdb3qg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aCj1Nfh71Uc:9qa86xdb3qg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aCj1Nfh71Uc:9qa86xdb3qg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=aCj1Nfh71Uc:9qa86xdb3qg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/aCj1Nfh71Uc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/5710555033714755034/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=5710555033714755034" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5710555033714755034?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5710555033714755034?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/presentation-on-solar-cells-at-goslar.html" title="Presentation on Solar Cells at Goslar (Nov 2010)" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkAASHY5eCp7ImA9WhdSEEU.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7456786886691200889</id><published>2011-07-19T07:01:00.000-07:00</published><updated>2011-07-19T07:12:29.820-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-19T07:12:29.820-07:00</app:edited><title>Displaying pharmacophores from Pharmer in Avogadro</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-lAhCGIR2hxI/TiWMgpnnjMI/AAAAAAAABJA/kyOeX96Q1ms/s1600/img1.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 260px; height: 216px;" src="http://1.bp.blogspot.com/-lAhCGIR2hxI/TiWMgpnnjMI/AAAAAAAABJA/kyOeX96Q1ms/s320/img1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5631061401652399298" /&gt;&lt;/a&gt;&lt;a href="http://avogadro.openmolecules.net"&gt;Avogadro&lt;/a&gt; has a plugin architecture that allows you to drop a Python script into a particular folder to add additional functionality, whether it be a new menu item, a new display method or whatever. I've previously used this to write &lt;a href="http://baoilleach.blogspot.com/2010/04/plug-cclib-into-avogadro.html"&gt;an extension&lt;/a&gt; to read comp chem log files using cclib. This time I need to add a new display method (or Engine in the lingo of Avogadro) that will depict a pharmacophore.&lt;br /&gt;&lt;br /&gt;So what's &lt;b&gt;Pharmer&lt;/b&gt;? Well, until the release of Pharao by &lt;a href="http://www.silicos.be/"&gt;Silicos&lt;/a&gt; last year there were no open source pharmacophore programs. And the recent release of &lt;a href="http://pharmer.sf.net"&gt;Pharmer&lt;/a&gt; by David Koes bumps the number up to two. Pharmer focuses on pharmacophore search - ultra-fast pharmacophore search, that is. It does this by precomputing an index that allows very efficient searching. The common denominator of Pharmer and Pharao is not only "Phar", but also that both use the &lt;a href="http://openbabel.org"&gt;Open Babel&lt;/a&gt; library.&lt;br /&gt;&lt;br /&gt;The file format used by Pharmer is simply JSON, which is easily edited by a text editor. Here's an example that was created using the &lt;a href="http://zincpharmer.csb.pitt.edu/"&gt;ZINC Pharmer&lt;/a&gt; interface: &lt;a href="http://baoilleach.webfactional.com/site_media/blog_avogadro_pharmer/HSP90.txt"&gt;HSP90.txt&lt;/a&gt;. If you install Avogadro 1.0.1 with Python support on Windows, also have Python 2.6 installed in C:\Python26, and copy the Python script shown below to C:\Program Files (x86)\Avogadro\bin\engineScripts, then you can add the Pharmacophore engine (click "Add" in the "Display Types" panel; note: you can add more than one Pharmacophore engine if you want to display more than one pharmacophore at the same time). Once added, click on Settings and Browse to open the Pharmer JSON file. If nothing appears on the screen, try rotating the display slightly.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; The image above was created by joining the output of the following Pharmer command using "obabel --join" and depicting with Avogadro:&lt;pre style="overflow:auto"&gt;pharmer dbsearch -dbdir db_712_actives -in HSP90.txt -out results.sdf -reduceconfs 1 -sort-rmsd&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;pharmacophore.py:&lt;/b&gt;&lt;br /&gt;&lt;pre style="overflow:auto"&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;os&lt;br /&gt;&lt;font color="#a020f0"&gt;from&lt;/font&gt;&amp;nbsp;PyQt4.Qt &lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;*&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;Avogadro &lt;font color="#a020f0"&gt;as&lt;/font&gt;&amp;nbsp;avo&lt;br /&gt;&lt;font color="#a020f0"&gt;from&lt;/font&gt;&amp;nbsp;numpy &lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;array&lt;br /&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;# Get JSON from my own Python installation&lt;/font&gt;&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;sys&lt;br /&gt;sys.path.append(&amp;quot;&lt;font color="#ff00ff"&gt;C:&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&lt;font color="#ff00ff"&gt;Python26&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&lt;font color="#ff00ff"&gt;Lib&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&lt;font color="#ff00ff"&gt;site-packages&lt;/font&gt;&amp;quot;)&lt;br /&gt;sys.path.append(&amp;quot;&lt;font color="#ff00ff"&gt;C:&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&lt;font color="#ff00ff"&gt;Python26&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&lt;font color="#ff00ff"&gt;lib&lt;/font&gt;&amp;quot;)&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt;&amp;nbsp;json&lt;br /&gt;&lt;br /&gt;colorlookup = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;Hydrophobic&lt;/font&gt;': [0, 139, 69],&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;HydrogenAcceptor&lt;/font&gt;': [255, 165, 0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;HydrogenDonor&lt;/font&gt;': [211, 211, 211],&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;Aromatic&lt;/font&gt;': [205, 0, 205],&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;PositiveIon&lt;/font&gt;': [0, 0, 238],&lt;br /&gt;&amp;nbsp;&amp;nbsp;'&lt;font color="#ff00ff"&gt;NegativeIon&lt;/font&gt;': [255, 0, 0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;font color="#804040"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;Engine&lt;/font&gt;(QObject):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# declare the changed() signal&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;__pyqtSignals__ = (&amp;quot;&lt;font color="#ff00ff"&gt;changed()&lt;/font&gt;&amp;quot;,)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# constructor&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;__init__&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;QObject.__init__(self)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.widget = None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.textbox = None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.filename = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.pharma = []&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;name&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;quot;&lt;font color="#ff00ff"&gt;Pharmacophore&lt;/font&gt;&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;flags&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;avo.EngineFlags.NoFlags&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;debug&lt;/font&gt;(self, text):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filename = os.path.join(&amp;quot;&lt;font color="#ff00ff"&gt;C:&lt;/font&gt;&lt;font color="#6a5acd"&gt;\\&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff00ff"&gt;Users&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff00ff"&gt;Noel&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff00ff"&gt;Desktop&lt;/font&gt;&amp;quot;, &amp;quot;&lt;font color="#ff00ff"&gt;tmp.txt&lt;/font&gt;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output = open(filename, &amp;quot;&lt;font color="#ff00ff"&gt;a&lt;/font&gt;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&amp;gt;&amp;gt; output, text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output.close()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#a020f0"&gt;@&lt;/font&gt;&lt;font color="#008080"&gt;pyqtSignature&lt;/font&gt;(&amp;quot;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;browse&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.filename = str(QFileDialog.getOpenFileName())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;not&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self.filename:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.textbox.setText(self.filename)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;with&lt;/b&gt;&lt;/font&gt;&amp;nbsp;open(self.filename) &lt;font color="#a020f0"&gt;as&lt;/font&gt;&amp;nbsp;f:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query = json.load(f)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.pharma = [x &lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;x &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;query['&lt;font color="#ff00ff"&gt;points&lt;/font&gt;'] &lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;x['&lt;font color="#ff00ff"&gt;enabled&lt;/font&gt;']]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;len(self.pharma) &amp;gt; 0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;p &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self.pharma:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x += p['&lt;font color="#ff00ff"&gt;x&lt;/font&gt;']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y += p['&lt;font color="#ff00ff"&gt;y&lt;/font&gt;']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z += p['&lt;font color="#ff00ff"&gt;z&lt;/font&gt;']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x /= len(self.pharma)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y /= len(self.pharma)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z /= len(self.pharma)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;p &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self.pharma:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p['&lt;font color="#ff00ff"&gt;x&lt;/font&gt;'] -= x&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p['&lt;font color="#ff00ff"&gt;y&lt;/font&gt;'] -= y&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p['&lt;font color="#ff00ff"&gt;z&lt;/font&gt;'] -= z&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.debug(&amp;quot;&lt;font color="#ff00ff"&gt;Pharma: %s&lt;/font&gt;&amp;quot;&amp;nbsp;% self.pharma)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.emit(SIGNAL(&amp;quot;&lt;font color="#ff00ff"&gt;changed()&lt;/font&gt;&amp;quot;))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#a020f0"&gt;@&lt;/font&gt;&lt;font color="#008080"&gt;pyqtSignature&lt;/font&gt;(&amp;quot;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;clear&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.filename = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.textbox.setText(self.filename)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.pharma = []&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.emit(SIGNAL(&amp;quot;&lt;font color="#ff00ff"&gt;changed()&lt;/font&gt;&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;settingsWidget&lt;/font&gt;(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.widget = QWidget()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout = QVBoxLayout(self.widget)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.textbox = QLineEdit(self.filename)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.textbox.setReadOnly(True)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.addWidget(self.textbox)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buttons = QHBoxLayout(self.widget)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;layout.addLayout(buttons)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.browsebtn = QPushButton(&amp;quot;&lt;font color="#ff00ff"&gt;Browse&lt;/font&gt;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.clearbtn = QPushButton(&amp;quot;&lt;font color="#ff00ff"&gt;Clear&lt;/font&gt;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buttons.addWidget(self.browsebtn)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buttons.addWidget(self.clearbtn)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;QObject.connect(self.browsebtn, SIGNAL(&amp;quot;&lt;font color="#ff00ff"&gt;clicked()&lt;/font&gt;&amp;quot;), self, SLOT(&amp;quot;&lt;font color="#ff00ff"&gt;browse()&lt;/font&gt;&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;QObject.connect(self.clearbtn, SIGNAL(&amp;quot;&lt;font color="#ff00ff"&gt;clicked()&lt;/font&gt;&amp;quot;), self, SLOT(&amp;quot;&lt;font color="#ff00ff"&gt;clear()&lt;/font&gt;&amp;quot;))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self.widget&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color="#008080"&gt;renderOpaque&lt;/font&gt;(self, pd):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.debug(&amp;quot;&lt;font color="#ff00ff"&gt;Len of pharma: %d&lt;/font&gt;&amp;quot;&amp;nbsp;% len(self.pharma))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;len(self.pharma) == 0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# Painter &lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;painter = pd.painter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# Molecule&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;molecule = pd.molecule&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;# Color&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color = pd.colorMap&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;point &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;self.pharma:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;point['&lt;font color="#ff00ff"&gt;name&lt;/font&gt;'] &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;colorlookup:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;colvals = [float(x) / 255. &lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;&amp;nbsp;x &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt;&amp;nbsp;colorlookup[point['&lt;font color="#ff00ff"&gt;name&lt;/font&gt;']]] + [1.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color.setFromRgba(*colvals)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#804040"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color.setFromRgba(0.3, 0.6, 1.0, 1.0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;painter.setColor(color)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r = point['&lt;font color="#ff00ff"&gt;radius&lt;/font&gt;']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.debug(&amp;quot;&lt;font color="#ff00ff"&gt;Radius: %.1f&lt;/font&gt;&amp;quot;&amp;nbsp;% r)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x, y, z = point['&lt;font color="#ff00ff"&gt;x&lt;/font&gt;'], point['&lt;font color="#ff00ff"&gt;y&lt;/font&gt;'], point['&lt;font color="#ff00ff"&gt;z&lt;/font&gt;']&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;painter.drawSphere(array([x, y, z]), r)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7456786886691200889?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dJTmLUBJ04Q:HQcVithApeo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dJTmLUBJ04Q:HQcVithApeo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dJTmLUBJ04Q:HQcVithApeo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dJTmLUBJ04Q:HQcVithApeo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dJTmLUBJ04Q:HQcVithApeo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dJTmLUBJ04Q:HQcVithApeo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dJTmLUBJ04Q:HQcVithApeo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/dJTmLUBJ04Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7456786886691200889/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7456786886691200889" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7456786886691200889?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7456786886691200889?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/displaying-pharmacophores-from-pharmer.html" title="Displaying pharmacophores from Pharmer in Avogadro" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lAhCGIR2hxI/TiWMgpnnjMI/AAAAAAAABJA/kyOeX96Q1ms/s72-c/img1.png" height="72" width="72" /><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;DEQFRn44eCp7ImA9WhdTFEo.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-952424617689233477</id><published>2011-07-12T04:24:00.000-07:00</published><updated>2011-07-12T06:11:57.030-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-12T06:11:57.030-07:00</app:edited><title>The alpha and omega of SMILES strings Part II</title><content type="html">&lt;a href="http://www.flickr.com/photos/crashoverreason/156579306/" title="Smiling tree by crashoverreason, on Flickr"&gt;&lt;img style="float:right" src="http://farm1.static.flickr.com/77/156579306_f3bca352f0_m.jpg" width="160" height="240" alt="Smiling tree"&gt;&lt;/a&gt;In the &lt;a href="http://baoilleach.blogspot.com/2011/07/alpha-and-omega-of-smiles-strings.html"&gt;previous post&lt;/a&gt; I described why it's useful to be able to generate SMILES strings starting and ending with particular atoms. This post describes how to do it.&lt;br /&gt;&lt;br /&gt;To begin with, one way to do this is using ring closure notation, as Rajarshi and Andrew pointed out in replies to a question of mine at the &lt;a href="http://blueobelisk.shapado.com/questions/how-to-reorder-a-smiles-string-to-have-specific-first-and-final-atoms"&gt;Blue Obelisk Q&amp;A&lt;/a&gt; early this year. Andrew went on to write a &lt;a href="http://dalkescientific.com/writings/diary/archive/2010/12/28/reordering_smiles.html"&gt;Python script&lt;/a&gt; that allowed complete reordering of all of the atoms of a molecule using this method.&lt;br /&gt;&lt;br /&gt;I was hoping to find a more elegant method than using ring closures. Also, wholesale use of ring closures can cause problems with stereochemistry as this is a corner case that not all toolkits handle correctly. In any case, I kept thinking about this on and off, and eventually got around to trying some ideas out. In the end, the solution was easier than I'd thought.&lt;br /&gt;&lt;br /&gt;A SMILES string is generated from a depth-first tree traversal of a graph. Every atom (except for the root) has a parent atom, and 0 or more child atoms. Setting the start atom is trivial; just make that the root. It turns out that setting the end atom requires only two rules: (1) parenthesise all of the child trees of the end atom, and all but the last child trees of other atoms (this latter should be the default in any case), (2) visit child trees that do not have a route (through 'unvisited' atoms) to the end atom first.&lt;br /&gt;&lt;br /&gt;That's it...except for the corner cases. Click Comp Chem involves replacing an implicit H of the start and end atoms; if there is an explicit bracketed H present, then it needs to be removed to free up the valence. For example, if the endatom is [nH] or [C@@H] then the H needs to go. Otherwise you have weirdoddities like the following 5-coordinate C:&lt;pre&gt;C[C@@H](Br)(Cl) + I gives C[C@@H](Br)(Cl)I&lt;/pre&gt;Note however that this may result in a SMILES string that does not accurately represent the original structure (but that's not the point of the exercise) e.g.&lt;pre&gt;c1c[nH]cc1 -&gt; c1c[n](cc1)&lt;/pre&gt;What about the stereochemistry? Well, I toss that out too at the moment; an alternative would be to allow the user to specify the resulting stereochemistry at the start and end atoms.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Image credit:&lt;/b&gt; &lt;a href="http://www.flickr.com/photos/crashoverreason/"&gt;crashoverreason&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-952424617689233477?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=eet4RxcXDE0:ztwn5UTGocY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=eet4RxcXDE0:ztwn5UTGocY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=eet4RxcXDE0:ztwn5UTGocY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=eet4RxcXDE0:ztwn5UTGocY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=eet4RxcXDE0:ztwn5UTGocY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=eet4RxcXDE0:ztwn5UTGocY:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=eet4RxcXDE0:ztwn5UTGocY:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/eet4RxcXDE0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/952424617689233477/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=952424617689233477" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/952424617689233477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/952424617689233477?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/alpha-and-omega-of-smiles-strings-part.html" title="The alpha and omega of SMILES strings Part II" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm1.static.flickr.com/77/156579306_f3bca352f0_t.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEYBQXk9eip7ImA9WhdSEEU.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7506270942116750396</id><published>2011-07-09T12:22:00.000-07:00</published><updated>2011-07-19T06:29:10.762-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-19T06:29:10.762-07:00</app:edited><title>The alpha and omega of SMILES strings</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/alancleaver/3217662958/"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 191px; height: 240px;" src="http://farm4.static.flickr.com/3385/3217662958_db4d75a1f2_m.jpg" border="0" alt="" /&gt;&lt;/a&gt;I've just added a feature to the SMILES output in Open Babel that allows the user to specify a particular start and end atom for a SMILES string. No, no, come back! - don't go away! - it's really useful...&lt;br /&gt;&lt;br /&gt;If you're still here, let me explain why. It allows you to take advantage of a really nice feature of SMILES strings: concatenating two SMILES strings allows you to easily generate new molecules. I call this (as of two minutes ago) Click Comp Chem or CCC (which of course is a SMILES string itself!). &lt;br /&gt;&lt;br /&gt;With Click Comp Chem, the first atom of the second SMILES string will become joined to the "last atom" of the first SMILES string. When I say "last atom", I mean the last atom not within parentheses (i.e. not on a branch), e.g. if I add an atom to "CC(I)(Cl)" by appending "Br" to the end, then the Br will be attached to the second C atom (not the Cl).&lt;br /&gt;&lt;br /&gt;CCC is particularly useful if generating polymers from a set of monomers (which is what we were doing in our &lt;a href="http://baoilleach.blogspot.com/2011/07/we-can-design-molecular-wires-for-you.html"&gt;solar cell paper&lt;/a&gt;), or generating a virtual library of combinatorial chemistry products (such as Jean-Claude Bradley did for his &lt;a href="http://usefulchem.blogspot.com/2007/05/combiugi-and-closing-open-science-loop.html"&gt;CombiUgi project&lt;/a&gt;, or as &lt;a href="http://dx.doi.org/10.1021/ci100431r"&gt;Duffy et al&lt;/a&gt; did to a create virtual library of peptides).&lt;br /&gt;&lt;br /&gt;But a requirement for CCC is the ability to write a SMILES string such that it starts with a particular atom and ends with another. I'll explain the details of how I implemented this in a separate post. For now, here it is in action for a SMILES string for &lt;a href="http://en.wikipedia.org/wiki/Aspirin"&gt;aspirin&lt;/a&gt;, "c1c(C(=O)O)c(OC(=O)C)ccc1". Let's suppose that we want to have the methyl of the ester (atom 10) at the end of the SMILES, and to start the SMILES with the ring carbon para to the ester (atom 13). The output options are "f" and "l" for "first" and "last":&lt;br /&gt;&lt;pre&gt;&gt;obabel -:"c1c(C(=O)O)c(OC(=O)C)ccc1" -osmi&lt;br /&gt;c1c(C(=O)O)c(OC(=O)C)ccc1&lt;br /&gt;1 molecule converted&lt;br /&gt;&lt;br /&gt;&gt;obabel -:"c1c(C(=O)O)c(OC(=O)C)ccc1" -osmi -xf 13&lt;br /&gt;c1cc(C(=O)O)c(OC(=O)C)cc1&lt;br /&gt;1 molecule converted&lt;br /&gt;&lt;br /&gt;&gt;obabel -:"c1c(C(=O)O)c(OC(=O)C)ccc1" -osmi -xl 10&lt;br /&gt;c1c(C(=O)O)c(ccc1)OC(=O)C&lt;br /&gt;1 molecule converted&lt;br /&gt;&lt;br /&gt;&gt;obabel -:"c1c(C(=O)O)c(OC(=O)C)ccc1" -osmi -xf 13 -xl 10&lt;br /&gt;c1cc(C(=O)O)c(cc1)OC(=O)C&lt;br /&gt;1 molecule converted&lt;/pre&gt; &lt;br /&gt;&lt;b&gt;Image credit:&lt;/b&gt; &lt;a href="http://www.flickr.com/photos/alancleaver/"&gt;Alan Cleaver&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7506270942116750396?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aRLgmp4Bua8:YpdM9XkPwzM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=aRLgmp4Bua8:YpdM9XkPwzM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aRLgmp4Bua8:YpdM9XkPwzM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aRLgmp4Bua8:YpdM9XkPwzM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aRLgmp4Bua8:YpdM9XkPwzM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=aRLgmp4Bua8:YpdM9XkPwzM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=aRLgmp4Bua8:YpdM9XkPwzM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/aRLgmp4Bua8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7506270942116750396/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7506270942116750396" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7506270942116750396?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7506270942116750396?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/alpha-and-omega-of-smiles-strings.html" title="The alpha and omega of SMILES strings" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm4.static.flickr.com/3385/3217662958_db4d75a1f2_t.jpg" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DkcGSHYyeip7ImA9WhdTEUw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-7590351123098396781</id><published>2011-07-07T09:29:00.000-07:00</published><updated>2011-07-08T01:33:49.892-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-08T01:33:49.892-07:00</app:edited><title>We can design molecular wires for you wholesale</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-NJkMtAJrRhk/ThXcSIB2cNI/AAAAAAAABI4/t6zgg7KHxcQ/s1600/oct_efficiency.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 230px; height: 200px;" src="http://2.bp.blogspot.com/-NJkMtAJrRhk/ThXcSIB2cNI/AAAAAAAABI4/t6zgg7KHxcQ/s400/oct_efficiency.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5626645513420304594" /&gt;&lt;/a&gt;As part of a project led by &lt;a href="http://hutchison.chem.pitt.edu/The_Hutchison_Research_Group"&gt;Dr. Geoffrey Hutchison&lt;/a&gt; (University of Pittsburgh), I have been collaborating on the development of a method to design so-called "&lt;a href="http://en.wikipedia.org/wiki/Molecular_wires"&gt;molecular wires&lt;/a&gt;" (conducting organic polymers) for use in organic solar cells. Using a combination of computational chemistry and cheminformatics, we have been able to find organic polymers with the required electronic structure predicted to perform well as the electron donor in solar cells.&lt;br /&gt;&lt;br /&gt;This work is now available as an ASAP at &lt;i&gt;J. Phys. Chem. C&lt;/i&gt;:&lt;br /&gt;&lt;blockquote&gt;N.M. O'Boyle, C.M. Campbell, G.R. Hutchison.&lt;br /&gt;&lt;a href="http://dx.doi.org/10.1021/jp202765c"&gt;&lt;b&gt;Computational Design and Selection of Optimal Organic Photovoltaic Materials&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;J. Phys. Chem. C&lt;/i&gt; &lt;b&gt;2011&lt;/b&gt;. In press.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Rather than repeat the abstract here, I'll summarise the general idea. Current solar cells are based on semiconductor technology and are expensive to make both in terms of materials and energy. Organic solar cells, while never going to be as efficient at converting light to electricity, offer the possibility of cheap solar energy due to the ease of manufacture and low cost of materials. In 2006, &lt;a href="http://dx.doi.org/10.1002/adma.200501717"&gt;Scharber et al&lt;/a&gt; described how to calculate the efficiency of an organic solar cell based on the electronic structure (i.e. HOMO, LUMO) of the solar cell components, so the question was: could we find organic polymers with the required structure to maximise efficiency?&lt;br /&gt;&lt;br /&gt;To cut a long story short, we could. What we did was combine &lt;a href="http://openbabel.org"&gt;Open Babel/Pybel&lt;/a&gt; (for structure generation and forcefield optimisation), &lt;a href="http://gaussian.com"&gt;Gaussian09&lt;/a&gt; (for ZINDO/S//PM6 calculations), &lt;a href="http://cclib.sf.net"&gt;cclib&lt;/a&gt; (for extracting the results) and a Python script implementing a genetic algorithm, and out popped molecular wires predicted to be highly efficient. The top candidates were then filtered according to additional criteria &lt;i&gt;et voil&amp;agrave;&lt;/i&gt;. Overall, over 90,000 polymers were tested - still only a small fraction (about 4%) of what we'd have had to test without the genetic algorithm.&lt;br /&gt;&lt;br /&gt;If you're interested in a copy of the paper and don't have access to the journal, get in touch - we can distribute a number of copies through the ACS website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-7590351123098396781?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=CrVgoQOd4OE:77hR7xqw8Ug:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=CrVgoQOd4OE:77hR7xqw8Ug:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=CrVgoQOd4OE:77hR7xqw8Ug:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=CrVgoQOd4OE:77hR7xqw8Ug:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=CrVgoQOd4OE:77hR7xqw8Ug:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=CrVgoQOd4OE:77hR7xqw8Ug:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=CrVgoQOd4OE:77hR7xqw8Ug:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/CrVgoQOd4OE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/7590351123098396781/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=7590351123098396781" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7590351123098396781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/7590351123098396781?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/07/we-can-design-molecular-wires-for-you.html" title="We can design molecular wires for you wholesale" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-NJkMtAJrRhk/ThXcSIB2cNI/AAAAAAAABI4/t6zgg7KHxcQ/s72-c/oct_efficiency.png" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DEUCRHk-fyp7ImA9WhZbEk4.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6822309394119602487</id><published>2011-06-16T07:08:00.000-07:00</published><updated>2011-06-16T07:57:45.757-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-16T07:57:45.757-07:00</app:edited><title>Using Zotero for Chemistry</title><content type="html">&lt;a href="http://www.zotero.org/"&gt;Zotero&lt;/a&gt; keeps improving, and I was thinking it was time I started using it for my own papers. But how well do the translators work for Chemistry journals?&lt;br /&gt;&lt;br /&gt;I tested the ability of Zotero to extract the correct metadata, the abstract, the journal abbreviation, the PDF, and the full-text HTML from the abstract page of a paper from a current issue of a journal from various publishers in Chemistry.&lt;br /&gt;&lt;br /&gt;The following results are ranked by how well the translator works, starting with the best:&lt;ul&gt;&lt;li&gt;&lt;b&gt;ACS Journals&lt;/b&gt; - Missing journal abbreviation.&lt;/li&gt;&lt;li&gt;&lt;b&gt;BMC Journals&lt;/b&gt; - Misses author initials, doesn't recognise J Cheminf, missing journal abbreviation.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Elsevier&lt;/b&gt; (J Mol Struct THEOCHEM) - Metadata has slightly wrong DOI, markup included in abstract, missing journal abbreviation.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Wiley&lt;/b&gt; (J Comput Chem) - Only metadata (no PDF, or full-text HTML)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Springer&lt;/b&gt; (JCAMD) - Only metadata (no PDF, or full-text HTML)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Oxford&lt;/b&gt; (Nucleic Acids Res) - Only metadata (no PDF, or full-text HTML)&lt;/li&gt;&lt;li&gt;&lt;b&gt;RSC&lt;/b&gt; (Chem Comm) - Only metadata, and that missing the page numbers (RSC must not be providing it to CrossRef).&lt;/li&gt;&lt;/ul&gt;I'm going to have a go at improving these by-and-by (keep an eye on my &lt;a href="https://bitbucket.org/baoilleach"&gt;bitbucket&lt;/a&gt; account), but feel free to sort them out yourself if you want (leave a comment below if you do).&lt;br /&gt;&lt;br /&gt;I was initially hesitant doing this as there was no test framework in place for translators, and there didn't seem to be much point in writing a translator that might break at any point without anyone knowing. But Avram Lyon is currently adding support for a test framework to Scaffold (the tool you use for writing Zotero translators), and so this should soon be available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-6822309394119602487?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dmO-CLUn9S8:tOrWg1o2b2Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dmO-CLUn9S8:tOrWg1o2b2Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dmO-CLUn9S8:tOrWg1o2b2Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dmO-CLUn9S8:tOrWg1o2b2Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dmO-CLUn9S8:tOrWg1o2b2Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dmO-CLUn9S8:tOrWg1o2b2Q:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dmO-CLUn9S8:tOrWg1o2b2Q:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/dmO-CLUn9S8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6822309394119602487/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6822309394119602487" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6822309394119602487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6822309394119602487?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/06/using-zotero-for-chemistry.html" title="Using Zotero for Chemistry" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;C0UFRXk5eyp7ImA9WhZbEk4.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-579009319312295821</id><published>2011-06-16T06:21:00.001-07:00</published><updated>2011-06-16T06:33:34.723-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-16T06:33:34.723-07:00</app:edited><title>That's not normal for a correlation - Pearson vs Spearman</title><content type="html">Let me present some random data, 100 data points with x and y values chosen from a uniform distribution between 0.8 and 0.9:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-5y1MhiHqHC0/TfoDjox1JdI/AAAAAAAABIY/qBGnkwel-UQ/s1600/corr_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-5y1MhiHqHC0/TfoDjox1JdI/AAAAAAAABIY/qBGnkwel-UQ/s400/corr_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5618807395874842066" /&gt;&lt;/a&gt;&lt;br /&gt;Correlation coefficients: -0.074 (Pearson), -0.073 (Spearman)&lt;br /&gt;&lt;br /&gt;Now let's add a single data point at 0.1, 0.1:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nT08vU6HR2k/TfoELflDRNI/AAAAAAAABIg/LJqj1NoWiW0/s1600/corr_2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-nT08vU6HR2k/TfoELflDRNI/AAAAAAAABIg/LJqj1NoWiW0/s400/corr_2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5618808080600089810" /&gt;&lt;/a&gt;&lt;br /&gt;Correlation coefficients: 0.866 (Pearson), -0.042 (Spearman)&lt;br /&gt;&lt;br /&gt;Here's another interesting situation, with two random datasets of 50 datapoints chosen from the intervals (0.0, 0.5) and (0.5, 1.0):&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-b9gvdQDCO0s/TfoFS5OS4LI/AAAAAAAABIo/ZPsYKp8PJDg/s1600/corr_3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-b9gvdQDCO0s/TfoFS5OS4LI/AAAAAAAABIo/ZPsYKp8PJDg/s400/corr_3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5618809307254677682" /&gt;&lt;/a&gt;&lt;br /&gt;Correlation coefficients: 0.668 (Pearson), 0.711 (Spearman)&lt;br /&gt;&lt;br /&gt;What happens when we contract the areas though?&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-ppS2ygajVqc/TfoFmmqUeAI/AAAAAAAABIw/5kDZ56mBKdA/s1600/corr_4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-ppS2ygajVqc/TfoFmmqUeAI/AAAAAAAABIw/5kDZ56mBKdA/s400/corr_4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5618809645869332482" /&gt;&lt;/a&gt;&lt;br /&gt;Correlation coefficients: 0.995 (Pearson), 0.719 (Spearman)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7844526396210378482-579009319312295821?l=baoilleach.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=LQOTVAZ0PRw:oliq9xCAnYs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=LQOTVAZ0PRw:oliq9xCAnYs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=LQOTVAZ0PRw:oliq9xCAnYs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=LQOTVAZ0PRw:oliq9xCAnYs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=LQOTVAZ0PRw:oliq9xCAnYs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=LQOTVAZ0PRw:oliq9xCAnYs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=LQOTVAZ0PRw:oliq9xCAnYs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/LQOTVAZ0PRw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/579009319312295821/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=579009319312295821" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/579009319312295821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/579009319312295821?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2011/06/thats-not-normal-for-correlation.html" title="That's not normal for a correlation - Pearson vs Spearman" /><author><name>baoilleach</name><uri>http://www.blogger.com/profile/03288289351940689018</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_x5Hz3F0jd4Q/Sr3WKF6fPPI/AAAAAAAAA-Y/WG171D6LOVw/S220/head.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5y1MhiHqHC0/TfoDjox1JdI/AAAAAAAABIY/qBGnkwel-UQ/s72-c/corr_1.png" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

