<?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:blogger="http://schemas.google.com/blogger/2008" 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;AkADRHwycCp7ImA9WhBbEUo.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482</id><updated>2013-05-10T10:39:35.298+01: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>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>331</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;A0AGQnY9eip7ImA9WhBbEU8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6595849155293164530</id><published>2013-05-09T20:56:00.000+01:00</published><updated>2013-05-09T21:02:03.862+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-09T21:02:03.862+01:00</app:edited><title>Least Publishable Unit: Selective GPCR Agonists</title><content type="html">&lt;a href="http://www.flickr.com/photos/xbe/8395106908/" title="P1260441 by Xavier Béjar, on Flickr" style="float:right;"&gt;&lt;img src="http://farm9.staticflickr.com/8092/8395106908_b885f46933_n.jpg" width="320" height="166" style="padding-left:10px;" alt="P1260441"&gt;&lt;/a&gt;After a certain length of time, there comes a point when you realise that that idea of yours you always planned to pursue, well, you're never going to get around to it. Such is life and all that.
&lt;br/&gt;&lt;br/&gt;
But maybe if I post some ideas here, it might spark someone else's imagination and lead to something. A mention in your Nobel speech is all I ask (preferably close to the start).
&lt;br/&gt;&lt;br/&gt;
So here is something I worked on last (academic) year...
&lt;br/&gt;&lt;br/&gt;
In collaboration with &lt;a href="http://chemweb.ucc.ie/people/JJ%20Keating/jjkeating.htm"&gt;Dr JJ Keating&lt;/a&gt; (University College Cork) I was interested in finding some selective 5-HT&lt;sub&gt;2A&lt;/sub&gt; receptor agonists. Turns out everyone else wants to find selective 5-HT&lt;sub&gt;2C&lt;/sub&gt; agonists and so 2A is neglected. As far as I could tell, there are no known 2A-selective agonists. Such a compound would be useful both as a tool compound but also has some therapeutic potential for glaucoma.
&lt;br/&gt;&lt;br/&gt;
To begin with I turned to the literature to see what had been done. In short, I never found any paper describing the search for a selective 2A agonist.
&lt;br/&gt;&lt;br/&gt;
But then I thought of ChEMBL. Despite the fact that no-one had been looking for a selective 2A agonist, maybe there are some accidental examples to be found in papers on selective 2C agonists? So I downloaded the entire database, and searched for all instances where activity (EC50) for the same compound in the same paper was measured against both 2A and 2C. And lo and behold I found a few examples, the best of which was compound 5 in Bioorg. Med. Chem. Lett., 2005, 15, 4555.
&lt;br/&gt;&lt;br/&gt;
So in short, your mission (if you choose to accept it) is to repeat the analysis, take these compounds as a starting point and to develop selective 5-HT&lt;sub&gt;2A&lt;/sub&gt; agonists through a medicinal chemistry strategy. Note that a similar approach towards receptor subtype selectivity might yield useful results for other receptors.
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Image credit:&lt;/b&gt; &lt;a href="http://www.flickr.com/photos/xbe/"&gt;Xavier Béjar&lt;/a&gt; on Flickr&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9aWCSeomVQU:3zAYmzoJSGo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=9aWCSeomVQU:3zAYmzoJSGo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=9aWCSeomVQU:3zAYmzoJSGo: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=9aWCSeomVQU:3zAYmzoJSGo: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=9aWCSeomVQU:3zAYmzoJSGo: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=9aWCSeomVQU:3zAYmzoJSGo:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=9aWCSeomVQU:3zAYmzoJSGo:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/9aWCSeomVQU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6595849155293164530/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6595849155293164530" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6595849155293164530?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6595849155293164530?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/05/least-publishable-unit-selective-gpcr.html" title="Least Publishable Unit: Selective GPCR Agonists" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CUUCSXw6fip7ImA9WhBUFE4.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-2187759355337514995</id><published>2013-04-25T22:24:00.000+01:00</published><updated>2013-05-01T19:34:28.216+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-01T19:34:28.216+01:00</app:edited><title>How fast is chemfp? We investigate!</title><content type="html">&lt;a href="http://www.flickr.com/photos/87752573@N00/2676290755/" title="fingerprint by Russell J Watkins, on Flickr"&gt;&lt;img alt="fingerprint" height="240" src="http://farm4.staticflickr.com/3054/2676290755_5c345c645f_m.jpg" style="float: right;" width="186" /&gt;&lt;/a&gt;That is, um, &lt;i&gt;I&lt;/i&gt; investigate. I described &lt;b&gt;&lt;a href="http://chemfp.com/"&gt;chemfp&lt;/a&gt;&lt;/b&gt; in an &lt;a href="http://baoilleach.blogspot.co.uk/2011/09/chemfp-10-get-your-fingerprints-off.html"&gt;earlier blogpost&lt;/a&gt;. Simply put, it comprises software by Python/C guru Andrew Dalke to handle and generate binary fingerprints for molecules. It enables easy comparison of fingerprints from different toolkits, and provides super-fast similarity methods. With a new even faster version out in Feb 2013, I thought I should put it through its paces.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Pre-processing&lt;/h2&gt;
The &lt;a href="http://openbabel.org/docs/current/Fingerprints/intro.html"&gt;standard way&lt;/a&gt; to carry out a fast similarity search with Open Babel is the so-called fastsearch method, which precalculates an index file of fingerprints for an sdf file, and then linearly-scans through this for hits against a single query structure. With chemfp, the initial step is similar; you convert everything to fps files, a standard file format for fingerprints developed by Andrew. Previously you needed to use chemfp's ob2fps to do this, but OB 2.3.2 added support for fps files and can generate them directly 2 to 3 times faster.&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;$ obabel chembl_15mod.sdf -O chembl.fs # for fastsearch
$ obabel chembl_15mod.sdf -O chembl.fps # for chemfp
&lt;/pre&gt;&lt;br/&gt;
&lt;h2&gt;Single-molecule query&lt;/h2&gt;
Let's take the first molecule in the database as a query, and find those molecules in ChEMBL that are within 0.8 similarity (Tanimoto). &lt;b&gt;simsearch&lt;/b&gt; is the name of chemfp's tool for similarity searching:
&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;$ obabel chembl.fs -osmi -s query.sdf -aa -at 0.8 &amp;gt; threshold.fs.txt
$ simsearch --threshold 0.8 -q query.fps chembl.fps &amp;gt; threshold.fps.txt
&lt;/pre&gt;
They both take about 1.2 seconds. I'm being a bit vague because the exact value doesn't matter; for some query molecules fastsearch takes longer, for some less. It's just to give an idea. But in short, fastsearch appears to be in the same ballpark as simsearch for single molecule queries.
&lt;br /&gt;&lt;br/&gt;
&lt;h2&gt;Multi-molecule query&lt;/h2&gt;
fastsearch doesn't provide an easy way to do multiple queries. If you want to do it yourself, you would just have to do each search one-by-one. So 1000 searches would take 1000s, let's say. In contrast, with simsearch 1000 searches on ChEMBL takes only 8s:
&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;$ simsearch --threshold 0.8 -q largequery.fps chembl.fps &amp;gt; thresholdb.fps.txt
&lt;/pre&gt;
How does it manage this? Well, first of all, it runs in parallel on 4 available CPUs by default (&lt;i&gt;...see Andrew's comment below&lt;/i&gt;). These figures come from a server which has 4 hyperthreading CPUs. The rest of the improvement comes from the use of in-memory data structures and algorithmic magic, some of which Andrew has described on his &lt;a href="http://dalkescientific.com/writings/diary/archive/2011/11/02/faster_popcount_update.html"&gt;blog&lt;/a&gt; over the last year or so.
&lt;br /&gt;
&lt;br /&gt;
With speeds like this, it brings all-against-all similarity searches within reach, and simsearch provides an option just for this. The following finds the nearest 8 molecules for each molecule in the dataset:
&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;$ simsearch -k 8 --NxN largequery.fps &amp;gt; NxN.fps.txt
&lt;/pre&gt;
I tried this for the first 10000 molecules in ChEMBL, and it took about 1s; 50K took 11s; 100K took 32s; 250K took 144s; and the whole of ChEMBLdb (1.2 million) took 2900s (48m 20s). To put this in context, an all-against-all search of ChEMBLdb using fastsearch would take something like 14 days.
&lt;br /&gt;&lt;br/&gt;
&lt;h2&gt;Single-molecule query revisited&lt;/h2&gt;
The alert reader may be wondering why, if the multi-molecule query is so darned fast, the single-molecule query is no faster than Open Babel's fastsearch. The answer is rather simple (&lt;i&gt;...but not quite right - see Andrew's comment below&lt;/i&gt;): 99% of the time spent on the single-molecule query is setup. Once the search datastructure has been initialised, then the response for a query is within milliseconds. You can see &lt;a href="http://chemfp.com/features/#high-performance-search"&gt;timings for these&lt;/a&gt; over at the chemfp website. To achieve these timings in practice, you would need to write a Python script that used the chemfp library and was accessed via some sort of client/server architective, e.g. a local webservice. As Andrew points out, this would allow search results to be returned instantly as a chemist sketches a structure. Trying this out is left as an exercise for the reader. :-)&lt;br/&gt;
&lt;br/&gt;
&lt;h2&gt;In conclusion&lt;/h2&gt;
So, in short, if you have any interest in running multiple queries against a database, comparing two large datasets, or finding pairwise similarity within a dataset, check out &lt;a href="http://chemfp.com/"&gt;chemfp&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;
1. I should point out that Andrew is making chemfp available as open source but with delayed release. Commercial licensees get support and the latest features.
&lt;br /&gt;
2. For ease of use with Open Babel, the ChEMBLdb SDF file was modified to add the chembl_id to the title. Oh ye gods of ChEMBL please consider doing this for your humble users.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Image credit:&lt;/b&gt; &lt;a href="http://www.flickr.com/photos/87752573@N00/"&gt;Russell J Watkins&lt;/a&gt; on Flickr&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=BmskKWXyeTA:0XzohBqslms:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=BmskKWXyeTA:0XzohBqslms:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=BmskKWXyeTA:0XzohBqslms: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=BmskKWXyeTA:0XzohBqslms: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=BmskKWXyeTA:0XzohBqslms: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=BmskKWXyeTA:0XzohBqslms:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=BmskKWXyeTA:0XzohBqslms:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/BmskKWXyeTA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/2187759355337514995/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=2187759355337514995" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/2187759355337514995?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/2187759355337514995?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/04/how-fast-is-chemfp-we-investigate.html" title="How fast is chemfp? We investigate!" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;CU4AQXk6fCp7ImA9WhBVEE4.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-2201275104126222541</id><published>2013-04-15T14:50:00.000+01:00</published><updated>2013-04-15T14:52:20.714+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-15T14:52:20.714+01:00</app:edited><title>Talk on Universal SMILES at New Orleans ACS</title><content type="html">Early on Wednesday I presented my &lt;a href="http://www.jcheminf.com/content/4/1/22"&gt;recent paper on Universal SMILES&lt;/a&gt; at the New Orleans ACS. This is a canonical SMILES string that uses the InChI canonical labels. Usually I tell the audience that the slides will be made available, but this time there was someone in the audience who was standing up every so often and taking photos; I thought this was so awesome I said nothing.&lt;br /&gt;
&lt;br /&gt;
Anyway, here are the slides. They are very wordy, partly because I used up all my visualisation skills fiddling around with the other formal talk I was giving (appearing soon on the &lt;a href="http://nextmovesoftware.com/blog"&gt;NextMove blog&lt;/a&gt;), and partly because I was aware that for web readers a picture of a donkey surfing might not spell out how to create canonical SMILES quite as well as traditional bulletpoints.&lt;br /&gt;
&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/18853718" width="476"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Universal (and Inchified) SMILES are available right now in Open Babel. Rumour has it that the CDK and RDKit are considering supporting Universal SMILES. If you use these or any other toolkits, and think that having support for Universal SMILES would be nothing short of paradigm-shifting awesome, ask them to add support.&lt;br /&gt;
&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=SzrhMAK3YdA:txuzCZkuhvQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=SzrhMAK3YdA:txuzCZkuhvQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=SzrhMAK3YdA:txuzCZkuhvQ: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=SzrhMAK3YdA:txuzCZkuhvQ: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=SzrhMAK3YdA:txuzCZkuhvQ: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=SzrhMAK3YdA:txuzCZkuhvQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=SzrhMAK3YdA:txuzCZkuhvQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/SzrhMAK3YdA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/2201275104126222541/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=2201275104126222541" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/2201275104126222541?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/2201275104126222541?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/04/talk-on-universal-smiles-at-new-orleans.html" title="Talk on Universal SMILES at New Orleans ACS" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;CEIEQH45fCp7ImA9WhBWF0w.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-657927094543350468</id><published>2013-04-11T21:35:00.000+01:00</published><updated>2013-04-11T21:35:01.024+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-11T21:35:01.024+01:00</app:edited><title>Talk on Open Babel at New Orleans ACS</title><content type="html">Now that Open Babel 2.3.2 has been released 6 months, I thought it might almost be time to talk about what's new, and also mention what's under development.&lt;br /&gt;
&lt;br /&gt;
Here's the talk I gave at Rajarshi's CINF Flash session last Sunday. It was my first time at the flash session but I'm definitely going to make a point of attending and presenting at this in future; it is preceded by a free lunch!&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/18633907" width="476"&gt;&lt;/iframe&gt; &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kS2QWrOw5f4:su4EeL5BGcU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kS2QWrOw5f4:su4EeL5BGcU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kS2QWrOw5f4:su4EeL5BGcU: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=kS2QWrOw5f4:su4EeL5BGcU: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=kS2QWrOw5f4:su4EeL5BGcU: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=kS2QWrOw5f4:su4EeL5BGcU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kS2QWrOw5f4:su4EeL5BGcU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/kS2QWrOw5f4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/657927094543350468/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=657927094543350468" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/657927094543350468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/657927094543350468?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/04/talk-on-open-babel-at-new-orleans-acs.html" title="Talk on Open Babel at New Orleans ACS" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkMFRHo8eSp7ImA9WhBXFUQ.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-707053158476144809</id><published>2013-03-29T22:00:00.000Z</published><updated>2013-03-29T22:00:15.471Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-29T22:00:15.471Z</app:edited><title>See you at ACSNoelA?</title><content type="html">I'll be presenting at the Spring ACS National Meeting in New Orleans in just over a week. The last ACS I was at was &lt;a href="http://baoilleach.blogspot.co.uk/2010/04/how-to-organise-symposium-for-acs.html"&gt;three years ago&lt;/a&gt; so I'm looking forward to catching up with what's been going on, and meeting up with some familiar faces.&lt;br /&gt;
&lt;br /&gt;
I've got three talks lined up, the slides for which I'll post after the event:&lt;br /&gt;
&lt;br /&gt;
1. I'll be talking about &lt;b&gt;"What's new and cooking in Open Babel?"&lt;/b&gt;, as part of Rajarshi's CINF Flash talks on April 7 (Sunday) sometime between 12.30 and 2.00 in Room 350 (Morial Convention Center). I think Rajarshi is still accepting CINF Flash talks so &lt;a href="http://www.acscinf.org/content/cinf-symposia-245-cinf-flash-call-papers"&gt;get them in&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;2. &lt;b&gt;"Universal SMILES: Finally, a canonical SMILES string?"&lt;/b&gt;&lt;br /&gt;
This presents the work described in a &lt;a href="http://www.jcheminf.com/content/4/1/22"&gt;recent paper&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
DIVISION: CINF: Division of Chemical Information&lt;br /&gt;
SESSION: Public Databases Serving the Chemistry Community&lt;br /&gt;
DAY &amp;amp; TIME OF PRESENTATION: April 10 (Wed) from 8:35 am to 9:05 am&lt;br /&gt;
LOCATION: Morial Convention Center, Room: 350&lt;/blockquote&gt;
&lt;br /&gt;
3. &lt;b&gt;"Roundtripping between small-molecule and biopolymer representations"&lt;/b&gt;.&lt;br /&gt;
This describes some of the issues and challenges that have arisen in the development of the &lt;a href="http://nextmovesoftware.co.uk/products/SugarNSplice.html"&gt;Sugar &amp;amp; Splice&lt;/a&gt; software, a toolkit for perceiving biopolymer structures, depicting them and converting them between formats.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
DIVISION: CINF: Division of Chemical Information&lt;br /&gt;
SESSION: Linking Bioinformatic Data and Cheminformatic Data&lt;br /&gt;
DAY &amp;amp; TIME OF PRESENTATION: April 09 (Tues) from 3:10 pm to 3:35 pm&lt;br /&gt;
LOCATION: Morial Convention Center, Room: 349&lt;/blockquote&gt;
To any first-time ACSers reading this, don't miss the various CINF functions. (I seem to recall that they are not exactly easy to find in the printed programme but details as ever are on the &lt;a href="http://bulletin.acscinf.org/node/428"&gt;webs&lt;/a&gt;.)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Q7FK83L4nIM:77NKyKh3zeQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Q7FK83L4nIM:77NKyKh3zeQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=Q7FK83L4nIM:77NKyKh3zeQ: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=Q7FK83L4nIM:77NKyKh3zeQ: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=Q7FK83L4nIM:77NKyKh3zeQ: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=Q7FK83L4nIM:77NKyKh3zeQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=Q7FK83L4nIM:77NKyKh3zeQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/Q7FK83L4nIM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/707053158476144809/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=707053158476144809" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/707053158476144809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/707053158476144809?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/03/see-you-at-acsnoela.html" title="See you at ACSNoelA?" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkEDSH8-eCp7ImA9WhBXEkk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6382606720352912864</id><published>2013-03-25T21:57:00.002Z</published><updated>2013-03-25T21:57:59.150Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-25T21:57:59.150Z</app:edited><title>Time and the InChI</title><content type="html">&lt;iframe src='http://embed.verite.co/timeline/?source=0AkCMyDkjbsFHdEJ1dE9tSEhGeG00NzBVUi1zTWhDNkE&amp;font=Bevan-PotanoSans&amp;maptype=toner&amp;lang=en&amp;height=650&amp;width=515' width='100%' height='700' frameborder='0'&gt;&lt;/iframe&gt;
&lt;br/&gt;
&lt;b&gt;Notes:&lt;/b&gt;&lt;br/&gt;
1. Created using a &lt;a href="https://docs.google.com/spreadsheet/ccc?key=0AkCMyDkjbsFHdEJ1dE9tSEhGeG00NzBVUi1zTWhDNkE#gid=0"&gt;Google spreadsheet&lt;/a&gt; and &lt;a href="http://timeline.verite.co/"&gt;Timeline JS&lt;/a&gt;.&lt;br/&gt;
2. If anyone wants to send me updates (e.g. for commercial software like ChemDraw I found it hard to find dates and versions), feel free.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7egm-IvxVRw:_1FF1tNNnEI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=7egm-IvxVRw:_1FF1tNNnEI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=7egm-IvxVRw:_1FF1tNNnEI: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=7egm-IvxVRw:_1FF1tNNnEI: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=7egm-IvxVRw:_1FF1tNNnEI: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=7egm-IvxVRw:_1FF1tNNnEI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=7egm-IvxVRw:_1FF1tNNnEI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/7egm-IvxVRw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6382606720352912864/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6382606720352912864" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6382606720352912864?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6382606720352912864?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/03/time-and-inchi.html" title="Time and the InChI" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;A08BRHk4cSp7ImA9WhBQFk4.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-5721073162308120728</id><published>2013-03-18T20:49:00.000Z</published><updated>2013-03-18T20:50:55.739Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-18T20:50:55.739Z</app:edited><title>Police your code with fuzz testing</title><content type="html">I've just become a convert to &lt;a href="http://en.wikipedia.org/wiki/Fuzz_testing"&gt;Fuzz testing&lt;/a&gt;. This is a rather simple idea for testing software that processes some user input: just send in some random junk and see what happens (and keep repeating until something does).
&lt;br /&gt;
&lt;br /&gt;
I tried this for some software I've been working on, thinking it was so dumb it couldn't possibly flush out anything useful, but quickly changed my mind. Even more interesting, where the space of all possible user input can be stepped through systematically, fuzz testing can be used to map out the space of allowed input (which may or may not be what you were expecting). For example, you could find all 4-letter words acceptable to OPSIN by using the code below to generate fuzz and use OPSIN through Cinfony (for example) to find out whether an error is raised.
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;&lt;span style="color: #a020f0;"&gt;import&lt;/span&gt;&amp;nbsp;random

