<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sphaerula &#187; Bioinformatics</title>
	<atom:link href="http://sphaerula.com/wordpress/category/bioinformatics/feed/" rel="self" type="application/rss+xml" />
	<link>http://sphaerula.com/wordpress</link>
	<description>by Conrad Halling</description>
	<lastBuildDate>Wed, 20 Jul 2011 01:11:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Three Enterotypes (So Far)</title>
		<link>http://sphaerula.com/wordpress/science/three-enterotypes-so-far/</link>
		<comments>http://sphaerula.com/wordpress/science/three-enterotypes-so-far/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 10:35:23 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=768</guid>
		<description><![CDATA[Biologists are beginning to make a thorough exploration of the human microbiome, the approximately hundred trillion bacterial cells associated with each human body. Yesterday members of the Metagenomics of the Human Intestinal Tract (MetaHIT) Consortium published a paper in Nature stating &#8230; <a href="http://sphaerula.com/wordpress/science/three-enterotypes-so-far/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Biologists are beginning to make a thorough exploration of the human microbiome, the approximately hundred trillion bacterial cells associated with each human body.</p>
<p>Yesterday members of the <a title="Metagenomics of the Human Intestinal Tract (MetaHIT) Consortium" href="http://www.metahit.eu/" target="_blank">Metagenomics of the Human Intestinal Tract (MetaHIT) Consortium</a> published a <a title="Enterotypes of the human gut microbiome" href="http://dx.doi.org/10.1038/nature09944" target="_blank">paper</a> in <cite>Nature</cite> stating that they have found that human gut biomes fall into three major classes, or enterotypes. These enterotypes are not correlated with the national or even continental origin of the humans studied.</p>
<p>I find these results surprising (not that I know anything about the human microbiome, but the results run counter to my intuition about biology), and I wonder if the classification is an artifact of the analysis. We’ll know soon, since this is a booming area of research powered by high-throughput sequencing and computational analysis.</p>
<p>Excellent summaries of this research can be found on Ed Yong’s <cite>Not Exactly Rocket Science</cite> blog (<a title="Not Exactly Rocket Science: Divided by language, united by gut bacteria—people have three common gut types" href="http://blogs.discovermagazine.com/notrocketscience/2011/04/20/divided-by-language-united-by-gut-bacteria-%E2%80%93-people-have-three-common-gut-types" target="_blank">“Divided by language, united by gut bacteria—people have three common gut types”</a>) and in an article by Carl Zimmer in <cite>The New York Times</cite> (<a title="The New York Times: Bacterial Divide People Into 3 Types, Scientists Say" href="http://www.nytimes.com/2011/04/21/science/21gut.html" target="_blank">“Bacteria Divide People Into 3 Types, Scientists Say”</a>). Carl Zimmer has further comments on his own blog, <cite>The Loom</cite> (“<a title="The Loom: Blood type, meet bug type: My new story for the New York Times" href="http://blogs.discovermagazine.com/loom/2011/04/20/blood-type-meet-bug-type-my-new-story-for-the-new-york-times" target="_blank">Blood type, meet bug type: My new story for the New York Times</a>”).</p>
<p><strong>Reference</strong>:</p>
<p>Arumugam, Raes, et al. 2011. Enterotypes of the human gut microbiome. Nature <a href="http://dx.doi.org/10.1038/nature09944">http://dx.doi.org/10.1038/nature09944</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/science/three-enterotypes-so-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing Biological Data</title>
		<link>http://sphaerula.com/wordpress/computing/visualizing-biological-data/</link>
		<comments>http://sphaerula.com/wordpress/computing/visualizing-biological-data/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 11:07:24 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=605</guid>
		<description><![CDATA[On March 16–19, 2011, the Workshop on Visualizing Biological Data was held at the Broad Institute in Cambridge, Massachusetts, less than a mile from where I work. I am deeply interested in this topic, and I would have loved to &#8230; <a href="http://sphaerula.com/wordpress/computing/visualizing-biological-data/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On March 16–19, 2011, the <a title="Workshop on Visualizing Biological Data" href="http://vizbi.org/2011/" target="_blank">Workshop on Visualizing Biological Data</a> was held at the Broad Institute in Cambridge, Massachusetts, less than a mile from where I work. I am deeply interested in this topic, and I would have loved to have attended.</p>
<p>I learned about the workshop from <a title="Jan Aerts" href="http://www.blogger.com/profile/06333918504426826153" target="_blank">Jan Aerts</a>’s blog, <a title="Saaien Tist: VizBi 2011—Looking Back" href="http://saaientist.blogspot.com/2011/03/vizbi-2011-looking-back.html" target="_blank">Saaien Tist</a>. Dr. Aerts provides a good <a title="Saaien Tist: VizBi 2011—Looking Back" href="http://saaientist.blogspot.com/2011/03/vizbi-2011-looking-back.html" target="_blank">summary</a> of the workshop in his post, where he mentions that the <a title="Vimeo: VizBi Videos" href="http://www.vimeo.com/vizbi/videos" target="_blank">videos</a> from the workshop will soon appear. Unfortunately, this year’s videos haven’t appeared yet, although 26 videos from the 2010 workshop are available. This is a wonderful resource, and I need to find the time to watch these.</p>
<p>Dr. Aerts mentioned in his post that <a title="Tamara Munzner" href="http://www.cs.ubc.ca/~tmm/" target="_blank">Tamara Munzner</a> has already posted her <a title="Tamara Munzner: VizBi 2011" href="http://www.cs.ubc.ca/~tmm/talks.html#vizbi11" target="_blank">slides</a> from her keynote talk on her own website. Dr. Munzner has a well-organized <a title="Tamara Munzner: Talks" href="http://www.cs.ubc.ca/~tmm/talks.html" target="_blank">web page</a> with links to slides and other materials from her presentations going back to 1995. I spent some time last night viewing her slides from VizBi 2011, and even without the speaking notes, they were easy to understand. If you’re interested in this topic, then I highly recommend viewing them.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/visualizing-biological-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Bosco Thinks Python Is Good</title>
		<link>http://sphaerula.com/wordpress/computing/why-bosco-thinks-python-is-good/</link>
		<comments>http://sphaerula.com/wordpress/computing/why-bosco-thinks-python-is-good/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 01:37:31 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=405</guid>
		<description><![CDATA[Bosco Ho, who writes the Trapped in the USA blog, yesterday posted his best-of list covering eight years of blogging. Hey, I just realized that I’ve had this blog for more than 8 years, but never put out a best-of &#8230; <a href="http://sphaerula.com/wordpress/computing/why-bosco-thinks-python-is-good/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bosco Ho, who writes the <em><a title="Trapped in the USA" href="http://boscoh.com/" target="_blank">Trapped in the USA</a></em> blog, yesterday posted his <a title="Best Posts of Trapped in the USA" href="http://boscoh.com/writing/best-posts-of-this-blog" target="_blank">best-of list</a> covering eight years of blogging.</p>
<blockquote><p>Hey, I just realized that I’ve had this blog for more than 8 years, but never put out a best-of list. I’ve chosen these based mostly on my blog stats.</p></blockquote>
<p>I was pleased that Bosco included a post from nearly four years about why he thinks <a title="Why I think Python is good (as in granola) for the scientist who programs." href="http://boscoh.com/science/why-i-think-python-is-good-as-in-granola-for-the-scientist-who-programs" target="_blank">Python is good for the scientist who programs</a>. In brief, his reasons are:</p>
<ul>
<li>“Python has built-in modern data structures.” (Unlike, ahem, Perl.)</li>
<li>“Readability counts.” (Python is compact, expressive, and enforces good formatting of code.)</li>
<li>“Scriptability.” (Python can replace the complexity of shell scripts, make files, and compiled programs.)</li>
<li>“Python is ecumenical.” (You can write object-oriented or procedural code, depending on your needs).</li>
<li>“Interpretation is back in style.” (Python runs as fast as much compiled code without having to go through the compiling cycle.)</li>
<li>If you “really need the speed,” you can write a plug-in module in a fast language such as C and execute the module from Python.</li>
<li>“Python has powerful math libraries” (numpy, matplotlib, and other scentific libraries).</li>
</ul>
<p>Read Bosco’s entire post about Python—you won’t be sorry. The other best-of posts are also excellent.</p>
<p>P.S. I do all my work in Perl, and I suffer from Python envy. If I were starting over in bioinformatics programming, I would start with Python.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/why-bosco-thinks-python-is-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Accurate Multiple Sequence Alignment</title>
		<link>http://sphaerula.com/wordpress/bioinformatics/more-accurate-multiple-sequence-alignment/</link>
		<comments>http://sphaerula.com/wordpress/bioinformatics/more-accurate-multiple-sequence-alignment/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 18:01:26 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[multiple sequence alignment]]></category>
		<category><![CDATA[phylogeny]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/?p=57</guid>
		<description><![CDATA[The 20 June 2008 issue of Science contains a paper by Art Löytynoja and Nick Goldman titled “Phylogeny-aware gap placement prevents errors in sequence alignment and evolutionary analysis.” The authors tackled the difficult problem of how to handle correctly the &#8230; <a href="http://sphaerula.com/wordpress/bioinformatics/more-accurate-multiple-sequence-alignment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The 20 June 2008 issue of <cite>Science</cite> contains a <a href="http://dx.doi.org/10.1126/science.1158395" target="_blank">paper</a> by Art Löytynoja and Nick Goldman titled “Phylogeny-aware gap placement prevents errors in sequence alignment and evolutionary analysis.” The authors tackled the difficult problem of how to handle correctly the placement of insertions and deletions in a multiple sequence alignment. A multiple sequence alignment is typically the input into phylogeny tools that attempt to determine the evolutionary relationship among the sequences. The misplacement of insertions and deletions in a multiple sequence alignment can result misinterpretations of the relationships among the sequences.</p>
<p>Typical multiple sequence alignment tools, such as CLUSTAL W, MUSCLE, MAFFT, and T-COFFEE, do not handle indels accurately. The authors developed new tools, <a href="http://dx.doi.org/10.1073/pnas.0409137102" target="_blank">PRANK</a> and <a href="http://dx.doi.org/10.1126/science.1158395" target="_blank">PRANK<sub>+F</sub></a>, that take into account the computed phylogeny of the sequences when placing insertions and deletions into the multiple alignment.</p>
<p>In this paper, the authors describe their refinements of the multiple alignment algorithm, and they provide theory and results that demonstrate that their algorithm improves the quality of multiple sequence alignments in a biologically meaningful way. The implications of their results are strongest for nucleotide sequence alignments, but the authors contend that their results are important also for peptide sequence alignments.</p>
<p>Source:</p>
<p>Löytnoja A, Goldman N. 2008. Phylogeny-aware gap placement prevents errors in sequence alignment and evolutionary analysis. <cite>Science</cite> 320:1632-1635. DOI: <a href="http://dx.doi.org/10.1126/science.1158395" target="_blank">10.1126/science.1158395</a>.</p>
<p>Other bloggers who have have already commented on this paper include:</p>
<ul>
<li><a href="http://anthropology.net/2008/06/20/improving-multiple-sequence-alignments-with-a-phylogeny-aware-algorithm/" target="_blank">anthropology.net</a></li>
<li><a href="http://sandwalk.blogspot.com/2008/06/sequence-alignment.html" target="_blank">Sandwalk</a></li>
</ul>
<p>The Goldman group maintains a web <a href="http://www.ebi.ac.uk/goldman/publs/pub.html" target="_blank">page</a> listing its publications; there are many other interesting papers given there.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/bioinformatics/more-accurate-multiple-sequence-alignment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Learning Python, 3rd Edition (1)</title>
		<link>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/</link>
		<comments>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 02:03:40 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/</guid>
		<description><![CDATA[Utterly bewitched by this dramatic and thrilling panel from an xkcd.com comic strip, I have decided that it is time I learned the Python programming language. I come to Python as a bioinformatics scientist who is experienced in C, C++, &#8230; <a href="http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Utterly bewitched by this dramatic and thrilling panel from an <a title="“Python”" href="http://xkcd.com/353/" target="_blank">xkcd.com</a> comic strip, I have decided that it is time I learned the Python programming language.</p>
<p style="text-align: center"><a href="http://xkcd.com/353/" target="_blank"><img title="Flying with Python, from xkcd.com" src="/images/flying.png" alt="Flying with Python" width="518" height="321" /></a></p>
<p>I come to Python as a bioinformatics scientist who is experienced in C, C++, PHP, Perl, and R. For the past two years, I have used Perl for 95% of the software I have written. But there are days when I grow weary of trying to write object-oriented Perl code in a clear and maintainable way. Perl 5 just isn’t a language designed to support object-oriented programming in a natural way. Hence, I thought I would try Python.</p>
<p>This post is Part 1 of what I plan to be a series of posts about the book <a href="http://www.oreilly.com/catalog/9780596513986/" target="_blank"><cite>Learning Python, 3rd Edition</cite></a>, which was written by Mark Lutz and published in October, 2007, by O’Reilly. This part of my review covers “Part I: Getting Started”, the first 62 pages of the book</p>
<p>In the preface, Mr. Lutz states that <cite>Learning Python</cite> is intended to be an introduction to the Python programming language for programmers and that it deliberately covers only the core Python language without providing guidance on application programming. Mr. Lutz encourages readers to continue on to <a href="http://www.oreilly.com/catalog/python3/" target="_blank"><cite>Programming Python, 3rd Edition</cite></a> (of which he is also the author).</p>
<p>The preface also contains a three-page section, “Preparing for Python 3.0,” which contains a brain-numbing list of features and changes anticipated in Python 3.0. I believe it would have been more appropriate to place this material in an appendix.</p>
<p><cite>Learning Python</cite> is organized into eight major parts:</p>
<ul style="list-style-type: upper-roman">
<li>Getting Started</li>
<li>Types and Operations</li>
<li>Statements and Syntax</li>
<li>Functions</li>
<li>Modules</li>
<li>Classes and OOP (Object Oriented Programming)</li>
<li>Exceptions and Tools</li>
<li>Appendixes</li>
</ul>
<p>The book provides a deliberately bottom-up introduction to Python. This means the reader has to be patient, because Mr. Lutz teaches about each piece of the Python language without showing right away how to use the pieces together to write scripts. Consequently, I have found that I need to jump ahead in the book because I want to begin scripting right away.</p>
<p>Each chapter contains a short quiz, with the answers provided with each quiz. Each part of the book ends with a set of exercises, for which the solutions are provided in Appendix B.</p>
<p>In Chapter 1, Mr. Lutz discusses the strengths and weaknesses of Python. The strengths are many and significant:</p>
<ol>
<li>Python is designed to produce readable code, which makes the code easy to maintain and reuse.</li>
<li>Python is designed up front to support object-oriented programming.</li>
<li>Python code is more succinct than C++ or Java code.</li>
<li>Python is portable and runs on Linux/Unix, Mac OS X, and Windows.</li>
<li>Python comes with a large standard library.</li>
<li>Python works well with other languages.</li>
<li>Python is free.</li>
</ol>
<p>The only weakness that Mr. Lutz acknowledges is that Python sometimes doesn’t run as quickly as compiled C and C++ code. A weakness mentioned by many others is that, contrary to other C-like programming languages (C, C++, Java, C#, Perl, and PHP), white space in Python code has syntactic significance. Many programmers object to this, and it does seem to generate problems with parsing the code.</p>
<p>Chapter 1 devotes a lot of space to discussing the philosphy behind Python.</p>
<blockquote><p>In philosophy, Python adopts a somewhat minimalist approach. This means that although there are usually multiple ways to accomplish a coding task, there is usually just one obvious way&#8230;. In the Python way of thinking, explicit is better than implicit, and simple is better than complex.</p></blockquote>
<p>This discussion provides a sharp contrast to Perl, for which the motto is, <a href="http://en.wikipedia.org/wiki/There_is_more_than_one_way_to_do_it" target="_blank">“There is more than one way to do it”</a> (TIMTOWTDI). Perl contains many language constructs that make commands implicit rather than explicit, and this can make Perl code <a href="/legacy/Perl/Beginning/lesson14.html#obfuscated" target="_blank">difficult to understand</a>.</p>
<p>Mr. Lutz devotes nearly two pages (pp. 16–17) to a sidebar titled “Python is Engineering, Not Art,” in which the author discusses the relative merits of Python and Perl.</p>
<blockquote><p>The short story is this: <em>you can do everything in Python that you can in Perl, but you can read your code after you do it</em>&#8230;. [author’s italics]<em><br />
</em></p>
<p>The somewhat longer story reflects the backgrounds of the designers of the two languages&#8230;. Python’s creator [<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum" target="_blank">Guido van Rossum</a>] is a mathematician by training; as such, he produced a language with a high degree of uniformity—its syntax and toolset are remarkably coherent&#8230;.</p>
<p>By contrast, the creator of the Perl language [<a href="http://en.wikipedia.org/wiki/Larry_Wall" target="_blank">Larry Wall</a>] is a linguist, and its design reflects this heritage. There are many ways to accomplish the same tasks in Perl, and language constructs interact in context-sensitive and sometimes quite subtle ways—much like natural language&#8230;.</p>
<p>But as anyone who has done any substantial code maintenance should be able to attest, freedom of expression is great for art, but lousy for engineering.</p></blockquote>
<p>I am not going to delve into this debate. Since I have studied both linguistics and mathematics, I can easily see the strengths and weaknesses of both points of view, and this will help me decide when I should use Perl and when I should use Python.</p>
<p>Much of the material in Chapter 1, although interesting, is in my opinion unnecessary for a learning book. The entire section, “Is Python a ‘Scripting Language’?”, seems to me more appropriate for the <em>Programming Python</em> book. In my opinion, a learning book should get to writing code as quickly as possible, with philosophical meditations saved for another book.</p>
<p>Chapter 2 discusses how the Python interpreter works to run Python scripts. The chapter directs the reader to Appendix A, which contains instructions for obtaining and installing Python for Windows, Linux, or Unix. (Mac OS X 10.5 comes with Python 2.5.1 already installed.) The remainder of the chapter provides background information about the Python interpreter and can be omitted by the reader in a hurry.</p>
<p>Chapter 3 describes how to run Python scripts. It begins with teaching the reader how to start Python from the shell prompt in order to use Python’s interactive command line. The chapter patiently explains how to do this for each of the major operating systems and problems the reader needs to watch for. Then the chapter explains how to write a short Python script and invoke the script from the command line or by double-clicking its icon, and it explains in detail how to overcome the difficulties with double-clicking an icon in Windows. I found these details in Chapter 3 very useful, and it is clear that Mr. Lutz has learned from his training courses what difficulties the novice user will encounter when first using Python.</p>
<p>Chapter 3 continues with a brief introduction on importing modules using <code>import</code> and the differences between <code>import</code> and <code>reload</code>. The chapter concludes with an introduction to the IDLE user interface and other integrated development environments (IDEs).</p>
<p>Part I concludes with a set of very good exercises. The exercises get the reader started with using the Python command line, the IDLE IDE, and the Python documentation available from the command line and from the <a href="http://www.python.org/doc/" target="_blank">Python web site.</a></p>
<p>Resources:</p>
<ul>
<li> <a href="http://www.oreilly.com/catalog/9780596513986/" target="_blank">Publisher’s web site for <cite>Learning Python, 3rd Edition</cite></a></li>
<li><a href="http://www.rmi.net/~lutz/" target="_blank">Author’s web site</a></li>
<li><a href="http://www.rmi.net/~lutz/about-lp3e.html" target="_blank">Author’s web site for <cite>Learning Python, 3rd Edition</cite></a></li>
<li><a href="http://www.python.org/" target="_blank">Python programming language web site</a></li>
<li><a href="http://activestate.com/Products/activepython/" target="_blank">ActiveState ActivePython distribution</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/computing/book-review-learning-python-3rd-edition-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Web Database Applications with PHP and MySQL</title>
		<link>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/</link>
		<comments>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 02:21:43 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/</guid>
		<description><![CDATA[Web Database Applications with PHP and MySQL, 2nd Edition, was written by Hugh E. Williams and David Lane and published by O’Reilly in May, 2004. I purchased this book in 2005 when I was doing some consulting for a microarray &#8230; <a href="http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oreilly.com/catalog/webdbapps2/" target="_blank"><cite>Web Database Applications with PHP and MySQL, 2nd Edition</cite></a>, was written by Hugh E. Williams and David Lane and published by O’Reilly in May, 2004.</p>
<p>I purchased this book in 2005 when I was doing some consulting for a microarray company in Massachusetts, where I was adapting the BioArray Software Environment (<a href="http://base1.thep.lu.se/" target="_blank">BASE 1.2</a>), which was written in PHP, to their process. I had set the book aside until recently, when I was motivated to review PHP so I could modify the <a href="http://sphaerula.com/wordpress/computing/on-becoming-a-wordpress-master/" target="_blank">WordPress theme</a> that I use for this blog.</p>
<p><a href="http://www.php.net/" target="_blank">PHP</a> is the programming language usually referred to by the <em>P</em> in the acronym <acronym title="Linux Apache MySQL PHP">LAMP</acronym>, which stands for <em>L</em>inux <em>A</em>pache <em>M</em>ySQL <em>P</em>HP. PHP was designed from the beginning to work closely with the <a href="http://httpd.apache.org/" target="_blank">Apache httpd web server</a> and with the <a href="http://www.mysql.com/" target="_blank">MySQL database management system</a>. PHP code is easily embedded into HTML, and this makes it easy for relative novices to use a three-tier architecture for their web sites.</p>
<p>I found <cite>Web Database Applications with PHP and MySQL</cite> an excellent introduction to PHP and MySQL for someone who is skilled at programming using another language. The introductory material on PHP was just enough to get me started, and I quickly learned to refer to the <a href="http://www.php.net/docs.php" target="_blank">PHP documentation</a> (which is also excellent) when I needed enlightenment. The book also provides several chapters that provide a solid introduction to MySQL 4.1.</p>
<p>The last five chapters of the book are devoted to a complete working example of an online wine store. All source code is available at the authors’ web site, <a href="http://www.webdatabasebook.com/" target="_blank">http://www.webdatabasebook.com/</a>. This is an invaluable resource that can serve as the basis for many other PHP projects.</p>
<p>In my opinion, this book is not appropriate for someone who is learning to program or use databases for the first time. Good alternatives might be <a href="http://www.oreilly.com/catalog/9780596514013/" target="_blank"><cite>Learning PHP &amp; MySQL, 2nd Edition</cite></a>, by Michele E. Davis and Jon A. Phillips (published August, 2007, by O’Reilly), and <a href="http://www.oreilly.com/catalog/learningsql/" target="_blank"><cite>Learning SQL</cite></a>, by Alan Beaulieu (published August, 2005, by O’Reilly). (I read <cite>Learning SQL</cite> recently, and I recommend it highly. Watch for a review at a later date.)</p>
<p>Since the book was published nearly four years ago, some of the material is dated. In 2004, PHP 5.0 was still in beta; PHP has reached 5.2 by now, and support for PHP 4 is about to end. Similarly, the book recommends using MySQL 4.0 or 4.1, whereas today MySQL 5.0 is very stable. The book provides an excellent set of appendices that explain how to install and configure Apache httpd, MySQL, and PHP for Linux, Windows, and Mac OS X. Again, these instructions are now dated, but they should still provide a useful guide.</p>
<p>I found the index somewhat frustrating to use; some items I was interested in are not found there. These include:</p>
<ul>
<li><code>@</code>, the error control operator</li>
<li> <code>&amp;</code> and <code>=&amp;</code>, operators used for working with references to variables</li>
<li>reference, the term referring to a variable that is not passed by value</li>
<li><code>define</code>, the function used to create constants</li>
<li>magic constants, such as <code>__FILE__</code>, <code>__LINE__</code>, <code>__FUNCTION__</code>, <code>__CLASS__</code>, and <code>__METHOD__</code></li>
</ul>
<p>I don’t use PHP in my daily work; rather, I use Perl. (Python is the next language I plan to learn, but that’s another story.) I like how PHP has combined arrays and hashes into a single array type. I like PHP’s Boolean values, <code>true</code> and <code>false</code>. And I like how easy it is to embed PHP into HTML; it makes creating a web page dynamically more intuitive than Perl CGI does. But I dislike the inconsistent and ugly naming of many standard functions  (for example, <code>strtoupper</code>, the PHP equivalent of Perl’s <code>uc</code>), and this seems to be a common complaint about PHP. I also don&#8217;t like the large number of global variables and constants that PHP uses.</p>
<p>There is a BioPHP project (PHP for Bioinformatics), at <a href="http://biophp.org/" target="_blank">http://biophp.org/</a>, but it is not as well developed as the <a href="http://bioperl.org/">BioPerl</a> or <a href="http://biopython.org/" target="_blank">BioPython</a> projects. The only large bioinformatics project that I’m aware of that uses PHP is the BioArray Software Environment (<a href="http://base1.thep.lu.se/" target="_blank">BASE</a>) 1.2. <a href="http://base.thep.lu.se/" target="_blank">Version 2.0 of BASE</a> has been completely rewritten in Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/books/book-review-web-database-applications-with-php-and-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Re: Notes to a Young Computational Biologist</title>
		<link>http://sphaerula.com/wordpress/bioinformatics/re-notes-to-a-young-computational-biologist/</link>
		<comments>http://sphaerula.com/wordpress/bioinformatics/re-notes-to-a-young-computational-biologist/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 04:21:57 +0000</pubDate>
		<dc:creator>Conrad Halling</dc:creator>
				<category><![CDATA[Bioinformatics]]></category>
		<category><![CDATA[Biology]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://sphaerula.com/wordpress/bioinformatics/re-notes-to-a-young-computational-biologist/</guid>
		<description><![CDATA[This is a story of how clueless I can be, but how sometimes, given a sufficient number of opportunities, I can become clueful again. On 13 March 2007, Bosco Ho wrote a post entitled “Notes to a Young Computational Biologist” &#8230; <a href="http://sphaerula.com/wordpress/bioinformatics/re-notes-to-a-young-computational-biologist/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is a story of how clueless I can be, but how sometimes, given a sufficient number of opportunities, I can become clueful again.</p>
<p>On 13 March 2007, Bosco Ho wrote a post entitled <a href="http://boscoh.com/protein/notes-to-a-young-computational-biologist" target="_blank">“Notes to a Young Computational Biologist”</a> on his <em><a href="http://boscoh.com/" target="_blank">Trapped in the USA</a></em> blog. I don’t remember how I happened to come across this post the first time, because I wasn’t reading blogs systematically then, but something about this topic clicked in me, and on 25 March I posted a long comment about some things I thought Dr. Ho had omitted.</p>
<p>Time passed, and in October or November, I received an email from a recruiter who wanted to interest me in a bioinformatics or programming job on the West Coast. I couldn&#8217;t figure out where she had heard of me, except that she mentioned in the email that she had seen my name on the boscoh.com web site. This mystified me, because I had forgotten all about the events in March. I did a little poking around on the web site, but I couldn&#8217;t find my own name. So I concluded that she was completely mistaken—that she actually wanted to recruit Bosco Ho but had sent me the email in error—and I decided not to respond.</p>
<p>The benefit of this apparent error was that I learned (for what I thought was the first time) about Dr. Ho’s site, which is full of great writing and useful information. I now work with quite a few scientists who are experts at protein structure, but this is a new field for me because I was trained as a DNA jockey (you know—molecular biology, cloning, sequencing, and all that). <em>Trapped in the USA</em> provided me with additional background reading on protein structure.</p>
<p>At the beginning of this year, I decided it was time to start another web site, so I registered sphaerula.com. One of the things my hosting provider offers is an installation of WordPress, and that’s how I got started blogging. Since mid-February, I have been immersed in reading biology and bioinformatics blogs and writing posts of my own. I&#8217;ve discovered many wonderful blogs, and I discovered <em>Trapped in the USA</em> for the third time.</p>
<p>On weekends, I have been methodically reading blogs from beginning to end. (This is going to take me a long time as I follow the branches from the blogrolls.) When I began reading <em>Trapped in the USA</em>, I rediscovered Dr. Ho’s “Notes to a Young Computational Biologist” post, and I rediscovered my comments.</p>
<p>So in the course of a little more than 11 months, I’ve made a discovery, a rediscovery, and a rerediscovery. The difference is that now I am fully engaged in blogging and in reading blogs, and this time the discovery will stick with me. I know now that Dr. Ho is a widely respected blogger in the bioinformatics blogging community, and I won’t forget it this time.</p>
<p>By the way, if you happen to be that recruiter, I apologize for not responding. I love the West Coast, having grown up in Oregon and earned my Ph.D. at Berkeley. But I have a good job, I love Boston, and I’m not inclined to move. But I’m happy to recommend a talented computational biologist who is named Bosco Ho.</p>
]]></content:encoded>
			<wfw:commentRss>http://sphaerula.com/wordpress/bioinformatics/re-notes-to-a-young-computational-biologist/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

