Python for Bioinformatics 2nd Edition Sebastian Bassi All Chapters Instant Download
Python for Bioinformatics 2nd Edition Sebastian Bassi All Chapters Instant Download
com
https://ebookfinal.com/download/python-for-
bioinformatics-2nd-edition-sebastian-bassi/
OR CLICK BUTTON
DOWNLOAD EBOOK
https://ebookfinal.com/download/python-for-bioinformatics-chapman-
hall-crc-mathematical-computational-biology-sebastian-bassi/
ebookfinal.com
https://ebookfinal.com/download/python-machine-learning-second-
edition-sebastian-raschka/
ebookfinal.com
https://ebookfinal.com/download/bioinformatics-programming-using-
python-1st-edition-mitchell-l-model/
ebookfinal.com
https://ebookfinal.com/download/black-hat-python-python-programming-
for-hackers-and-pentesters-2nd-edition-justin-seitz-and-tim-arnold/
ebookfinal.com
Clinical Bioinformatics 2nd Edition Ronald Trent (Eds.)
https://ebookfinal.com/download/clinical-bioinformatics-2nd-edition-
ronald-trent-eds/
ebookfinal.com
https://ebookfinal.com/download/raspberry-pi-for-python-programmers-
cookbook-2nd-revised-edition-tim-cox/
ebookfinal.com
https://ebookfinal.com/download/instant-notes-in-bioinformatics-2nd-
edition-charlie-hodgman/
ebookfinal.com
https://ebookfinal.com/download/python-in-easy-steps-covers-
python-3-7-2nd-edition-mike-mcgrath/
ebookfinal.com
https://ebookfinal.com/download/data-mining-for-bioinformatics-1st-
edition-sumeet-dua/
ebookfinal.com
PYTHON FOR
BIOINFORMATICS
SECOND EDITION
CHAPMAN & HALL/CRC
Mathematical and Computational Biology Series
Series Editors
N. F. Britton
Department of Mathematical Sciences
University of Bath
Xihong Lin
Department of Biostatistics
Harvard University
Nicola Mulder
University of Cape Town
South Africa
Mona Singh
Department of Computer Science
Princeton University
Anna Tramontano
Department of Physics
University of Rome La Sapienza
Proposals for the series should be submitted to one of the series editors above or directly to:
CRC Press, Taylor & Francis Group
3 Park Square, Milton Park
Abingdon, Oxfordshire OX14 4RN
UK
Published Titles
An Introduction to Systems Biology: Statistical Methods for QTL Mapping
Design Principles of Biological Circuits Zehua Chen
Uri Alon An Introduction to Physical Oncology:
Glycome Informatics: Methods and How Mechanistic Mathematical
Applications Modeling Can Improve Cancer Therapy
Kiyoko F. Aoki-Kinoshita Outcomes
Computational Systems Biology of Vittorio Cristini, Eugene J. Koay,
Cancer and Zhihui Wang
Emmanuel Barillot, Laurence Calzone, Normal Mode Analysis: Theory and
Philippe Hupé, Jean-Philippe Vert, and Applications to Biological and Chemical
Andrei Zinovyev Systems
Python for Bioinformatics, Second Edition Qiang Cui and Ivet Bahar
Sebastian Bassi Kinetic Modelling in Systems Biology
Quantitative Biology: From Molecular to Oleg Demin and Igor Goryanin
Cellular Systems Data Analysis Tools for DNA Microarrays
Sebastian Bassi Sorin Draghici
Methods in Medical Informatics: Statistics and Data Analysis for
Fundamentals of Healthcare Microarrays Using R and Bioconductor,
Programming in Perl, Python, and Ruby Second Edition
Jules J. Berman Sorin Drăghici
Chromatin: Structure, Dynamics, Computational Neuroscience:
Regulation A Comprehensive Approach
Ralf Blossey Jianfeng Feng
Computational Biology: A Statistical Biological Sequence Analysis Using
Mechanics Perspective the SeqAn C++ Library
Ralf Blossey Andreas Gogol-Döring and Knut Reinert
Game-Theoretical Models in Biology Gene Expression Studies Using
Mark Broom and Jan Rychtář Affymetrix Microarrays
Computational and Visualization Hinrich Göhlmann and Willem Talloen
Techniques for Structural Bioinformatics Handbook of Hidden Markov Models
Using Chimera in Bioinformatics
Forbes J. Burkowski Martin Gollery
Structural Bioinformatics: An Algorithmic Meta-analysis and Combining
Approach Information in Genetics and Genomics
Forbes J. Burkowski Rudy Guerra and Darlene R. Goldstein
Spatial Ecology Differential Equations and Mathematical
Stephen Cantrell, Chris Cosner, and Biology, Second Edition
Shigui Ruan D.S. Jones, M.J. Plank, and B.D. Sleeman
Cell Mechanics: From Single Scale- Knowledge Discovery in Proteomics
Based Models to Multiscale Modeling Igor Jurisica and Dennis Wigle
Arnaud Chauvière, Luigi Preziosi, Introduction to Proteins: Structure,
and Claude Verdier Function, and Motion
Bayesian Phylogenetics: Methods, Amit Kessel and Nir Ben-Tal
Algorithms, and Applications
Ming-Hui Chen, Lynn Kuo, and Paul O. Lewis
Published Titles (continued)
RNA-seq Data Analysis: A Practical Introduction to Bio-Ontologies
Approach Peter N. Robinson and Sebastian Bauer
Eija Korpelainen, Jarno Tuimala, Dynamics of Biological Systems
Panu Somervuo, Mikael Huss, and Garry Wong Michael Small
Introduction to Mathematical Oncology Genome Annotation
Yang Kuang, John D. Nagy, and Jung Soh, Paul M.K. Gordon, and
Steffen E. Eikenberry Christoph W. Sensen
Biological Computation Niche Modeling: Predictions from
Ehud Lamm and Ron Unger Statistical Distributions
Optimal Control Applied to Biological David Stockwell
Models Algorithms for Next-Generation
Suzanne Lenhart and John T. Workman Sequencing
Clustering in Bioinformatics and Drug Wing-Kin Sung
Discovery Algorithms in Bioinformatics: A Practical
John D. MacCuish and Norah E. MacCuish Introduction
Spatiotemporal Patterns in Ecology Wing-Kin Sung
and Epidemiology: Theory, Models, Introduction to Bioinformatics
and Simulation Anna Tramontano
Horst Malchow, Sergei V. Petrovskii, and
The Ten Most Wanted Solutions in
Ezio Venturino
Protein Bioinformatics
Stochastic Dynamics for Systems Anna Tramontano
Biology
Combinatorial Pattern Matching
Christian Mazza and Michel Benaïm
Algorithms in Computational Biology
Statistical Modeling and Machine Using Perl and R
Learning for Molecular Biology Gabriel Valiente
Alan M. Moses
Managing Your Biological Data with
Engineering Genetic Circuits Python
Chris J. Myers Allegra Via, Kristian Rother, and
Pattern Discovery in Bioinformatics: Anna Tramontano
Theory & Algorithms Cancer Systems Biology
Laxmi Parida Edwin Wang
Exactly Solvable Models of Biological Stochastic Modelling for Systems
Invasion Biology, Second Edition
Sergei V. Petrovskii and Bai-Lian Li Darren J. Wilkinson
Computational Hydrodynamics of Big Data Analysis for Bioinformatics and
Capsules and Biological Cells Biomedical Discoveries
C. Pozrikidis Shui Qing Ye
Modeling and Simulation of Capsules Bioinformatics: A Practical Approach
and Biological Cells Shui Qing Ye
C. Pozrikidis
Introduction to Computational
Cancer Modelling and Simulation Proteomics
Luigi Preziosi Golan Yona
PYTHON FOR
BIOINFORMATICS
SECOND EDITION
SEBASTIAN BASSI
MATLAB• is a trademark of The MathWorks, Inc. and is used with permission. The MathWorks does not warrant the
accuracy of the text or exercises in this book. This book’s use or discussion of MATLAB • software or related products
does not constitute endorsement or sponsorship by The MathWorks of a particular pedagogical approach or particular
use of the MATLAB• software.
CRC Press
Taylor & Francis Group
6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742
This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been
made to publish reliable data and information, but the author and publisher cannot assume responsibility for the validity
of all materials or the consequences of their use. The authors and publishers have attempted to trace the copyright
holders of all material reproduced in this publication and apologize to copyright holders if permission to publish in this
form has not been obtained. If any copyright material has not been acknowledged please write and let us know so we may
rectify in any future reprint.
Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized
in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying,
microfilming, and recording, or in any information storage or retrieval system, without written permission from the
publishers.
For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://
www.copyright.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923,
978-750-8400. CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For
organizations that have been granted a photocopy license by the CCC, a separate system of payment has been arranged.
Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for
identification and explanation without intent to infringe.
Acknowledgments xxix
Section I Programming
Chapter 1 Introduction 3
1.1 WHO SHOULD READ THIS BOOK 3
1.1.1 What the Reader Should Already Know 4
1.2 USING THIS BOOK 4
1.2.1 Typographical Conventions 4
1.2.2 Python Versions 5
1.2.3 Code Style 5
1.2.4 Get the Most from This Book without Reading It All 6
1.2.5 Online Resources Related to This Book 7
1.3 WHY LEARN TO PROGRAM? 7
1.4 BASIC PROGRAMMING CONCEPTS 8
1.4.1 What Is a Program? 8
1.5 WHY PYTHON? 10
1.5.1 Main Features of Python 10
1.5.2 Comparing Python with Other Languages 11
1.5.3 How Is It Used? 14
1.5.4 Who Uses Python? 15
1.5.5 Flavors of Python 15
1.5.6 Special Python Distributions 16
1.6 ADDITIONAL RESOURCES 17
vii
viii Contents
Section IV Appendices
Index 417
List of Figures
3.1 Intersection. 60
3.2 Union. 61
3.3 Difference. 61
3.4 Symmetric difference. 62
3.5 Case 1. 65
3.6 Case 2. 66
xvii
xviii LIST OF FIGURES
22.1 Product of Listing 22.2, using the demo dataset (NODBDEMO). 356
xxi
Preface to the First Edition
This book is a result of the experience accumulated during several years of working
for an agricultural biotechnology company. As a genomic database curator, I gave
support to staff scientists with a broad range of bioinformatics needs. Some of them
just wanted to automate the same procedure they were already doing by hand, while
others would come to me with biological problems to ask if there were bioinformat-
ics solutions. Most cases had one thing in common: Programming knowledge was
necessary for finding a solution to the problem. The main purpose of this book is to
help those scientists who want to solve their biological problems by helping them
to understand the basics of programming. To this end, I have attempted to avoid
taking for granted any programming-related concepts. The chosen language for this
task is Python.
Python is an easy-to-learn computer language that is gaining traction among
scientists. This is likely because it is easy to use, yet powerful enough to accomplish
most programming goals. With Python the reader can start doing real programming
very quickly. Journals such as Computing in Science and Engineering, Briefings
in Bioinformatics, and PLOS Computational Biology have published introductory
articles about Python. Scientists are using Python for molecular visualization, ge-
nomic annotation, data manipulation, and countless other applications.
In the particular case of the life sciences, the development of Python has been
very important; the best exponent is the Biopython package. For this reason, Section
II is devoted to Biopython. Anyhow, I don’t claim that Biopython is the solution to
every biology problem in the world. Sometimes a simple custom-made solution may
better fit the problem at hand. There are other packages like BioNEB and CoreBio
that the reader may want to try.
The book begins from the very basic, with Section I (“Programming”), teaching
the reader the principles of programming. From the very beginning, I place a special
emphasis on practice, since I believe that programming is something that is best
learned by doing. That is why there are code fragments spread over the book. The
reader is expected to experiment with them, and attempt to internalize them. There
are also some spare comparisons with other languages; they are included only when
doing so enlightens the current topic. I believe that most language comparisons do
more harm than good when teaching a new language. They introduce information
that is incomprehensible and irrelevant for most readers.
In an attempt to keep the interest of the reader, most examples are somehow
related to biology. In spite of that, these examples can be followed even if the reader
doesn’t have any specific knowledge in that field.
To reinforce the practical nature of this book, and also to use as reference
xxiii
xxiv Preface to the First Edition
The first edition of Python for Bioinformatics was written in 2008 and published
in 2009. Even after eight years, the lessons in this book are still valuable. This is
quite an accomplishment in a field that evolves at such a fast pace. In spite of its
usefulness, the book is showing its age and would greatly benefit from a second
edition.
The predominant Python version is 3.6, although Python 2.7 is still in use in
production systems. Since there are incompatibilities between these versions, lot of
effort was made to make all code in the book Python 3 compatible.
Not only has the software changed in these past eight years, but enterprise atti-
tude and support toward Open Source Software in general and Python in particular
has changed dramatically. There are also new computing paradigms that can’t be
ignored such as collaborative development and cloud computing.
In the original book, Chapter 14 was called “Collaborative Development: Version
Control” and was based on Bazaar, a software that follows the currently used
distributed development workflow but is not what is being used by most developers
today. By far the most software development is done with Git at GitHub. This
chapter was rewritten to focus on current practices.
Web development is another area that changed significantly. Although this is
not a book about web development, the chapter “Web Applications” now reflects
current usage of long-running processes and frameworks instead of CGI/WSGI and
middleware-based applications. Frameworks were discussed as a side note in this
chapter, but now the chapter is based around a framework (Bottle) and leave the
old method as a historical footnote.
In databases, the NoSQL gained lot of traction, from being a bullet point in
the first edition, now has its own section using MongoDB, and a Python recipe
was changed to use this NoSQL database.
Graphical libraries have improved since 2009, and there are great quality com-
peting graphic libraries available for Python. There is a whole chapter devoted to
Bokeh, a free interactive visualization library.
Another change that is reflected in this book is the usage of Anaconda and
Jupyter Notebooks (with all code in a cloud notebook provided by Microsoft
Azure1 ).
1
See https://notebooks.azure.com/py4bio/libraries/py3.us
xxv
xxvi Preface to the Second Edition
A project such as this book couldn’t be done by just one person. For this reason,
there is a long list of people who deserve my thanks. In spite of the fact that the
average reader doesn’t care about the names, and at the risk of leaving someone out,
I would like to acknowledge the following people: my wife Virginia Gonzalez (Vicky)
and my son Maximo Bassi, who had to contend with my virtual absence during
more than a year. Vicky also assisted me in uncountable ways during manuscript
preparation. My parents and professors taught me important lessons. My family
(Oscar, Graciela, and Ramiro) helped me with the English copyediting, along with
Hugo and Lucas Bejar. Vicky, Griselda, and Eugenio also helped by providing a
development abstraction layer, which is needed for writers and developers.
I would like to thank the people in the local Python community (http://www.
python.org.ar): Facundo Batista, Lucio Torre, Gabriel Genellina, John Lenton,
Alejandro J. Cura, Manuel Kaufmann, Gabriel Patiño, Alejandro Weil, Marcelo
Fernandez, Ariel Rossanigo, Mariano Draghi, and Buanzo. I would choose Python
again just for this great community. I also thank the people at Biopython: Jeffrey
Chang, Brad Chapman, Peter Cock, Michiel de Hoon, and Iddo Friedberg. Peter
Cock is specially thanked for his comments on the Biopython chapter. I also thank
Shashi Kumar and Pablo Di Napoli who helped me with the LATEX2ε issues, and
Sunil Nair who believed in me from the first moment. Also people at Globant
who trusted in me, like Guido Barosio, Josefina Chausovsky, Lucas Campos, Pablo
Brenner and Guibert Englebienne. Globant co-workers such as Pedro Mourelle,
Chris DeBlois, Rodrigo Obi-Wan Iloro, Carlos Del Rio and Alejandro Valle. People
at PLOS, Jeffrey Gray and Nick Peterson.
xxix
I
Programming
1
CHAPTER 1
Introduction
CONTENTS
1.1 Who Should Read This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 What the Reader Should Already Know . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Using this Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Python Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Code Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.4 Get the Most from This Book without Reading It All . . . . . . . . . 6
1.2.5 Online Resources Related to This Book . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Why Learn to Program? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Basic Programming Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 What Is a Program? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Why Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.1 Main Features of Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.2 Comparing Python with Other Languages . . . . . . . . . . . . . . . . . . . . . 11
Readability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5.3 How Is It Used? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.4 Who Uses Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.5 Flavors of Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5.6 Special Python Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Amelia Earhart
3
4 Python for Bioinformatics
• The reader should be working (or at least planning to work) with bioinfor-
matics tools. Even low-scale handmade jobs, such as using the NCBI BLAST
to ID a sequence, aligning proteins, primer searching, or estimating a phy-
logenetic tree will be useful to follow the examples. The more familiar the
reader is with bioinformatics, the better he will be able to apply the concepts
learned in this book.
text, it marks a new word or concept. For example “One such fundamental data
structure is a dictionary.”
The content of lines starting with $ (dollar sign) are meant to be typed in your
operating system console (also called command prompt in Windows or terminal
in macOS).
←֓ : Break line. Some lines are longer than the available space in a printed
page, so this symbol is inserted to mean that what is on the next line in the page
represents the same line on the computer screen. Inside code, the symbol used is
<=.
def GetAverage(X):
avG=sum(X)/len(X)
" Calculate the average "
return avG
def get_average(items):
""" Calculate the average
"""
average = sum(items) / len(items)
return average
The former code sample follows most accepted coding styles for Python.2
Throughout the book you will find mostly code formatted as the second sample.
Some code in the book will not follow accepted coding styles for the following
reasons:
• There are some instances where the most didactic way to show a particular
piece of code conflicts with the style guide. On those few occasions, I choose
to deviate from the style guide in favor of clarity.
• Due to size limitation in a printed book, some names were shortened and
other minor drifts from the coding styles have been introduced.
• To show that there is more than one way to write the same code. Coding
style is a guideline, and enforcement is not made at a language level, so some
programmers don’t follow it thoroughly. You should be able to read “bad”
code, since sooner or later you will have to read other people’s code.
1.2.4 Get the Most from This Book without Reading It All
• If you want to learn how to program, read the first section, from Chapter
1 to Chapter 8. The Regular Expressions (REGEX) chapter (Chapter 13) can
be skipped if you don’t need to deal with REGEX.
• If you know Python and just want to know about Biopython, read first
Chapter 9 (from page 158 to page 209). It is about Biopython modules and
functions. Then try to follow programs found in Section III (from page 315
to page 363).
• There are three appendixes that can be read in an independent way. Appendix
A (Collaborative Development: Version Control with GitHub) reproduces a
paper called “A Quick Introduction to Version Control with Git and GitHub.”
Appendix B shows how to install a web application using Python Anywhere.
Appendix C is a reference material that can be used as a cheat sheet when
you need a quick answer without having to read a chapter.
2
The official Python style guide is located at https://www.python.org/dev/peps/pep-0008,
and a more easy-to-read style guide is located at http://docs.python-guide.org/en/latest/
writing/style.
Introduction 7
Not only can it automate the procedures that we do manually, but it will also
be able to do things that would otherwise not be possible.
Sometimes it is not very clear if a particular task can be done by a program.
Reading a book such as this one (including the examples) will help you identify
which tasks are feasible to automate with software and which ones are better done
manually.
Materials
4
There are declarative languages that state what the program should accomplish, rather than
describing how to accomplish it. Most computer languages (Python included) are imperative instead
of declarative.
Introduction 9
Procedure
1 seq_1 = ’Hello,’
2 seq_2 = ’ you!’
3 total = seq_1 + seq_2
4 seq_size = len(total)
5 print(seq_size)
Note: The numbers at the beginning of the each line are for reference only,
they are not meant to be typed.
This small program can be read as “Name the string Hello, as seq_1. Name
the string you! as seq_2. Add the strings named seq_1 and seq_2 and call the
result as total. Get the length of the string called total and name this value as
seq_size. Print the value of seq_size.” This program prints the number 11.
As shown, there are different types of data (often called “data types” or just
“types”). Numbers (integers or float), text string, and other data types are covered
in Chapter 3. In print(seq_size), the instruction is print and seq_size is the
name of the data. Data is often represented as variables. A variable is a name
that stands for a value that may vary during program execution. With variables,
a programmer can represent a generic command like “round n” instead of “round
2.9.” This way he can take into account a non-fixed (hence variable) value. When
10 Python for Bioinformatics
the program is executed, “n” should take a specific value since there is no way to
“round n.” This can be done by assigning a value to a variable or by binding a name
to a value.5 The difference between “assign a value to a variable” and “bind a name
to a value” is explained in detail in Chapter 3 (from page 64). In any case, it is
expressed as:
variable_name = value
seq_1 = ’Hello’
print(seq_1)
This is translated as “print out the value called seq_1”. This command returns
“Hello” because this is the value of this variable.
• Built-in features: Python comes with “batteries included.” It has a rich and
versatile standard library that is immediately available, without the user hav-
ing to download separate packages. With Python you can, with few lines, read
and write XML and JSON files, parse and generate email messages, extract
files from a zip archive, open a URL as if were a file, and many other possi-
bilities that in other languages, it would require a third-party library.
• High-level built-in data structures: Dictionaries, sets, lists, tuples, and others.
These are very useful to model real-world data. Third-party modules such as
NumPy and SciPy can also extend the structures to kd-trees, n-dimensional
arrays, matrix operations, time-series, image objects, and more.
• Open source: Python has a liberal open source license that makes it freely
usable and distributable, even for commercial use.
• Cross platform: A program made in Python can be run under any computer
that has a Python interpreter. This way, a program made under Windows 10
can run unmodified in Linux or OSX. Python interpreters are available for
most computer and operating systems, and even some devices with embedded
computers like the Raspberry Pi.
can be regarded as a tool, and choosing the best tool for the job makes a lot of
sense.
Readability
Nonprofessional programmers tend to value the learning curve as much as the leg-
ibility of the code (both aspects are tightly related).
A simple “hello world” program in Python looks like this:
print("Hello world!")
Let’s see a code sample in C language. The following program reads a file
(input.txt) and copies its contents into another file (output.txt):
#include <stdio.h>
int main(int argc, char **argv) {
FILE *in, *out;
int c;
in = fopen("input.txt", "r");
out = fopen("output.txt", "w");
while ((c = fgetc(in)) != EOF) {
fputc(c, out);
}
fclose(out);
fclose(in);
}
Let’s see a Perl program that calculates the average of a series of numbers:
Introduction 13
sub avg(@_) {
$sum += $_ foreach @_;
return $sum / @_ unless @_ == 0;
return 0;
}
print avg((1..5))."\n";
def avg(data):
if len(data)==0:
return 0
else:
return sum(data)/len(data)
print(avg([1,2,3,4,5]))
The purpose of this Python program could be almost fully understood by just
knowing English.
Python is designed to be a highly readable language.13 The use of English key-
words, and the use of spaces to limit code blocks and its internal logic (indentation),
contribute to this end. It’s possible to write hard-to-read code in Python, but it
requires a deliberate effort to obfuscate the code.14
Speed
Another criterion to consider when choosing a programming language is execution
speed. In the early days of computer programming, computers were so slow that
some differences due to language implementation were very significant. It could take
a week for a program to be executed in an interpreted language, while the same
code in a compiled language could be executed in a day. This performance difference
between interpreted and compiled languages still has the same proportion, but it
is less relevant. This is because a program that took a week to run, now takes less
than ten seconds, while the compiled one takes about one second. Although the
difference seems important (at least one order of magnitude), it is not so relevant
if we consider the time it takes to develop it.
This does not mean that execution speed does not need to be considered. A 10X
speed difference can be crucial in some high-performance computing operations.
Sometimes a lot of improvements can be achieved by writing optimized code. If the
code is written with speed optimization in mind, it is possible to obtain results quite
13
Other languages are regarded as “write only,” since once written it is very difficult to understand
it.
14
A simple print ’Hello World’ program could be written, if you are so inclined, as
print ”.join([chr((L>=65 and L<=122) and (((((L>=97) and (L-96) or (L-64))-
1)+13)%26+((L>=97) and 97 or 65)) or L) for L in [ ord(C) for C in ’Uryyb Jbeyq!’]])
(py3.us/1).
14 Python for Bioinformatics
similar to the ones that could be obtained in a compiled language. In the cases where
the programmer is not satisfied with the speed obtained by Python, it is possible
to link to an external library written in another language (like C or Fortran). This
way, we can get the best of both worlds: the ease of Python programming with the
speed of a compiled language.
Python is gaining momentum as the default computer language for the scien-
tific community. There are several libraries oriented toward scientific users, such as
SciPy18 and Anaconda.19 Both distributions integrate modules for linear algebra,
15
https://www.python.org/about/success/ilm/
16
https://www.python.org/about/success/dlink/
17
http://wiki.services.openoffice.org/wiki/Python
18
https://www.scipy.org
19
https://www.continuum.io/anaconda-overview
Introduction 15
• CPython: The most used Python version, so the terms CPython and Python
are used interchangeably. It is made mostly in C (with some modules made
20
https://cloud.google.com/appengine/
21
https://www.visualstudio.com/vs/python/
22
http://codespeak.net/pypy/dist/pypy/doc/home.html
23
http://www.stackless.com
24
http://www.jython.org/Project
25
http://ironpython.net
16 Python for Bioinformatics
in Python) and is the version that is available from the official Python Web
site (http://www.python.org).
• PyPy: A Python version made in Python. It was conceived to allow program-
mers to experiment with the language in a flexible way (to change Python
code without knowing C). It is mostly an experimental platform.
• Stackless: Another experimental Python implementation. The aim of this im-
plementation doesn’t focus on flexibility like PyPy; instead, it provides ad-
vanced features not available in the “standard” Python version. This is done in
order to overcome some design decisions taken early in Python development
history. Stackless allows custom-designed Python application to scale better
than CPython counterparts. This implementation is being used in the EVE
Online massively multi-player online game, Civilization IV, Second Life, and
Twisted.
• Jython: A Python version written in Java. It works in a JVM (Java Virtual
Machine). One application of Jython is to add the Jython libraries to their
Java system to allow users to add functionality to the application. A very
well known learning 3D programming environment (Alice26 ) uses Jython to
let the users program their own scripts.
• IronPython: Python version adapted by Microsoft to run on “.Net” and
“.Mono” platform. .Net is a technology that competes with Java regarding
“write once, runs everywhere.”
You may be wondering which one to use (or just use the standard “plain vanilla”
Python). There is no single and correct answer to this question, since it will depend
on your needs, work habits, budget, and personal preferences. Personally I tend
to use the standard Python in servers and Anaconda in the computers I use for
software development.
stand and reproduce. Helen Shen. Nature 515, 151–152 (06 November 2014)
doi:10.1038/515151a
https://goo.gl/HfBJ12
Lao Tzu
19
Exploring the Variety of Random
Documents with Different Content
Creswick, Thomas
Critius and Nesiotes
Crivelli, Carlo
Crome, John
Cropsey, J. F.
Crowe, Sir J. A.
Cruikshank, George
Cuyp
Dahl, Hans
Dahl, J. C.
Dahl, Michael
Dallin, Cyrus E.
Dalou, Jules
Damophon
Danby, Francis
Daniell, Thomas
Dannat, William T.
Dannecker, J. H. von
Daubigny, C. F.
Daumier, Honoré
David, Gerard
David, J. L.
David, Pierre Jean
Davis, C. H.
Davis, H. W. B.
De Camp, Joseph
Decamps, A. G.
Degas, H. G. E.
De Haas, M. F. H.
De Keyser, Thomas
Delacroix, F. V. E.
Delaroche, H. (Paul)
Delaunay, Elie
Della Bella, Stefano
Della Colle, Raffaellino
Della Quercia, Jacopo
Della Robbia
De Loutherbourg, P. J.
Demetrius
Desiderio da Settignano
Detaille, J. B. E.
Dewing, T. W.
De Wint, Peter
Diamante, Fra
Diaz, N. V.
Dielmann, Frederick
Diepenbeck, A. van
Dies, C. A.
Dietrich, C. W. E.
Dillens, Julien
Dipoenus and Scyllis
Dobson, William
Dolci, Carlo
Domenichino, Zampieri
Donatello
Doré, L. A. Gustave
Douw, Gerhard
Downman, John
Doyen, G. F.
Doyle, Richard
Drawing
Drouais, J. G.
Dubois, Paul
Du Maurier, G. L. P. B.
Dumont (family)
Dumont, François
Duncan, Thomas
Dupré, Jules
Durand, Asher Brown
Dürer, Albrecht
Duveneck, Frank
Dyce, William
Eakins, Thomas
Earle, Ralph
Earlom, Richard
East, Alfred
Eastlake, Sir C. L.
Eaton, Wyatt
Eckersberg, Kristoffer
Edelinck, Gerard
Eeckhout, G. van den
Effigies, Monumental
Egg, A. L.
Encaustic Painting
Endoeus
Engleheart, George
Engraving
Enneking, J. J.
Etching
Etex, Antoine
Etty, William
Euphranor
Euphronius
Eupompus
Eutychides
Everdingen, Allart van
Eyck, Van
Faed, Thomas
Faithorne, William
Falcone, Aniello
Falconet, E. M.
Falguière, J. A. J.
Fantin-Latour, I. H. T.
Farinato, Paolo
Feltre, Morto da
Fernow, K. L.
Ferrari, Gaudenzio
Ferri, Ciro
Feuerbach, Anselm
Fielding, A. V. Copley
Fildes, Sir Luke
Finden, William
Fiorenzo di Lorenzo
Fiorillo, J. D.
Fisher, Alvan
Flandrin, J. Hippolyte
Flaxman, John
Flinck, Govert
Floris, Frans
Fontana, Lavinia
Fontana, Prospero
Fogelberg, B. E.
Foley, J. H.
Foppa, Vincenzo
Forain, J. L.
Ford, E. Onslow
Forster, François
Fortuny, M. J. M. B.
Foster, M. Birket
Foucquet, Jean
Fragonard, J. H.
Français, F. L.
Franceschi, Piero de’
Franceschini, Baldassare
Francia
Franciabigio
Franck
Francken (family)
Frèmiet, Emmanuel
French, Daniel C.
Frère, P. E.
Fresco
Fresnoy, C. A. du
Frith, W. P.
Fromentin, Eugène
Frost, W. E.
Fruytiers, Philip
Führich, Joseph von
Fuller, George
Furniss, Harry
Furse, C. W.
Fuseli, Henry
Fyt, Johannes
Gaddi (family)
Gainsborough, Thomas
Gallait, Louis
Gauermann, Friedrich
Gaul, G. W.
Gavarni
Gay, Walter
Geddes, Andrew
Geikie, Walter
Genelli, G. B.
Genga, Girolamo
Gentile da Fabriano
Gentileschi, Artemisia and Orazio de’
Gérard, Baron F.
Gérard, J. I. I.
Géricault, J. L. A. T.
Gérôme, Jean Léon
Gervex, Henri
Ghiberti, Lorenzo
Ghirlandajo, Domenico
Ghirlandajo, Ridolfo
Gibson, C. Dana
Gibson, John
Gibson, W. H.
Gifford, R. S.
Gifford, S. R.
Gilbert, Alfred
Gilbert, Sir John
Gillot, Claude
Gillray, James
Giordano, Luca
Giorgione
Giottino
Giotto
Girardon, François
Girodet de Roussy, A. L.
Girtin, Thomas
Giulio Romano
Giunta Pisano
Giusto da Guanto
Gleyre, M. C. G.
Goes, Hugo van der
Goldschmidt, Hermann
Goltzius, Hendrik
Gordon, Sir J. W.
Gouache
Goujon, Jean
Gould, Sir F. C.
Goya y Lucientes, F.
Goyen, J. J. Van
Gozzoli, Benozzo
Grafly, Charles
Granet, F. M.
Grant, Sir Francis
Gray, Henry Peters
Greco, El
Green, Valentine
Greenaway, Kate
Greenough, Horatio
Gregory, Edward John
Greuze, J. B.
Grimaldi, G. F.
Grisaille
Gros, Antoine Jean
Grün, Hans Baldung
Grünewald, Mathias
Guardi, Francesco
Guariento (Guerriero)
Guérin, J. B. P.
Guérin, P. N.
Guido of Siena
Guido Reni
Guillaume, J. B. C. E.
Guthrie, Sir James
Haag, Carl
Haden, Sir F. Seymour
Hals, Frans
Hamerton, P. G.
Hamon, Jean Louis
Harding, Chester
Harding, J. D.
Harpignies, Henri
Harrison, T. A.
Hart, William
Hartley, Jonathan S.
Harvey, Sir George
Hassam, Childe
Haydon, B. R.
Hayter, Sir George
Head, Sir E. W.
Healy, G. P. A.
Heda, Willem Claasz
Heem, Jan Davidsz van
Heemskerk, M. J.
Heim, F. J.
Helst, B. van der
Hemy, C. Napier
Hennequin, P. A.
Henner, J. J.
Henry, E. L.
Herkomer, Sir H. von
Herlen, Fritz
Herrera, Francisco
Hersent, Louis
Hess (family)
Heusch, Willem
Heyden, Jan van der
Hildebrandt, Eduard
Hildebrandt, Theodor
Hilliard, Lawrence
Hilliard, Nicholas
Hilton, William
Hiroshige
Hitchcock, George
Hobbema, Meyndert
Hoefnagel, Joris
Hogarth, William
Hokusai
Holbein, Hans (elder)
Holbein, Hans (younger)
Holl, Frank
Hollar, Wenzel
Holroyd, Sir Charles
Homer, Winslow
Hondecoeter, M. d’
Hone, Nathaniel
Honthorst, Gerard van
Hooch, Pieter de
Hoogstraten, S. D. van
Hook, James Clarke
Hoppner, John
Horsley, J. C.
Hoskins, John
Hosmer, Harriet G.
Hotho, Heinrich G.
Houbraken, Jacobus
Houdon, J. A.
Hovenden, Thomas
Huchtenburg (family)
Humphry, Ozias
Hunt, Alfred William
Hunt, William Henry
Hunt, William Holman
Hunt, William Morris
Huntington, Daniel
Hurlstone, F. Y.
Huysmans (family)
Huysum, Jan van
Illuminated MSS.
Illustration
Impressionism
Ingham, C. C.
Ingres, J. A. D.
Inman, Henry
Inness, George
Isabey, Jean Baptiste
Israëls, Josef
Ivory
Jackson, Mason
Jameson, George
Janssen, Cornelius
Janssens, V. H.
Janssens van Nuyssen, Abraham
Jarvis, J. W.
Joanes, Vicente
Johnson, Eastman
Jordaens, Jacob
Jouvenet, Jean
Kalckreuth, Leopold von
Kauffmann, Angelica
Kaulbach, Wilhelm von
Kay, John
Keene, C. S.
Keller, Albert
Kensett, J. F.
Khnopff, F. E. J. M.
Klinger, Max
Kneller, Sir Godfrey
Knight, D. R.
Knight, John Buxton
Koninck, Philip de
Korin, Ogata
Krafft, Adam
Kyosai, Sho-fu
Laer, Pieter van
La Farge, John
Lafosse, Charles de
Lagrenée, L. J. F.
Lahire, Laurent de
Lambeaux, Jef
Lancret, Nicolas
Landon, C. P.
Landseer, Sir E. H.
Lantara, S. M.
Lanzi, Luigi
Largillière, Nicolas
Lathrop, Francis
La Tour, Quentin de
Lavery, John
Lawrence, Sir Thomas
Lawson, Cecil Gordon
Leader, B. W.
Léandre, C. L.
Lear, Edward
LeBrun, Charles
Leech, John
Legros, Alphonse
Leighton, Baron Frederick
Lejeune, Baron L. F.
Lely, Sir Peter
Lemoyne, J. B.
Le Nain
Lenbach, Franz von
Leochares
Leonardo da Vinci
Leopardo, Alessandro
Leslie, C. R.
Le Sueur, Eustache
Leutze, Emanuel
Lewis, J. F.
Leys, Hendrik
Liebermann, Max
Limousin, Léonard
Line Engraving
Linnell, John
Linton, W. J.
Liotard, J. E.
Lippi
Lockwood, Wilton
Lombardo (family)
Longhi, Pietro
Lotto, Lorenzo
Low, Will Hicok
Lucas, J. Seymour
Leyden, Lucas van
Luini, Bernardino
Lysippus
Lysistratus
Mabuse, Jan
MacCulloch, Horatio
Macdonald, Lawrence
McEntee, Jervis
Maclise, Daniel
MacMonnies, F. W.
Macnee, Sir Daniel
MacNeil, Hermon A.
Madou, J. B.
Madrazo y Kunt, Don F. de
Maes, Nicolas
Makart, Hans
Mander, Carel van
Manet, Edouard
Manson, George
Mantegna, Andrea
Marcantonio
Maris, Jacob
Marochetti, Baron Carlo
Marr, Carl
Martin, Homer Dodge
Martin, John
Martini, Simone
Masaccio
Masolino da Panicale
Mason, G. H.
Matsys, Quintin
Mauve, Anton
May, Phil
Mead, Larkin G.
Meer, Jan van der
Meissonier, J. L. E.
Melanthius
Melchers, Gari
Melozzo da Forli
Melville, Arthur
Memling, Hans
Mena, Pedro de
Mengs, Anthony Raphael
Menzel, A. F. E. von
Mercié, M. J. A.
Merian, Matthew
Méryon, Charles
Metcalf, W. L.
Metsu, Gabriel
Meulen, A. F. van der
Meunier, Constantin
Mezzotint
Michel, Claude
Michelangelo
Michelozzo di Bartolommeo
Micon
Mierevelt, M. J. van
Mieris (family)
Mignard, Pierre
Mignon, Abraham
Milanesi, Gaetano
Millais, Sir J. E.
Miller, William
Millet, Francis Davis
Millet (Milé), Jean François
Millet, Jean François
Miniature
Mino di Giovanni (da Fiesole)
Minor, Robert C.
Models, Artists’
Monet, Claude
Montañes, J. M.
Moore, Albert J.
Moore, Henry
Mora, José
Moran, Edward
Moran, Thomas
Moreau, Gustave
Morelli, Giovanni
Moretto, Il
Morghen, R. S.
Morland, George
Moro, Antonio
Moroni, Giambattista
Mosler, Henry
Mount, W. S.
Mowbray, H. S.
Müller, W. J.
Mulready, William
Munkacsy, Michael von
Murillo, B. E.
Murphy, John Francis
Murray, David
Muziano, Girolamo
Muzzioli, Giovanni
Myron
Nanteuil, Robert
Nasmyth, Alexander
Nast, Thomas
Nattier, J. M.
Navarrete, J. F.
Neal, D. D.
Neer, van der
Netscher, Gaspar
Neuville, Alphonse M. de
Newlyn
Niehaus, C. H.
Nicholson, William
Nicias
Nicomachus
Nollekens, Joseph
Northcote, James
Oberlander, A. A.
Ochtman, Leonard
O’Donovan, W. R.
Oliver, Isaac
Oliver, Peter
Onatas
Opie, John
Orcagna
Orchardson, Sir W. Q.
Orley, Bernard von
Ostade
Oudiné, E. A.
Overbeck, J. F.
Pacchia, Girolamo del, and Pacchiarotto, Jacopo
Pacheco, Francisco
Paeonius
Page, William
Painting
Pajou, Augustin
Palette
Palma, Jacopo
Palmer, E. D.
Palmer, Samuel
Palomino, de Castro y Velasco
Pamphilus
Panaenus
Panorama
Pareja, Juan de
Parmigiano
Parrhasius
Partridge, J. Bernard
Partridge, W. O.
Pasiteles
Pastel
Paton, Sir J. Noel
Paul Veronese
Pausias
Peale, C. W.
Peale, Rembrandt
Pearce, C. S.
Pennell, Joseph
Penni, Gianfrancesco
Perino del Vaga
Perkins, C. C.
Perugino, Pietro
Peruzzi, Baldassare
Petitot, Jean
Petitot, Jean Louis
Pettenkofen, A. von
Pettie, John
Pheidias
Phillip, John
Phillips, Thomas
Picknell, W. L.
Piero di Cosimo
Pigalle, J. B.
Piloty, Karl von
Pinturicchio
Pinwell, G. J.
Piranesi, G. B.
Pisano, Andrea
Pisano, Giovanni
Pisano, Niccola
Pisano, Vittore
Pissarro, Camille
Plimer, Andrew
Plimer, Nathaniel
Plumbago Drawings
Pollaiuolo (family)
Polyclitus
Polygnotus
Pontormo, Jacopo da
Poole, Paul Falconer
Pordenone, Il
Portaels, J. F.
Porter, B. C.
Portraiture
Poster
Potter, Paul
Poussin, Nicolas
Powers, Hiram
Poynter, Sir E. J.
Pradier, James
Pradilla, Francisco
Praxias and Androsthenes
Praxiteles
Predella
Preller, Friedrich
Prieur, Pierre
Prinsep, V. C.
Proctor, A. P.
Protogenes
Prout, Samuel
Prud’hon, Pierre
Puget, Pierre
Puvis de Chavannes
Pythagoras
Pyle, Howard
Raeburn, Sir Henry
Raffaellino del Garbo
Raffet, D. A. M.
Raimbach, Abraham
Ramsay, Allan
Ranger, H. W.
Raoux, Jean
Raphael Sanzio
Raven-Hill, Leonard
Rauch, C. D.
Redgrave, Richard
Regnault, Henri
Regnault, J. B.
Reid, Sir George
Reid, Robert
Reinhart, C. S.
Reinhart, J. C.
Relief
Rembrandt
Remington, Frederick
Renoir, F. A.
Repin, I. J.
Restout, Jean
Rethel, Alfred
Reynolds, Sir Joshua
Rhoecus
Ribera, Giuseppe
Ribot, Théodule
Ricard, L. G.
Ricciarelli, Daniele
Richards, W. T.
Richmond, Sir W. B.
Richter, A. L.
Rietschel, E. F. A.
Rigaud, Hyacinthe
Rimmer, William
Riviere, Briton
Robert, Hubert
Robert, L. L.
Robert-Fleury, J. N.
Roberts, David
Robinson, Theodore
Rodin, Auguste
Rogers, John
Roll, A. P.
Romney, George
Rops, Félicien
Rosa, Salvator
Rosenthal, T. E.
Rosselli, Cosimo
Rossellino, Antonio
Rossetti, D. G.
Roubiliac, L. F.
Rousseau, Jacques
Rousseau, P. E. T.
Rowlandson, Thomas
Rubens, Peter Paul
Rude, François
Runciman, Alexander
Russell, John
Ruysdael, Jacob van
Ryder, A. P.
Ryland, W. W.
Sacchi, Andrea
Saint-Gaudens, Augustus
Sambourne, E. Linley
Sandby, Paul
Sandrart, Joachim von
Sandys, Frederick
Sansovino, Andrea C. del Monte
Sansovino, Jacopo
Santerre, J. B.
Sargent, J. S.
Sarrazin, Jacques
Sartain, John
Satterlee, Walter
Sayer, James
Schadow
Schadow, J. G. and R.
Schalcken, Godfried
Scharf, Sir George
Scheemakers, Peter
Scheffer, Ary
Schetky, J. C.
Schiavonetti, Luigi
Schirmer, Friedrich W.
Schirmer, Johann W.
Schlüter, Andreas
Schnorr von Karolsfeld
Schongauer, Martin
Schreyer, Adolf
Schwanthaler, L. M.
Schwartze, Teresa
Schwind, Moritz von
Scopas
Scott, David
Scott, William Bell
Sculpture
Sebastiano del Piombo
Seddon, Thomas
Segantini, Giovanni
Sequeira, D. A. de
Sergel, Johan Tobias
Severn, Joseph
Shannon, C. H.
Shannon, J. J.
Sharp, William
Shee, Sir M. A.
Sherwin, J. K.
Short, F. J.
Sigalon, Xavier
Signorelli, Luca
Silanion
Simon, Abraham
Simon, Thomas
Simmons, E. E.
Simson, William
Sisley, Alfred
Slodtz, René Michel
Smart, John
Smedley, W. T.
Smillie, J. D.
Smirke, Robert
Smith, Colvin
Smith, John Raphael
Smybert, John
Snyders, Franz
Sodoma, Il
Solario, Antonio
Sorolla y Bastida, J.
Spagna, Lo
Spinello, Aretino
Stanfield, W. C.
Stannard, Joseph
Stark, James
Steen, Jan Havicksz
Steer, P. Wilson
Stevens, Alfred
Stevens, Alfred
Stewart, Julius L.
Stillman, W. J.
Stone, Frank
Stone, Marcus
Stone, Nicholas
Stoss, Veit
Stothard, C. A.
Stothard, Thomas
Strang, William
Strange, Sir Robert
Strongylion
Stuart, Gilbert
Stuck, Franz
Subleyras, Pierre
Sully, Thomas
Swan, J. M.
Taft, Lorado
Tait, A. F.
Tanner, H. O.
Tarbell, Edmund C.
Tempera
Teniers (family)
Tenniel, Sir John
Ter Borch, Gerard
Terra Cotta
Thayer, Abbott H.
Theon of Samos
Thoma, Hans
Thompson, Launt
Thomson, John
Thornhill, Sir James
Thornycroft, W. Hamo
Thorwaldsen, Bertel
Thrasymedes
Tiepolo, G. B.
Tiffany, L. C.
Timanthes
Timomachus
Timotheus
Tintoretto
Tisio, Benvenuto
Tissot, J. J. J.
Titian
Torrigiano, Pietre
Triptych
Troy, J. F. de
Troyon, Constant
Trumbull, John
Tryon, D. W.
Turner, Charles
Turner, J. M. W.
Uhde, F. K. H. Von
Utamaro
Vanderlyn, John
Van der Stappen, C.
Van der Weyden, R.
Vandevelde, Adrian
Vandevelde, William
Van Dyck, Sir Anthony
Vanloo, C. A.
Vanloo, J. B.
Varley, Cornelius
Varley, John
Vasari, Giorgio
Vedder, Elihu
Veit, Philipp
Velazquez, D. R. de Silva y
Verboeckhoven, E. J.
Vereshchagin, V. V.
Verlat, M. M. C.
Vernet (family)
Verrocchio, Andrea del
Vertue, George
Vien, J. M.