&lt;span style="color: #804040;"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: teal;"&gt;Fuzzer&lt;/span&gt;:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: teal;"&gt;__init__&lt;/span&gt;(self, allowed, length):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.allowed = allowed
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self.length = length

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: teal;"&gt;systematic&lt;/span&gt;(self, text=""):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&amp;nbsp;len(text) == self.length:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;yield&lt;/b&gt;&lt;/span&gt;&amp;nbsp;text
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&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;&lt;span style="color: #804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;x &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt;&amp;nbsp;self.allowed:
&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;&lt;span style="color: #804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;y &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt;&amp;nbsp;self.systematic(x+text):
&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;&lt;span style="color: #804040;"&gt;&lt;b&gt;yield&lt;/b&gt;&lt;/span&gt;&amp;nbsp;y

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: teal;"&gt;random&lt;/span&gt;(self):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&amp;nbsp;"".join([random.choice(allowed) &lt;span style="color: #804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;x &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt;&amp;nbsp;range(self.length)])

&lt;span style="color: #804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&amp;nbsp;__name__ == "&lt;span style="color: magenta;"&gt;__main__&lt;/span&gt;":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;allowed = "&lt;span style="color: magenta;"&gt;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVCWXYZ&lt;/span&gt;"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fuzzer = Fuzzer(allowed, 3)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;fuzz &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt;&amp;nbsp;fuzzer.systematic():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt;&amp;nbsp;fuzz
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fuzzer = Fuzzer(allowed, 5)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt;&amp;nbsp;i &lt;span style="color: #804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt;&amp;nbsp;range(10):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #804040;"&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt;&amp;nbsp;fuzzer.random()&lt;/pre&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=SuLyyaLO3Q0:vaSXKIuZxAw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=SuLyyaLO3Q0:vaSXKIuZxAw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=SuLyyaLO3Q0:vaSXKIuZxAw: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=SuLyyaLO3Q0:vaSXKIuZxAw: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=SuLyyaLO3Q0:vaSXKIuZxAw: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=SuLyyaLO3Q0:vaSXKIuZxAw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=SuLyyaLO3Q0:vaSXKIuZxAw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/SuLyyaLO3Q0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/5721073162308120728/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=5721073162308120728" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5721073162308120728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5721073162308120728?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/03/police-your-code-with-fuzz-testing.html" title="Police your code with fuzz testing" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUAFRH85cSp7ImA9WhBRE04.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-5802862001318790206</id><published>2013-03-03T19:08:00.002Z</published><updated>2013-03-03T19:08:35.129Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-03T19:08:35.129Z</app:edited><title>Avogadro hydrogen-clicking craziness with Sikuli</title><content type="html">There's something that's always annoyed me when using Avogadro. On Windows, it often takes several clicks on a hydrogen before I hit the sweet spot and it sprouts a methyl group. This is only mildly annoying when building a structure, but very frustrating for operations where misclicking cause it to lose selection (e.g. rotating around a dihedral). It's awkward to report a bug about this though because it's hard to prove.&lt;br /&gt;
&lt;br /&gt;
Enter &lt;a href="http://www.sikuli.org/"&gt;Sikuli&lt;/a&gt;. It's a Java application running Jython that's used for testing GUIs (among other things). It uses a sort of visual programming style to match regions of the screen based on screenshots and carry out operations based on whether or not a match exists. (At this point you may want to check out the videos on the Sikuli website to figure out what I'm talking about.)&lt;br /&gt;
&lt;br /&gt;
My original idea was to get Sikuli to click all over the offending hydrogen and see which points worked and which didn't. In the interests of time, I reduced this down to all points on a horizontal line through the centre of the hydrogen. First of all, here is the result, with the 'allowed area' indicated by the red line:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-nOu6HAc21B8/UTOZcvUzo0I/AAAAAAAABg4/rNTLBsHJLxk/s1600/atomBlog.png" imageanchor="1" &gt;&lt;img border="0" src="http://2.bp.blogspot.com/-nOu6HAc21B8/UTOZcvUzo0I/AAAAAAAABg4/rNTLBsHJLxk/s320/atomBlog.png" /&gt;&lt;/a&gt;&lt;/div&gt;
I would argue that that red line is neither long enough nor in the expected location. In any case, check out the sort of code needed to run this test:
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1SYf29mScUM/UTOYqMk97OI/AAAAAAAABgw/lxk4-6mZKI4/s1600/Code.png" imageanchor="1" &gt;&lt;img border="0" src="http://4.bp.blogspot.com/-1SYf29mScUM/UTOYqMk97OI/AAAAAAAABgw/lxk4-6mZKI4/s320/Code.png" /&gt;&lt;/a&gt;&lt;/div&gt;
You mightn't understand everything here, but you should get the gist. On every iteration of the loop it clears the Avogadro window, clicks to create a methane, and then clicks at point x, y on a particular hydrogen (where x, y are relative to the centre of the image of the matched hydrogen) trying to sprout a methyl. The "success test" checks that a methyl sprouted. The "fail test" checks whether a methane was added (i.e. the region to the right of the red bar in the diagram of the atom above). Note that fuzzy matching is used to match screenshots against the actual contents of the screen or a region. &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=c08c_Jbzju8:112Q_ynUYio:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=c08c_Jbzju8:112Q_ynUYio:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=c08c_Jbzju8:112Q_ynUYio: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=c08c_Jbzju8:112Q_ynUYio: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=c08c_Jbzju8:112Q_ynUYio: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=c08c_Jbzju8:112Q_ynUYio:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=c08c_Jbzju8:112Q_ynUYio:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/c08c_Jbzju8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/5802862001318790206/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=5802862001318790206" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5802862001318790206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5802862001318790206?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/03/avogadro-hydrogen-clicking-craziness.html" title="Avogadro hydrogen-clicking craziness with Sikuli" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-nOu6HAc21B8/UTOZcvUzo0I/AAAAAAAABg4/rNTLBsHJLxk/s72-c/atomBlog.png" height="72" width="72" /><thr:total>5</thr:total></entry><entry gd:etag="W/&quot;A08DRHk_fSp7ImA9WhBSFkw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-3783651802565408313</id><published>2013-02-23T10:14:00.002Z</published><updated>2013-02-23T11:44:35.745Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-23T11:44:35.745Z</app:edited><title>cclib 1.1 and GaussSum 2.2.6 released</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-TIMCZt5y1HQ/RoSwNm96JQI/AAAAAAAAAVk/YdrH82sq-GY/s1600/mesh.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/-TIMCZt5y1HQ/RoSwNm96JQI/AAAAAAAAAVk/YdrH82sq-GY/s200/mesh.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_x5Hz3F0jd4Q/Rp8NvpjlEmI/AAAAAAAAAV0/90y9yNQ0XLU/s1600-h/tmp.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_x5Hz3F0jd4Q/Rp8NvpjlEmI/AAAAAAAAAV0/90y9yNQ0XLU/s400/tmp.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5088801216212046434" /&gt;&lt;/a&gt;

cclib is a Python library for parsing for analysing comp chem log files from many different QM packages. GaussSum is a GUI that uses cclib to monitor the progress of comp chem calculations and calculate predicted spectra for comparison with experimental results.

cclib is the work of Adam Tenderholt, Karol Langner and myself, while GaussSum is just by me.&lt;br /&gt;
&lt;br /&gt;
New releases of both of these are now available for download at their respective websites: &lt;a href="http://cclib.sf.net"&gt;http://cclib.sf.net&lt;/a&gt; and &lt;a href="http://gausssum.sf.net"&gt;http://gausssum.sf.net&lt;/a&gt;. For help, email cclib-users@lists.sf.net or gausssum-help@lists.sf.net.

Here's what's new in these releases:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;cclib 1.1&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;New Features:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Add progress info for all parsers&lt;/li&gt;
&lt;li&gt;Support ONIOM calculations in Gaussian (Karen Hemelsoet)&lt;/li&gt;
&lt;li&gt;New attribute atomcharges extracts Mulliken and Lowdin atomic charges if present&lt;/li&gt;
&lt;li&gt;New attribute atomspins extracts Mulliken and Lowdin atomic spin densities if present&lt;/li&gt;
&lt;li&gt;New thermodynamic attributes: freeenergy, temperature, enthalpy (Edward Holland)&lt;/li&gt;
&lt;li&gt;Extract PES information: scanenergies, scancoords, scanparm, scannames (Edward Holland)
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Bugfixes:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Handle coupled cluster energies in Gaussian 09 (Björn Dahlgren)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Vibrational displacement vectors missing for Gaussian 09 (Björn Dahlgren)&lt;/li&gt;
&lt;li&gt;Fix problem parsing vibrational frequencies in some GAMESS-US files&lt;/li&gt;
&lt;li&gt;Fix missing final scfenergy in ADF geometry optimisations&lt;/li&gt;
&lt;li&gt;Fix missing final scfenergy for ORCA where a specific number of SCF cycles has been specified&lt;/li&gt;
&lt;li&gt;ORCA scfenergies not parsed if COSMO solvent effects included&lt;/li&gt;
&lt;li&gt;Allow spin unrestricted calculations to use the fragment MO overlaps correctly for the MPA and CDA calculations&lt;/li&gt;
&lt;li&gt;Handle Gaussian MO energies that are printed as a row of asterisks (Jerome Kieffer)&lt;/li&gt;
&lt;li&gt;Add more explicit license notices, and allow LGPL versions after 2.1&lt;/li&gt;
&lt;li&gt;Support Firefly calculations where nmo != nbasis (Pavel Solntsev)&lt;/li&gt;
&lt;li&gt;Fix problem parsing vibrational frequency information in recent GAMESS (US) files (Chengju Wang)&lt;/li&gt;
&lt;li&gt;Apply patch from Chengju Wang to handle GAMESS calculations with more than 99 atoms&lt;/li&gt;
&lt;li&gt;Handle Gaussian files with more than 99 atoms having pseudopotentials (Björn Baumeier)&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;GaussSum 2.2.6&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;New Features:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;A patch from Thomas Pijper was integrated to enable calculation of Raman
 intensities (from Raman activity).&lt;/li&gt;
&lt;li&gt;Support has been added for 
calculating charge density changes for unrestricted calculations 
(requested by Phil Schauer).&lt;/li&gt;
&lt;li&gt;Blank lines in Groups.txt are now ignored.&lt;/li&gt;
&lt;li&gt;Parser updated to cclib 1.1&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kAy1Lp5iJNI:M6nUI-PT59I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kAy1Lp5iJNI:M6nUI-PT59I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kAy1Lp5iJNI:M6nUI-PT59I: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=kAy1Lp5iJNI:M6nUI-PT59I: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=kAy1Lp5iJNI:M6nUI-PT59I: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=kAy1Lp5iJNI:M6nUI-PT59I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kAy1Lp5iJNI:M6nUI-PT59I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/kAy1Lp5iJNI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/3783651802565408313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=3783651802565408313" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3783651802565408313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3783651802565408313?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/02/cclib-11-and-gausssum-226-released.html" title="cclib 1.1 and GaussSum 2.2.6 released" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-TIMCZt5y1HQ/RoSwNm96JQI/AAAAAAAAAVk/YdrH82sq-GY/s72-c/mesh.gif" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEFRHY8fip7ImA9WhBSFkw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-9122309143766847412</id><published>2013-02-17T18:50:00.000Z</published><updated>2013-02-23T10:16:55.876Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-23T10:16:55.876Z</app:edited><title>A new home for Linux4Chemistry?</title><content type="html">&lt;div class="separator" style="float:right; text-align: right;"&gt;
&lt;a href="http://4.bp.blogspot.com/-MI5Doq1X0SU/USEjrfTtCoI/AAAAAAAABgY/FOlPp1PxMTM/s1600/linux4chemistry.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-MI5Doq1X0SU/USEjrfTtCoI/AAAAAAAABgY/FOlPp1PxMTM/s1600/linux4chemistry.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Are you interested in taking over the stewardship of the &lt;a href="http://www.redbrick.dcu.ie/~noel/linux4chemistry/index.html"&gt;Linux4Chemistry website&lt;/a&gt;? This website was setup by Nikodem Kuznik in 2001 to promote the usage of Linux for chemistry by listing chemistry software available for Linux, both commercial, free, and open source. In 2005 I took 
over its maintenance, moved it to its 
present location and made some changes including the awesome logo.



I am currently on the lookout for someone interested and willing to take
 over the running of this site. &lt;b&gt;&lt;i&gt;Update (25/02/2103): A new home has been found.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Why am I looking for someone new? Well, I think I am no longer the right person to maintain this, as the goals I wished to achieve have already been met. To me the idea of promoting Linux as a platform for chemistry software today seems obsolete when almost all chemistry software vendors target Linux at a minimum. Every docking program is on Linux, every QM package runs on Linux, etc.&lt;br /&gt;
&lt;br /&gt;
In taking over the website I also had the goal of clarifying the distinction between Open Source software and software available for free. To this end, I added license information to all of the software, and made it possible to filter the results by license type (I was very proud of my tongue-in-cheek logo for Shareware software). I think that today more people are aware of this distinction and in any case, I'm not sure that L4C is really playing a role here.&lt;br /&gt;
&lt;br /&gt;
It is also true that while at the time my desktop machine was running Linux (Debian Sarge I think), since then I do most of my work on Windows but use a VM for Linux. And it's harder to maintain something which is outside my day-to-day usage.&lt;br /&gt;
&lt;br /&gt;
So I'm looking for someone to bring a new vision to Linux4Chemistry and shake it up a bit. If you are this person, get in touch.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2HQBU6u7Rcs:MFhBUEJXyG8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=2HQBU6u7Rcs:MFhBUEJXyG8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=2HQBU6u7Rcs:MFhBUEJXyG8: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=2HQBU6u7Rcs:MFhBUEJXyG8: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=2HQBU6u7Rcs:MFhBUEJXyG8: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=2HQBU6u7Rcs:MFhBUEJXyG8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=2HQBU6u7Rcs:MFhBUEJXyG8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/2HQBU6u7Rcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/9122309143766847412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=9122309143766847412" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9122309143766847412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9122309143766847412?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/02/a-new-home-for-linux4chemistry.html" title="A new home for Linux4Chemistry?" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-MI5Doq1X0SU/USEjrfTtCoI/AAAAAAAABgY/FOlPp1PxMTM/s72-c/linux4chemistry.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;C0EHSHs-cCp7ImA9WhBSFk8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-8171938421651436767</id><published>2013-02-06T22:00:00.000Z</published><updated>2013-02-23T12:13:59.558Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-23T12:13:59.558Z</app:edited><title>A compilation of speeds - Compiler face-off</title><content type="html">&lt;a href="http://www.flickr.com/photos/extrudedaluminiu/4680315050/" style="margin-left:1em; margin-bottom:0.0em; float:right;" title="Compilers cake! by Extrudedaluminiu, on Flickr"&gt;&lt;img src="http://farm5.staticflickr.com/4064/4680315050_849d6e55ea_n.jpg" width="320" height="240" alt="Compilers cake!" &gt;&lt;/a&gt;Let's get right into this one. I've compiled Open Babel with g++ in various ways, and am going to compare the speed with the MSVC++ release. Specifically I'm going to compare the wallclock time to convert 10000 molecules (the first 10000 in ChEMBL 13) from an SDF file to SMILES.&lt;br/&gt;&lt;br/&gt;

Our starting point is the time for the MSVC++ compiled release: &lt;br/&gt;
&lt;b&gt;29.6s (MSVC++ 2010 Express 32-bit)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;

I have a Linux Mint 12 VM (VMWare) on the same machine, so let's run the same executable under Wine on Linux:&lt;br/&gt;
&lt;b&gt;37.3s (MSVC++ 32-bit under Wine/Linux)&lt;/b&gt;&lt;br/&gt;
...so it's slower, pretty much as expected. The not-an-emulation layer slows things down a bit.&lt;br/&gt;&lt;br/&gt;

How about the MinGW compilation described in the &lt;a href="http://baoilleach.blogspot.co.uk/2013/02/compiling-open-babel-with-mingw-on.html"&gt;previous post&lt;/a&gt;?:&lt;br/&gt;
&lt;b&gt;24.1s (MinGW g++ 4.6.2 32-bit)&lt;/b&gt;&lt;br/&gt;
g++ beats MSVC++. To be honest, I was a bit surprised to see this, although I understand from Roger that g++ is surprisingly highly-optimised for cheminformatics toolkits. Maybe we should look into an official MinGW release in future.&lt;br/&gt;&lt;br/&gt;

What about Open Babel compiled with Cygwin's g++?:&lt;br/&gt;
&lt;b&gt;39.5s (Cygwin g++ 4.5.3 32-bit)&lt;/b&gt;&lt;br/&gt;
As expected it runs like a pig compared to the MinGW version. Cygwin's handy, but when you're in a hurry it's maybe not the best choice.&lt;br/&gt;&lt;br/&gt;

So far, so not very unexpected. Now we will enter the realm of weirdness. Let's compile it on Linux in the VM and run it there:&lt;br/&gt;
&lt;b&gt;14.8s (Linux Mint 12 g++ 4.6.1 64-bit)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;

So, in short, the fastest way to run Open Babel on Windows is to use a VM to run Linux. Huh? The like-with-like comparison of MinGW's 24.1 versus Linux's 14.8 is the most intriguing. It suggests that the slowdown is either due to rubbish file I/O by Windows, or sub-optimal platform-specific code in Open Babel's I/O handling code.&lt;br/&gt;&lt;br/&gt;

Either way, it's a pretty interesting result.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Notes:&lt;/b&gt; &lt;br/&gt;
1. Hardware was a Dell Latitude E6400 bought 3 years ago (Core 2 Duo 2.4 Ghz, 4GB Ram) running Win 7 64-bit. The timing was the best of three after timings had stabilised (the first one or two is usually a second or two slower).&lt;br/&gt;
2. After the initial post, I compiled clang on Linux, and then used it to compile Open Babel. Running the conversion took 15.3s.&lt;br/&gt;
3. Also, I ran the MinGW compiled version under Linux, and it took 30.7s.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Image credit:&lt;/b&gt; Venkatesh Srinivas (&lt;a href="http://www.flickr.com/photos/extrudedaluminiu/"&gt;Extrudedaluminiu&lt;/a&gt; on Flickr)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=W_mS66dOoLw:R_5kfgHghk0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=W_mS66dOoLw:R_5kfgHghk0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=W_mS66dOoLw:R_5kfgHghk0: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=W_mS66dOoLw:R_5kfgHghk0: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=W_mS66dOoLw:R_5kfgHghk0: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=W_mS66dOoLw:R_5kfgHghk0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=W_mS66dOoLw:R_5kfgHghk0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/W_mS66dOoLw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/8171938421651436767/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=8171938421651436767" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8171938421651436767?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8171938421651436767?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/02/a-compilation-of-speeds-compiler-face.html" title="A compilation of speeds - Compiler face-off" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>10</thr:total></entry><entry gd:etag="W/&quot;CUYERX0zcSp7ImA9WhBTEUk.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-1555997563278215703</id><published>2013-02-06T09:31:00.000Z</published><updated>2013-02-06T09:31:44.389Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-06T09:31:44.389Z</app:edited><title>Compiling Open Babel with MinGW on Windows</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-wSXIEJNL4yw/URFbRj8TNvI/AAAAAAAABgI/oCKR8Hm-WfM/s1600/gccegg-65.png" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"&gt;&lt;img border="0" height="130" width="109" src="http://1.bp.blogspot.com/-wSXIEJNL4yw/URFbRj8TNvI/AAAAAAAABgI/oCKR8Hm-WfM/s400/gccegg-65.png" /&gt;&lt;/a&gt;&lt;/div&gt;If you want to compile on Windows using &lt;a href="http://gcc.gnu.org/"&gt;GCC&lt;/a&gt;, you have two alternatives: Cygwin's GCC and MinGW's. The one from Cygwin is easier to use (easier installation) but has the disadvantage that the resulting software does not run natively on Windows, various system calls go through Cygwin's emulation layer which slows things down. Here I'll show how to compile Open Babel with MinGW.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Installing MinGW&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;

I've previously found this a bit confusing. This time I did a &lt;a href="http://www.mingw.org/wiki/InstallationHOWTOforMinGW"&gt;manual installation&lt;/a&gt; by creating a folder C:\MinGW, and then downloading all the relevant dlls on the installation page. To do this quickly just middle click on several links, wait a few seconds, and then hit Save on all

 the dialog boxes. Once they are all downloaded, move them to C:\MinGW and unzip them there.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Installing MSYS&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;

No need to install MSYS (a kind of build environment for MinGW) for a project such as Open Babel that uses CMake to build. Why do I mention it then? Because the MinGW page talks all about it.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Compiling Open Babel&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;

1. Add C:\MinGW\bin to the PATH&lt;br/&gt;
2. Get Cygwin's stuff off the PATH (if it's there). This is most easily accomplished by renaming C:\Cygwin to C:\oldCygwin or so.&lt;br/&gt;
3. Configure CMake to create makefiles for MinGW. I had some problems (at runtime) with a shared library version, so I went with the static one:
&lt;pre style="overflow:auto"&gt;cmake -G "MinGW Makefiles" ../openbabel-2.3.2 -DWITH_INCHI=FALSE -DBUILD_SHARED=FALSE&lt;/pre&gt;
4. Build it with MinGW's make.
&lt;pre&gt;mingw32-make&lt;/pre&gt;
Hmmm...I wonder if it's as fast as the MSVC-compiled version we distribute?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ZjIKF2WpOJg:jTJFO9Enafs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ZjIKF2WpOJg:jTJFO9Enafs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ZjIKF2WpOJg:jTJFO9Enafs: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=ZjIKF2WpOJg:jTJFO9Enafs: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=ZjIKF2WpOJg:jTJFO9Enafs: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=ZjIKF2WpOJg:jTJFO9Enafs:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ZjIKF2WpOJg:jTJFO9Enafs:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/ZjIKF2WpOJg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/1555997563278215703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=1555997563278215703" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1555997563278215703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1555997563278215703?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/02/compiling-open-babel-with-mingw-on.html" title="Compiling Open Babel with MinGW on Windows" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-wSXIEJNL4yw/URFbRj8TNvI/AAAAAAAABgI/oCKR8Hm-WfM/s72-c/gccegg-65.png" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkMDSXs8cCp7ImA9WhNaEEs.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-8237760860461041823</id><published>2013-01-24T21:51:00.003Z</published><updated>2013-01-24T21:54:38.578Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-24T21:54:38.578Z</app:edited><title>You can QSAR that again - Reproducible research with IPython</title><content type="html">I've mentioned the &lt;a href="http://ipython.org/"&gt;IPython&lt;/a&gt; Notebook before (&lt;a href="http://baoilleach.blogspot.co.uk/2013/01/ipython-notebook-and-animated-fipy.html"&gt;here&lt;/a&gt; and &lt;a href="http://baoilleach.blogspot.co.uk/2012/03/molecular-eye-candy-for-ipython.html"&gt;here&lt;/a&gt;). It's an interactive Python session that runs in the web browser, and can capture and display the output including plots. It can be saved, loaded and exported to a static HTML page. Entries in the notebook can be edited, and the whole notebook can be run in order to regenerate the output.&lt;br /&gt;
&lt;br /&gt;
In other words, it's the perfect tool for documenting and presenting an analysis of data, thus bringing us one step closer to the goal of reproducible research. There is one area in which it is a particularly good fit for cheminformatics, and that's QSAR.&lt;br /&gt;
&lt;br /&gt;
Greg Landrum and Nikolas Fechner of Novartis have led the way here. Check out this &lt;a href="http://code.google.com/p/rdkit/wiki/UGM2012Tutorials"&gt;series of IPython notebooks&lt;/a&gt; originally presented at the RDKit UGM in 2012, and in particular the one on &lt;a href="http://nbviewer.ipython.org/4316460/"&gt;Using SciKit-Learn and Descriptors to Build Regression Models&lt;/a&gt;. Here's an excerpt:
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-CiwcSZYWJGE/UQGp4ehZiEI/AAAAAAAABf0/raBGNngk3U4/s1600/ipython_qsar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-CiwcSZYWJGE/UQGp4ehZiEI/AAAAAAAABf0/raBGNngk3U4/s1600/ipython_qsar.png" /&gt;&lt;/a&gt;&lt;/div&gt;
It's pretty much a complete record of how they went about analysing a particular dataset from start to finish. The only thing that I would add is that I would ask the software used (RDKit, ipython, matplotlib and scikits-learn) to print out their version numbers of the top of the notebook (and add some pretty pictures of outliers too of course).&lt;br /&gt;
&lt;br /&gt;
Hopefully others will follow in these footsteps. It would certainly be something to see such a Notebook included as part of the Methods section in a QSAR paper. Almost makes me want to do some QSAR work again...(almost). :-)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kHmwTJfnG10:l3uiP0qn92E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kHmwTJfnG10:l3uiP0qn92E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kHmwTJfnG10:l3uiP0qn92E: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=kHmwTJfnG10:l3uiP0qn92E: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=kHmwTJfnG10:l3uiP0qn92E: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=kHmwTJfnG10:l3uiP0qn92E:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kHmwTJfnG10:l3uiP0qn92E:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/kHmwTJfnG10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/8237760860461041823/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=8237760860461041823" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8237760860461041823?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8237760860461041823?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/you-can-qsar-that-again-reproducible.html" title="You can QSAR that again - Reproducible research with IPython" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-CiwcSZYWJGE/UQGp4ehZiEI/AAAAAAAABf0/raBGNngk3U4/s72-c/ipython_qsar.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0YFRH48eCp7ImA9WhNbFk8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-1903286310230669099</id><published>2013-01-19T18:45:00.001Z</published><updated>2013-01-19T18:45:15.070Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-19T18:45:15.070Z</app:edited><title>Chemistrify your Raspberry Pi Part III</title><content type="html">Following on from Parts &lt;a href="http://baoilleach.blogspot.co.uk/2013/01/chemistrify-your-raspberry-pi.html"&gt;I&lt;/a&gt; and &lt;a href="http://baoilleach.blogspot.co.uk/2013/01/chemistrify-your-raspberry-pi-part-ii.html"&gt;II&lt;/a&gt;, now for the chemistry bit. It turns out this is the easiest part:
&lt;pre style="overflow:auto;"&gt;apt-get install python-cinfony python-imaging python-imaging-tk openbabel openbabel-gui indigo-utils python-chemfp python-cclib gausssum pymol jmol rasmol avogadro&lt;/pre&gt;
Pretty easy huh? A single line install for 13 or so chemistry packages. Note that this install command should work on any other Linux distribution based on Debian (e.g. Linux Mint or Ubuntu).&lt;br /&gt;&lt;br /&gt;
Specifically, this installs Cinfony 1.1 and all its dependencies (Open Babel, RDKit, CDK, Indigo, OPSIN). Then there's Andrew Dalke's chemfp. Not to mention the 'mols' (Jmol, PyMol, Rasmol) and Avogadro. And let's not forget shameless self-promotion of cclib and GaussSum.&lt;br/&gt;
&lt;br /&gt;
After installation here are some examples of things you could do:&lt;br /&gt;
&lt;pre style="overflow:auto;"&gt;
$ obabel -:"CC(=O)Cl" -O testOB.png
$ indigo-depict - "CC(=O)Cl" testIndigo.png
$ gpicview test*.png # Display images
$
$ obgui   # Runs fine
$
$ obabel -:"CC(=O)Cl MyMol" -O tmp.mol --gen2d
$ ob2fps tmp.mol # Run ChemFP
$
$ wget http://www.rcsb.org/pdb/files/1PTQ.pdb
$ pymol 1PTQ.pdb  # Fails to start (no OpenGL GLX extension on RPi)
$ rasmol 1PTQ.pdb # Runs fine
$ jmol 1PTQ.pdb   # Runs fine
$ avogadro        # Fails to start (OpenGL problem)
$
$ cclib-get --list mycompchemfile.log
$ gausssum
&lt;/pre&gt;
To use Cinfony, you need to set some variables first as the Java parts don't work out-of-the-box:&lt;pre style="overflow:auto;"&gt;
$ export JPYPE_JVM=/usr/lib/jvm/java-6-openjdk-armhf/jre/lib/arm/server/libjvm.so
$ export CLASSPATH=/usr/share/java/cdk-nonotify.jar:/usr/share/java/cdk-io.jar:/usr/share/java/cdk-formula.jar:/usr/share/java/cdk-forcefield.jar:/usr/share/java/cdk-atomtype.jar:/usr/share/java/cdk-pdb.jar:/usr/share/java/cdk-fingerprint.jar:/usr/share/java/cdk-qsar.jar:/usr/share/java/cdk-ionpot.jar:/usr/share/java/cdk-annotation.jar:/usr/share/java/cdk-builder3d.jar:/usr/share/java/cdk-libiocml.jar:/usr/share/java/cdk-libiomd.jar:/usr/share/java/cdk-pcore.jar:/usr/share/java/cdk-ioformats.jar:/usr/share/java/cdk-qsarmolecular.jar:/usr/share/java/cdk-qsaratomic.jar:/usr/share/java/cdk-valencycheck.jar:/usr/share/java/cdk-extra.jar:/usr/share/java/cdk-structgen.jar:/usr/share/java/cdk-dict.jar:/usr/share/java/cdk-smarts.jar:/usr/share/java/cdk-control.jar:/usr/share/java/cdk-render.jar:/usr/share/java/cdk-builder3dtools.jar:/usr/share/java/cdk-qsarprotein.jar:/usr/share/java/cdk-data.jar:/usr/share/java/cdk-charges.jar:/usr/share/java/cdk-qm.jar:/usr/share/java/cdk-qsarionpot.jar:/usr/share/java/cdk-standard.jar:/usr/share/java/cdk-interfaces.jar:/usr/share/java/cdk-core.jar:/usr/share/java/cdk-sdg.jar:/usr/share/java/cdk-isomorphism.jar:/usr/share/java/cdk-qsarbond.jar:/usr/share/java/cdk-reaction.jar:/usr/share/java/cdk-diff.jar:/usr/share/java/cdk-smiles.jar:/usr/share/java/jaxen.jar:/usr/share/java/opsin-1.2.0.jar:/usr/share/java/opsin.jar
$ python
&gt;&gt;&gt; from cinfony import opsin, webel
&gt;&gt;&gt; webel.readstring("name", "aspirin").write("iupac")
'2-acetyloxybenzoic acid'
&gt;&gt;&gt; opsin.readstring("iupac", "2-acetyloxybenzoic acid").write("smi")
'C(C)(=O)OC1=C(C(=O)O)C=CC=C1'
&lt;/pre&gt;

There are many other packages of interest; see under Science category in synaptic
 (see Notes below). Some examples include autodock, ballview, bkchem, and kalzium. Or to max out on chemistry just install the package science-chemistry.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;
(1) If using apt-get to install software is too hard-core for you, there's also a GUI called synaptic. To install, use "apt-get install synaptic".&lt;br /&gt;
(2) After installation, to actually see what has been installed, use "dpkg -L 'package-name'". For example, anything that was installed in /usr/bin is a new command.&lt;br/&gt;
(3) The list of CDK jars was created using the following Python script:&lt;pre style="overflow:auto;"&gt;
import glob

cdk = glob.glob("/usr/share/java/cdk-*.jar")
jar = [jar for jar in cdk if not jar.endswith("1.2.10.jar")]
print ":".join(jar)&lt;/pre&gt;
(4) Compiling Open Babel oneself works fine but takes 3 or so hours. A similar experience for RDKit has been reported by &lt;a href="http://www.biochemfusion.com/doc/Biochemfusion_RDKit_UGM_2012.pdf"&gt;Jan Holst Jensen&lt;/a&gt;.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=edruh89B4sk:QPrU09-E2MA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=edruh89B4sk:QPrU09-E2MA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=edruh89B4sk:QPrU09-E2MA: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=edruh89B4sk:QPrU09-E2MA: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=edruh89B4sk:QPrU09-E2MA: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=edruh89B4sk:QPrU09-E2MA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=edruh89B4sk:QPrU09-E2MA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/edruh89B4sk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/1903286310230669099/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=1903286310230669099" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1903286310230669099?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1903286310230669099?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/chemistrify-your-raspberry-pi-part-iii_19.html" title="Chemistrify your Raspberry Pi Part III" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CU8ASHk5fSp7ImA9WhNbF0U.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6412422852245393176</id><published>2013-01-15T09:32:00.000Z</published><updated>2013-01-21T15:57:29.725Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-21T15:57:29.725Z</app:edited><title>Compiling RDKit with MSVC 2012</title><content type="html">Compiling &lt;a href="http://code.google.com/p/rdkit/"&gt;RDKit&lt;/a&gt; is a bit like the recipe for Elephant Soup. It's straightforward, but first we have to compile Boost (as there are no binaries provided for MSVC 2012). Unfortunately, the boost build instructions are very poor. The HTML instructions are full of text, none of which will simply tell you how to get the job done.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Preparation&lt;/b&gt;&lt;br/&gt;
1. Just to be safe, as both Boost and RDKit compile against Python, I deleted all my Python install folders except C:\Python2.7.&lt;br/&gt;
2. Make sure that bison and flex are installed in Cygwin, and that they are on the PATH.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Compiling Boost 1.49&lt;/b&gt;&lt;br/&gt;
1. Choose the right version. Too new, and the API will have changed and RDKit will not compile; too old, and it won't compile with MSVC 2012. I'm using boost 1.49.&lt;br/&gt;
2. Unzip into C:\Boost\boost_1_49_0. Do not bother using a different folder as it will install into C:\Boost\lib in any case.&lt;br/&gt;
3. Compile bjam as follows:&lt;pre&gt;cd C:\Boost\boost_1_49_0
bootstrap&lt;/pre&gt;
4. Start the MSVC2012 command prompt (or else bjam won't find 'cl'). Now we're going to compile the bits of Boost that RDKit needs. Some of these are shared libraries and some are dynamically linked libraries.&lt;pre style="overflow:auto;"&gt;bjam.exe --with-regex --with-python --with-date_time --with-thread link=shared toolset=msvc-11.0 release install -j4
bjam.exe --with-thread --with-date_time toolset=msvc-11.0 release stage -j4
&lt;/pre&gt;5. Copy the files from C:\Boost\boost_1_49_0\stage\lib to C:\Boost\lib&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Compiling RDKit Q3 2012&lt;/b&gt;&lt;br/&gt;
1. The setup is all done by one command:
&lt;br /&gt;
&lt;pre style="overflow:auto;"&gt;C:\Tools\RDKit\newbuild&amp;gt;cmake -G "Visual Studio 11" ..\RDKit_2012_09_1
-- Check for working C compiler using: Visual Studio 11
-- Check for working C compiler using: Visual Studio 11 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 11
-- Check for working CXX compiler using: Visual Studio 11 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Found PythonLibs: C:/Python27/libs/python27.lib (found version "2.7.3")
-- Found PythonInterp: C:/Python27/python.exe (found version "2.7.3")
-- Boost version: 1.49.0
-- Found the following Boost libraries:
--   python
-- Found BISON: C:/cygwin/bin/bison.exe
-- Found FLEX: C:/cygwin/bin/flex.exe
-- Looking for include file pthread.h
-- Looking for include file pthread.h - not found.
-- Found Threads: TRUE
-- Boost version: 1.49.0
-- Found the following Boost libraries:
--   regex
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Tools/RDKit/newbuild
&lt;/pre&gt;
2. Type "start RDKit.sln", change to Release build, and build the ALL_BUILD target, followed by the INSTALL target.&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Running the RDKit tests&lt;/b&gt;&lt;br/&gt;
1. Close Visual Studio, and at the command line type:
&lt;br /&gt;
&lt;pre&gt;set RDBASE=C:\Tools\RDKit\RDKit_2012_09_1
set PYTHONPATH=%RDBASE%
set PATH=%RDBASE%\lib;C:\Boost\lib;%PATH%
start RDKit.sln
&lt;/pre&gt;
2. Now you can run the tests by 'building' the RUN_TESTS target
&lt;br /&gt;
&lt;pre&gt;1&amp;gt;  100% tests passed, 0 tests failed out of 76
1&amp;gt;  
1&amp;gt;  Total Test time (real) =  82.36 sec
&lt;/pre&gt;
&lt;br/&gt;
&lt;b&gt;Notes:&lt;/b&gt; For a debug build, you need the debug build of Boost. Just replace release by debug in the bjam command-lines above (to speed things up, use 'stage' for both).&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dKqo7yZS4xM:jSbXgf0FGV8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dKqo7yZS4xM:jSbXgf0FGV8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=dKqo7yZS4xM:jSbXgf0FGV8: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=dKqo7yZS4xM:jSbXgf0FGV8: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=dKqo7yZS4xM:jSbXgf0FGV8: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=dKqo7yZS4xM:jSbXgf0FGV8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=dKqo7yZS4xM:jSbXgf0FGV8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/dKqo7yZS4xM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6412422852245393176/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6412422852245393176" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6412422852245393176?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6412422852245393176?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/compiling-rdkit-with-msvc-2012.html" title="Compiling RDKit with MSVC 2012" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak4NQnsycCp7ImA9WhNUFEs.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-9087453669249770030</id><published>2013-01-05T22:29:00.001Z</published><updated>2013-01-06T10:43:13.598Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-06T10:43:13.598Z</app:edited><title>IPython notebook and animated FiPy simulations</title><content type="html">&lt;div class="separator" style="float:right; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-6dJewhJcjjQ/UOio4_ubdeI/AAAAAAAABfY/E9_Cr5ftHd4/s1600/steadystate.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="245" width="262" src="http://1.bp.blogspot.com/-6dJewhJcjjQ/UOio4_ubdeI/AAAAAAAABfY/E9_Cr5ftHd4/s400/steadystate.png" /&gt;&lt;/a&gt;&lt;/div&gt;

I was back home this Christmas, and met up with a friend, &lt;a href="http://scholar.google.co.uk/citations?sortby=pubdate&amp;hl=en&amp;user=DLzcjhMAAAAJ&amp;view_op=list_works"&gt;Johan Hjelm&lt;/a&gt;. Naturally the conversation turned to the awesomeness of Python, and whether there was any way to create animated FiPy simulations directly in the &lt;a href="http://ipython.org/ipython-doc/rel-0.13.1/interactive/htmlnotebook.html"&gt;IPython Notebook&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.ctcms.nist.gov/fipy/index.html"&gt;FiPy&lt;/a&gt; is "an object oriented, partial differential equation (PDE) solver, written in Python, based on a standard finite volume (FV) approach." Fair enough. More usefully, there are a couple of &lt;a href="http://www.ctcms.nist.gov/fipy/examples/README.html"&gt;examples&lt;/a&gt; on the website that model diffusion, electrodeposition and convection. I focussed on the &lt;a href="http://www.ctcms.nist.gov/fipy/examples/diffusion/generated/examples.diffusion.mesh20x20.html"&gt;mesh20x20 diffusion example&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you run the example at the command-line it pops up a matplotlib window showing the progress of the simulation. However, direct entry of the example into an IPython Notebook just results in a single graph for the simulation. To adapt it, I added a call to clear_output(), and used IPython's display() command to directly display the matplotlib figure associated with the simulation.&lt;br /&gt;
&lt;br /&gt;
In short, here are the results as an &lt;a href="http://baoilleach.webfactional.com/site_media/blog_ipynotebook/mesh20x20.ipynb"&gt;IPython notebook&lt;/a&gt;, a &lt;a href="http://baoilleach.webfactional.com/site_media/blog_ipynotebook/mesh20x20.py"&gt;Python script&lt;/a&gt;, and as an &lt;a href="http://baoilleach.webfactional.com/site_media/blog_ipynotebook/ipython_fipy_example.htm"&gt;HTML page&lt;/a&gt; (and another &lt;a href="http://nbviewer.ipython.org/url/baoilleach.webfactional.com/site_media/blog_ipynotebook/mesh20x20.ipynb"&gt;HTML page&lt;/a&gt;, created on-the-fly from the notebook URL by &lt;a href="http://nbviewer.ipython.org"&gt;http://nbviewer.ipython.org&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Notes:&lt;/b&gt; I used IPython 0.13.1 on Windows. To downgrade the notebook to earlier versions, see this &lt;a href="http://ipython.org/ipython-doc/rel-0.13/whatsnew/version0.13.html#new-notebook-format"&gt;discussion&lt;/a&gt;. Also, the statement "from IPython.display import clear_output" may need to be changed to "from IPython.core.display import clear_output".&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kfozZ5FGI6c:66Ety3t2pDQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kfozZ5FGI6c:66Ety3t2pDQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kfozZ5FGI6c:66Ety3t2pDQ: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=kfozZ5FGI6c:66Ety3t2pDQ: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=kfozZ5FGI6c:66Ety3t2pDQ: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=kfozZ5FGI6c:66Ety3t2pDQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kfozZ5FGI6c:66Ety3t2pDQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/kfozZ5FGI6c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/9087453669249770030/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=9087453669249770030" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9087453669249770030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9087453669249770030?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/ipython-notebook-and-animated-fipy.html" title="IPython notebook and animated FiPy simulations" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-6dJewhJcjjQ/UOio4_ubdeI/AAAAAAAABfY/E9_Cr5ftHd4/s72-c/steadystate.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D0YFQ3o6eCp7ImA9WhNbFk8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-5095250036413987785</id><published>2013-01-02T21:50:00.000Z</published><updated>2013-01-19T19:51:52.410Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-19T19:51:52.410Z</app:edited><title>Chemistrify your Raspberry Pi Part II</title><content type="html">In &lt;a href="http://baoilleach.blogspot.co.uk/2013/01/chemistrify-your-raspberry-pi.html"&gt;Part I&lt;/a&gt;, we got this very lean mean machine up and running. Now we want to take a look at what's going on in its tiny tiny silicon brain. If you have a monitor/TV and USB keyboard and mouse it's easy - just plug them in. In my case I don't so...&lt;br /&gt;
&lt;br /&gt;
...I'm going to log in remotely using my laptop over the network. The good news is that there's an ssh server running by default on the RPi. The username is pi and password is raspberry. All we need is the RPi's IP address.&lt;br /&gt;
&lt;br /&gt;
Connect the RPi to your router using an ethernet cable. If both are turned on, the router will assign the RPi an IP address. You can find out the value by logging into your router and looking at the details (or you can just guess the IP address by changing the number at the end of your laptop's IP address). Once you have the IP address, you can log in with &lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/"&gt;Putty&lt;/a&gt; or Cygwin's ssh (remember, username pi).&lt;br /&gt;
&lt;br /&gt;
The first time you log in, it asks you to run 'sudo raspi-config'. I did so, to set the timezone, expand the root filesystem (otherwise it doesn't use the whole SD card), and reduce the video memory to 32MB from 64MB (under "Memory split"). When you hit Finish it reboots, killing ssh, so you have to wait a minute before logging back in.&lt;br /&gt;
&lt;br /&gt;
While some believe that the Unix command line is the perfect user interface, let's see what the Raspbian GUI looks like. To do so, we are going to use &lt;a href="http://en.wikipedia.org/wiki/Virtual_Network_Computing"&gt;VNC&lt;/a&gt; (Virtual Network Computing), and specifically a piece of software called TightVNC. We will set up a server on the RPi, and a viewer on the laptop.&lt;br /&gt;
&lt;br /&gt;
On the RPi:
&lt;br /&gt;
&lt;pre&gt;$ sudo apt-get install tightvncserver
$ tightvncserver :1
&lt;/pre&gt;
If you set a password, make a note of it.&lt;br /&gt;
&lt;br /&gt;
On the Windows laptop, install &lt;a href="http://www.tightvnc.com/download.php"&gt;TightVNC&lt;/a&gt;. Please note that when you run the installer, you should untick the box that sets TightVNC running as a Windows service. This would be a BAD idea, as it would mean that your desktop is being broadcast over the network.&lt;br /&gt;
&lt;br /&gt;
Now run "TightVNC Viewer" and connect to the RPi by entering the IP address of the RPi followed by ":5901", e.g. 128.128.0.1:5901. If you set a password, you will need to enter it. Finally, you should see something like this:&lt;br/&gt;


&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-23FFEyTuMQE/UOSo3im3VkI/AAAAAAAABfA/2WCyVra6KW0/s1600/rpi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="321" src="http://4.bp.blogspot.com/-23FFEyTuMQE/UOSo3im3VkI/AAAAAAAABfA/2WCyVra6KW0/s400/rpi.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
I still haven't done any chemistry but I guess that's all in &lt;a href="http://baoilleach.blogspot.co.uk/2013/01/chemistrify-your-raspberry-pi-part-iii_19.html"&gt;Part III&lt;/a&gt;...&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Notes:&lt;/b&gt; From time to time the router changes the IP address it allocates. If you want to assign a fixed IP address to the RPi, see the &lt;a href="http://www.andrewmunsell.com/blog/setting-up-raspberry-pi-as-headless-device"&gt;information here&lt;/a&gt; (untested). If you want the RPi to automatically start a TightVNC server on booting, see the information in the same article.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=fMknQDSqpvY:u_dLW9XHAFM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=fMknQDSqpvY:u_dLW9XHAFM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=fMknQDSqpvY:u_dLW9XHAFM: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=fMknQDSqpvY:u_dLW9XHAFM: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=fMknQDSqpvY:u_dLW9XHAFM: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=fMknQDSqpvY:u_dLW9XHAFM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=fMknQDSqpvY:u_dLW9XHAFM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/fMknQDSqpvY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/5095250036413987785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=5095250036413987785" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5095250036413987785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/5095250036413987785?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/chemistrify-your-raspberry-pi-part-ii.html" title="Chemistrify your Raspberry Pi Part II" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-23FFEyTuMQE/UOSo3im3VkI/AAAAAAAABfA/2WCyVra6KW0/s72-c/rpi.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUMAQXY-fSp7ImA9WhNUEUs.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-1347470025145043720</id><published>2013-01-01T20:47:00.001Z</published><updated>2013-01-02T21:50:40.855Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-02T21:50:40.855Z</app:edited><title>Chemistrify your Raspberry Pi</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.raspberrypi.org/wp-content/uploads/2012/03/Raspi_Colour_R.png" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"&gt;&lt;img border="0" height="362" width="300" src="http://www.raspberrypi.org/wp-content/uploads/2012/03/Raspi_Colour_R.png" /&gt;&lt;/a&gt;&lt;/div&gt;

So you've just gotten a &lt;a href="http://www.raspberrypi.org/faqs"&gt;Raspberry Pi&lt;/a&gt; Model B for Christmas. Yay - let's install all known cheminformatics software! But you don't have a monitor, TV or a USB keyboard. What are we going to do?&lt;br/&gt;&lt;br/&gt;

Well, it turns out we don't need them. We do need a couple of things though first:&lt;br/&gt;&lt;br/&gt;
1. A 5V power supply with a micro USB cable and supplying &amp;gt;700mA. £15 at Maplins - a bit overpriced. You'll probably do better on Amazon, or recycling a phone or Kindle charger.&lt;br/&gt;&lt;br/&gt;
2. An SDHC card. I bought a 32GB one at ASDA for £15, but you can get by with a 4GB one. Apparently they come in &lt;a href="http://en.wikipedia.org/wiki/Secure_Digital#Speeds"&gt;different speeds&lt;/a&gt; - I didn't realise this, but your Raspberry Pi might be faster if you get a class 10 SDHC (see list of &lt;a href="http://www.raspberry-pi.co.uk/2012/06/07/compatible-sd-cards/"&gt;compatible cards&lt;/a&gt;).&lt;br/&gt;&lt;br/&gt;

Getting the Linux distro image ("Raspbian" - a customised Debian) onto the SD card is the hardest part, at least from Windows, as the recommended method is using &lt;a href="https://launchpad.net/win32-image-writer/+download"&gt;Win32DiskImager&lt;/a&gt; which (as of version 0.6) has a critical bug that might bork your hard-drive (YMMV). I created a Knoppix Live CD, booted off that, and used &lt;code&gt;dd&lt;/code&gt; to copy the image to the SD card*. If you don't know what you're doing you might be better off buying an SD card with &lt;a href="http://thepihut.com/products/raspbian-preinstalled-sd-card"&gt;Raspbian pre-installed&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;

Your RPi is now good to go. Stick the SD card into the appropriate place, plug in the micro USB, and turn on the power. Eh walla!&lt;br/&gt;&lt;br/&gt;

Well, actually, the only thing you'll see are lights blinking on the RPi. But &lt;a href="http://baoilleach.blogspot.co.uk/2013/01/chemistrify-your-raspberry-pi-part-ii.html"&gt;Part II&lt;/a&gt; will continue this epic narrative...&lt;br/&gt;&lt;br/&gt;

(&lt;b&gt;*&lt;/b&gt; I used gparted to figure out which device was which.)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=rrJ9GBDzan0:FFLyoya-Hv8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=rrJ9GBDzan0:FFLyoya-Hv8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=rrJ9GBDzan0:FFLyoya-Hv8: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=rrJ9GBDzan0:FFLyoya-Hv8: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=rrJ9GBDzan0:FFLyoya-Hv8: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=rrJ9GBDzan0:FFLyoya-Hv8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=rrJ9GBDzan0:FFLyoya-Hv8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/rrJ9GBDzan0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/1347470025145043720/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=1347470025145043720" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1347470025145043720?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1347470025145043720?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2013/01/chemistrify-your-raspberry-pi.html" title="Chemistrify your Raspberry Pi" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkYARX4-eCp7ImA9WhNUEUs.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-9177091882542929986</id><published>2012-12-18T22:12:00.000Z</published><updated>2013-01-02T22:02:24.050Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-02T22:02:24.050Z</app:edited><title>My year in review - Reviewing reviewing</title><content type="html">&lt;a href="http://www.flickr.com/photos/lauraritchie/7874958188/" title="After the Edit by LMRitchie, on Flickr" style="float:right;margin: 0 0 10px 10px;"&gt;&lt;img src="http://farm9.staticflickr.com/8421/7874958188_bd2ec88b29_n.jpg" width="240" height="320"  alt="After the Edit"&gt;&lt;/a&gt;Like most scientists, from time to time I get asked to review papers, and a few years ago I decided to keep track of the reviews I did for various journals. In 2010, 2011, and 2012 I was asked to review 7, 6 and 7 times respectively. &lt;br /&gt;
&lt;br /&gt;
I've been trying to figure out is this a reasonable level of reviewing? I guess the question is, am I doing more reviewing for the chemistry community than they are doing for me? Not that I mind those freeloading slackers dumping it all on me - I'm just curious.&lt;br /&gt;
&lt;br /&gt;
So what's the other side of the equation? In the same three years I've had my name attached to 8 peer-reviewed publications. If each was reviewed 2.5 times (a reasonable guesstimate), that's also 20 reviews.&lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;And so the balance is maintained.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Note:&lt;/b&gt; I know what you're thinking...(eerie isn't it!)...you want to adjust the figures for multiple authors. But both of the values would have to be adjusted in the same way and so it just cancels out. (I think.)&lt;br /&gt;
&lt;br /&gt;&lt;/strike&gt;
&lt;b&gt;Update (02/01/2013):&lt;/b&gt; The previous note is a load of rubbish. As Felix points out in the comments, I should be correcting for multiple authors. Oh well...
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Image credit:&lt;/b&gt; Laura Ritchie (&lt;a href="http://www.flickr.com/photos/lauraritchie/"&gt;LMRitchie&lt;/a&gt; on Flickr)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=3_fXOZTXqbo:YBiXM8tFWiM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=3_fXOZTXqbo:YBiXM8tFWiM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=3_fXOZTXqbo:YBiXM8tFWiM: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=3_fXOZTXqbo:YBiXM8tFWiM: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=3_fXOZTXqbo:YBiXM8tFWiM: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=3_fXOZTXqbo:YBiXM8tFWiM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=3_fXOZTXqbo:YBiXM8tFWiM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/3_fXOZTXqbo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/9177091882542929986/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=9177091882542929986" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9177091882542929986?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/9177091882542929986?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/12/my-year-in-review-reviewing-reviewing.html" title="My year in review - Reviewing reviewing" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>8</thr:total></entry><entry gd:etag="W/&quot;A0EMQ34-eSp7ImA9WhNWEkw.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-8056482827410201381</id><published>2012-12-11T09:53:00.001Z</published><updated>2012-12-11T09:54:42.051Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-11T09:54:42.051Z</app:edited><title>Cinfony 1.2 released</title><content type="html">&lt;a href="http://cinfony.googlecode.com/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5256929986606204338" src="http://2.bp.blogspot.com/_x5Hz3F0jd4Q/SPRd-GzDBbI/AAAAAAAAAqM/E0JytdTVeXs/s400/cinfony_200.png" style="cursor: hand; cursor: pointer; float: right; margin: 0 0 10px 10px;" /&gt;&lt;/a&gt;Cinfony presents a &lt;a href="http://www.redbrick.dcu.ie/~noel/cinfony/1.2"&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, JChem and cheminformatics webservices.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cinfony 1.2 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 the &lt;a href="http://www.blogger.com/www.chemaxon.com/jchem"&gt;JChem&lt;/a&gt; commercial cheminformatics toolkit, and the ability to specify options (via an 'opt' dictionary) for format conversion and some other operations. There were also some under-the-hood changes to consolidate source files for ease of maintenance. 
&lt;br /&gt;&lt;br /&gt;
These additions were principally contributed by &lt;a href="https://plus.google.com/103272229929516779117/posts"&gt;Adrià Cereto Massagué&lt;/a&gt; (of Universitat Rovira i Virgili and &lt;a href="http://bioinformatics.oxfordjournals.org/content/28/12/1661.abstract"&gt;DecoyFinder&lt;/a&gt;) who joined the Cinfony team (i.e. me) earlier this year.
&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.2, CDK 1.4.15, RDKit 2012.09, Indigo 1.1, JChem 5.11 and OPSIN 1.3.&lt;br /&gt;
&lt;br /&gt;
The Cinfony website has a somewhat condensed &lt;a href="http://code.google.com/p/cinfony/#Example"&gt;example&lt;/a&gt; showing the use of many of these resources in a dozen lines of Python. Here's a smaller example showing part of the new functionality:&lt;br /&gt;
&lt;pre style="overflow:auto;"&gt;&amp;gt;&amp;gt;&amp;gt; from cinfony import pybel, jchem
&amp;gt;&amp;gt;&amp;gt; mol = pybel.readstring("smi", "CC(=O)Cl")
&amp;gt;&amp;gt;&amp;gt; print mol.write("smi", opt={"f": 2, "l": 1}) # Make atom 2 the first and atom 1 the last
C(=O)(Cl)C
&amp;gt;&amp;gt;&amp;gt; fp = jchem.Molecule(mol).calcfp("ECFP")
&amp;gt;&amp;gt;&amp;gt; fp.bits
[39, 47, 55, 246, 397, 429, 700, 908]
&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="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kzyuzRZuA-g:JOmcKi4HF70:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kzyuzRZuA-g:JOmcKi4HF70:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=kzyuzRZuA-g:JOmcKi4HF70: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=kzyuzRZuA-g:JOmcKi4HF70: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=kzyuzRZuA-g:JOmcKi4HF70: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=kzyuzRZuA-g:JOmcKi4HF70:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=kzyuzRZuA-g:JOmcKi4HF70:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/kzyuzRZuA-g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/8056482827410201381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=8056482827410201381" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8056482827410201381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/8056482827410201381?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/12/cinfony-12-released.html" title="Cinfony 1.2 released" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></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>0</thr:total></entry><entry gd:etag="W/&quot;CkMGSH45fyp7ImA9WhNXFk8.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-6804821062754167771</id><published>2012-12-04T11:27:00.000Z</published><updated>2012-12-04T11:27:09.027Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-04T11:27:09.027Z</app:edited><title>Intro to Open Babel</title><content type="html">Recently I was asked (for the first time!) to provide introductory training for Open Babel. Here are the slides I put together:
&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/15480947" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;br/&gt;
If you're interested in this, you should follow up with the hands-on tutorial in the docs which I've &lt;a href="http://baoilleach.blogspot.co.uk/2012/08/presentations-and-practicals-from.html"&gt;mentioned previously&lt;/a&gt;.

For further cheminformatics teaching material, see &lt;a href="http://baoilleach.blogspot.co.uk/2011/05/questions-for-on-line-cheminformatics.html"&gt;this post&lt;/a&gt;.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ttuZmpe5L3M:d434HzVp_OU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ttuZmpe5L3M:d434HzVp_OU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=ttuZmpe5L3M:d434HzVp_OU: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=ttuZmpe5L3M:d434HzVp_OU: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=ttuZmpe5L3M:d434HzVp_OU: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=ttuZmpe5L3M:d434HzVp_OU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=ttuZmpe5L3M:d434HzVp_OU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/ttuZmpe5L3M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/6804821062754167771/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=6804821062754167771" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6804821062754167771?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/6804821062754167771?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/12/intro-to-open-babel.html" title="Intro to Open Babel" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;A08MRX0yeCp7ImA9WhNQFEU.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-4525848799284563536</id><published>2012-11-20T16:54:00.000Z</published><updated>2012-11-21T09:24:44.390Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-21T09:24:44.390Z</app:edited><title>What's taking so long? - Profiling Open Babel</title><content type="html">Profiling code shows where all the runtime is spent. In the case of Open Babel, profiling is a bit awkward due to its use of dynamically-loaded libraries (the format plugins, etc.). So here's how you do it on Linux...&lt;br /&gt;
&lt;pre style="overflow:auto;"&gt;
[openbabel/build]$ rm CMakeCache.txt 
[openbabel/build]$ CXXFLAGS="-pg" LDFLAGS="-pg" cmake ../trunk -DCMAKE_INSTALL_PREFIX=../tree -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_SHARED=OFF
[openbabel/build]$ make
&lt;/pre&gt;
This should successfully compile the library and plugins with profiling information, but will fail when it comes to linking one of the executables:

&lt;pre style="overflow:auto;"&gt;
[openbabel/build]$ make obabel
[100%] Built target openbabel
Scanning dependencies of target obabel
[100%] Building CXX object tools/CMakeFiles/obabel.dir/obabel.o
Linking CXX executable ../bin/obabel
/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/../lib64/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie
collect2: error: ld returned 1 exit status
make[3]: *** [bin/obabel] Error 1
make[2]: *** [tools/CMakeFiles/obabel.dir/all] Error 2
make[1]: *** [tools/CMakeFiles/obabel.dir/rule] Error 2
make: *** [obabel] Error 2
&lt;/pre&gt;

Yikes! Using VERBOSE=1 we can see the offending command:

&lt;pre style="overflow:auto;"&gt;
[openbabel/build]$ VERBOSE=1 make obabel 
cd /home/noel/Tools/openbabel/profile/build/tools &amp;amp;&amp;amp; /usr/local/bin/cmake -E cmake_link_script CMakeFiles/obabel.dir/link.txt --verbose=1
/usr/local/bin/c++&amp;nbsp;&amp;nbsp; -static -pg&amp;nbsp; -g -g3 -fno-inline&amp;nbsp;&amp;nbsp; -pg CMakeFiles/obabel.dir/obabel.o&amp;nbsp; -o ../bin/obabel -rdynamic ../src/libopenbabel.a -Wl,-Bstatic -lpthread -Wl,-Bdynamic -lm -lz -Wl,-Bstatic 
/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/../lib64/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie
collect2: error: ld returned 1 exit status
&lt;/pre&gt;
With Roger's help, I was able to change this to something simpler which &lt;i&gt;will&lt;/i&gt; compile:
&lt;pre style="overflow:auto;"&gt;
[build/tools]$ /usr/local/bin/c++ -pg&amp;nbsp; -g -g3 -fno-inline&amp;nbsp;&amp;nbsp; -pg CMakeFiles/obabel.dir/obabel.o&amp;nbsp; -o ../bin/obabel ../src/libopenbabel.a -lpthread -lm -lz
&lt;/pre&gt;
Success is mine AT LAST!!

Now let's profile it:
&lt;pre style="overflow:auto;"&gt;
[build/bin]$ export BABEL_DATADIR=wherever
[build/bin]$./obabel bigfile.smi -onul
[build/bin]$ gprof ./obabel &amp;gt; gprof.out
&lt;/pre&gt;
Now time to read the &lt;a href="http://www.cs.utah.edu/dept/old/texinfo/as/gprof_toc.html"&gt;gprof manual&lt;/a&gt;.
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=KyAZQidLC1Y:ax7rfGG39CY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=KyAZQidLC1Y:ax7rfGG39CY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=KyAZQidLC1Y:ax7rfGG39CY: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=KyAZQidLC1Y:ax7rfGG39CY: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=KyAZQidLC1Y:ax7rfGG39CY: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=KyAZQidLC1Y:ax7rfGG39CY:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=KyAZQidLC1Y:ax7rfGG39CY:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/KyAZQidLC1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/4525848799284563536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=4525848799284563536" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4525848799284563536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/4525848799284563536?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/11/whats-taking-so-long-profiling-open.html" title="What's taking so long? - Profiling Open Babel" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;D0EDQXg7eip7ImA9WhNQFE0.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-3671428104367543448</id><published>2012-11-20T10:01:00.000Z</published><updated>2012-11-20T10:01:10.602Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-20T10:01:10.602Z</app:edited><title>We can design molecular wires for you wholesale Part II</title><content type="html">As described &lt;a href="http://baoilleach.blogspot.co.uk/2011/07/we-can-design-molecular-wires-for-you.html"&gt;previously&lt;/a&gt;, last year I published a paper in &lt;i&gt;J. Phys. Chem. C&lt;/i&gt; with &lt;a href="http://hutchison.chem.pitt.edu/"&gt;Geoff Hutchison&lt;/a&gt; on &lt;b&gt;Computational Design and Selection of Optimal Organic Photovoltaic Materials&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
A week or two ago someone emailed me for a copy of the paper. Fortunately, after a one year embargo, if you have an open access mandate you can request permission from the editor of an ACS journal to deposit the PDF in an institutional repository.&lt;br /&gt;
&lt;br /&gt;
I went through this process a little while ago, and I am pleased to say that a copy of the PDF can now be found in University College Cork's institutional repository at &lt;a href="http://hdl.handle.net/10468/748"&gt;http://hdl.handle.net/10468/748&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I'm not sure how people are going to find this though - it doesn't seem to be very prominent in Google. In particular, the PDF is not indexed (google search with filetype:pdf).&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=x_KyGrLedXA:qtpdzGAAzy8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=x_KyGrLedXA:qtpdzGAAzy8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=x_KyGrLedXA:qtpdzGAAzy8: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=x_KyGrLedXA:qtpdzGAAzy8: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=x_KyGrLedXA:qtpdzGAAzy8: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=x_KyGrLedXA:qtpdzGAAzy8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=x_KyGrLedXA:qtpdzGAAzy8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/x_KyGrLedXA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/3671428104367543448/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=3671428104367543448" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3671428104367543448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3671428104367543448?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/11/we-can-design-molecular-wires-for-you.html" title="We can design molecular wires for you wholesale Part II" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkQGQX05eip7ImA9WhNRFEo.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-1442080179915225378</id><published>2012-11-09T11:42:00.000Z</published><updated>2012-11-09T15:18:40.322Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-09T15:18:40.322Z</app:edited><title>Tricks with SMILES and SMARTS Part II</title><content type="html">A much-underused feature of SMILES is the ability to apply 'atom classes' to atoms using a colon (inside square brackets). So, for example, CC and C[CH3:6] both represent ethane, but in the latter case one of the carbons is labelled as being a member of atom class 6.&lt;br /&gt;
&lt;br /&gt;
So what's the meaning of atom class 6? Well, it's whatever you want - it's simply a label that you use to indicate some related information. For example, you might want to record reaction locations, or locations of common substitutions, or mappings between different molecules (reactant/product, or sub/superstructures).&lt;br /&gt;
&lt;br /&gt;
Anyhoo, here's how you access the atom class information in Open Babel from Python:
&lt;br /&gt;
&lt;pre style="overflow: auto;"&gt;&amp;gt;&amp;gt;&amp;gt; import pybel
&amp;gt;&amp;gt;&amp;gt; ob = pybel.ob
&amp;gt;&amp;gt;&amp;gt; mol = pybel.readstring("smi", "C[CH3:6]")
&amp;gt;&amp;gt;&amp;gt; print mol.write("smi")
CC

&amp;gt;&amp;gt;&amp;gt; print mol.write("smi", opt={"a":True})
C[CH3:6]

&amp;gt;&amp;gt;&amp;gt; data = ob.toAtomClassData(mol.OBMol.GetData("Atom Class"))
&amp;gt;&amp;gt;&amp;gt; data.HasClass(1)
False
&amp;gt;&amp;gt;&amp;gt; data.GetClassString(1)
''
&amp;gt;&amp;gt;&amp;gt; data.HasClass(2)
True
&amp;gt;&amp;gt;&amp;gt; data.GetClassString(2)
':6'
&amp;gt;&amp;gt;&amp;gt;
&lt;/pre&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PcbZwcyjLuI:7_TqGMyvvYA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=PcbZwcyjLuI:7_TqGMyvvYA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=PcbZwcyjLuI:7_TqGMyvvYA: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=PcbZwcyjLuI:7_TqGMyvvYA: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=PcbZwcyjLuI:7_TqGMyvvYA: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=PcbZwcyjLuI:7_TqGMyvvYA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=PcbZwcyjLuI:7_TqGMyvvYA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/PcbZwcyjLuI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/1442080179915225378/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=1442080179915225378" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1442080179915225378?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/1442080179915225378?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/11/tricks-with-smiles-and-smarts-part-ii.html" title="Tricks with SMILES and SMARTS Part II" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;CUcDRXo8fSp7ImA9WhNRE0Q.&quot;"><id>tag:blogger.com,1999:blog-7844526396210378482.post-3251391677807894127</id><published>2012-11-08T16:44:00.000Z</published><updated>2012-11-08T16:44:34.475Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-08T16:44:34.475Z</app:edited><title>Plotting accesses on the axis Part III</title><content type="html">Following on from Parts &lt;a href="http://baoilleach.blogspot.co.uk/2011/11/plotting-accesses-on-axis.html"&gt;I&lt;/a&gt; and &lt;a href="http://baoilleach.blogspot.co.uk/2012/09/plotting-accesses-on-axis-part-ii.html"&gt;II&lt;/a&gt;, this is the last in a series of posts exploring how journal access statistics provided by Open Access journals such as Journal of Cheminformatics give an insight into relative impact of papers.&lt;br /&gt;
&lt;br /&gt;
It's now over a year since the Blue Obelisk and Open Babel papers were published so let's look at the accesses over that period:
&lt;script src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js" type="text/javascript"&gt; {"dataSourceUrl":"//docs.google.com/spreadsheet/tq?key=0AkCMyDkjbsFHdG5IYVE5M1FxcWwzaWw0bi1lV19QSWc&amp;transpose=0&amp;headers=1&amp;range=H1%3AJ13&amp;gid=0&amp;pub=1","options":{"vAxes":[{"useFormatFromData":true,"title":"Accesses","minValue":null,"viewWindowMode":"pretty","viewWindow":{"min":null,"max":null},"maxValue":null},{"useFormatFromData":true,"minValue":null,"viewWindowMode":"pretty","viewWindow":{"min":null,"max":null},"maxValue":null}],"titleTextStyle":{"bold":true,"color":"#000","fontSize":16},"booleanRole":"certainty","title":"Accesses in First Year","height":270,"animation":{"duration":500},"pointSize":7,"legend":"right","width":500,"lineWidth":0,"hAxis":{"useFormatFromData":true,"title":"Months since 1 Nov","minValue":null,"viewWindowMode":"pretty","viewWindow":{"min":null,"max":null},"maxValue":null},"tooltip":{}},"state":{},"view":{},"chartType":"ScatterChart","chartName":"Chart 3"} &lt;/script&gt;
...close to straight lines with a defined slope.&lt;br /&gt;
&lt;br /&gt;
And here's an update of the view over the first month, this time including the Universal SMILES paper:
&lt;script src="//ajax.googleapis.com/ajax/static/modules/gviz/1.0/chart.js" type="text/javascript"&gt; {"dataSourceUrl":"//docs.google.com/spreadsheet/tq?key=0AkCMyDkjbsFHdG5IYVE5M1FxcWwzaWw0bi1lV19QSWc&amp;transpose=0&amp;headers=1&amp;range=A1%3AE32&amp;gid=0&amp;pub=1","options":{"vAxes":[{"title":"Accesses","useFormatFromData":true,"minValue":null,"viewWindowMode":"pretty","viewWindow":{"min":null,"max":null},"maxValue":null},{"useFormatFromData":true,"minValue":null,"viewWindowMode":"pretty","viewWindow":{"min":null,"max":null},"maxValue":null}],"title":"Accesses in First Month","booleanRole":"certainty","titleX":"No. of days from first availability in preliminary form","animation":{"duration":0},"backgroundColor":{"fill":"#FFFFFF"},"pointSize":7,"legend":"right","lineWidth":0,"useFirstColumnAsDomain":false,"hAxis":{"useFormatFromData":true,"minValue":null,"viewWindowMode":"explicit","viewWindow":{"min":null,"max":30},"maxValue":30},"width":500,"height":400},"state":{},"view":{},"chartType":"ScatterChart","chartName":"Chart 1"} &lt;/script&gt;
...it seems like the accesses to this paper mirror almost exactly those of the Blue Obelisk paper.&lt;br /&gt;
&lt;br /&gt;
In conclusion, it would be nice if journals provided these sorts of graphs, or if some third-party website (e.g. one of altmetrics ones) did it. All of the data is on the website; it just needs to be collated as I've done here.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=yr1zgZgylio:VK5yIIKXsbk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=yr1zgZgylio:VK5yIIKXsbk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/baoilleach?a=yr1zgZgylio:VK5yIIKXsbk: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=yr1zgZgylio:VK5yIIKXsbk: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=yr1zgZgylio:VK5yIIKXsbk: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=yr1zgZgylio:VK5yIIKXsbk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/baoilleach?i=yr1zgZgylio:VK5yIIKXsbk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/baoilleach/~4/yr1zgZgylio" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://baoilleach.blogspot.com/feeds/3251391677807894127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7844526396210378482&amp;postID=3251391677807894127" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3251391677807894127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7844526396210378482/posts/default/3251391677807894127?v=2" /><link rel="alternate" type="text/html" href="http://baoilleach.blogspot.com/2012/11/plotting-accesses-on-axis-part-iii.html" title="Plotting accesses on the axis Part III" /><author><name>Noel O'Boyle</name><uri>https://plus.google.com/106283200629953242269</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-W8lRQ2zMkDY/AAAAAAAAAAI/AAAAAAAABfo/tisrtgV0Lao/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry></feed>
