1 [![Build Status](https://travis-ci.org/bioperl/bioperl-live.svg?branch=master)](https://travis-ci.org/bioperl/bioperl-live)
2 [![Coverage Status](https://coveralls.io/repos/bioperl/bioperl-live/badge.png?branch=master)](https://coveralls.io/r/bioperl/bioperl-live?branch=master)
3 [![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.16344.svg)](http://dx.doi.org/10.5281/zenodo.16344)
4 [![Documentation Status](https://readthedocs.org/projects/bioperl/badge/?version=latest)](https://readthedocs.org/projects/bioperl/?badge=latest)
8 Please see the the `INSTALL` or `INSTALL.WIN` documents for installation
11 Note that these documents are gradually being migrated to a specific
12 http://readthedocs.org site.
16 BioPerl is a package of public domain Perl tools for computational molecular
19 Our website (http://bioperl.org/) provides an online resource of modules,
20 scripts, and web links for developers of Perl-based software for life science
25 * BioPerl mailing list: bioperl-l@bioperl.org
27 * Project website : http://bioperl.org/
29 * Bug reports : https://github.com/bioperl/bioperl-live/issues
31 Please send us bugs, in particular about documentation which you think is
32 unclear or problems in installation. We are also very interested in functions
33 which don't work the way you think they do!
35 # The directory structure
37 The BioPerl directory structure is organized as follows:
39 * **`Bio/`** - BioPerl modules
41 * **`deobfuscator/`** - Code for tracing OOP relationships
43 * **`examples/`** - Scripts demonstrating the many uses of BioPerl
45 * **`ide/`** - Files for developing BioPerl using an IDE
47 * **`maintenance/`** - BioPerl housekeeping scripts
49 * **`models/`** - DIA drawing program generated OO UML for BioPerl classes
50 (these are quite out-of-date)
52 * **`scripts/`** - Useful production-quality scripts with POD documentation
54 * **`t/`** - Perl built-in tests, tests are divided into subdirectories
55 based on the specific classes being tested
57 * **`t/data/`** - Data files used for the tests, provides good example data
59 * **`travis_scripts/`** - script to customize Travis
63 For documentation on BioPerl see the **HOWTO** documents online at http://www.bioperl.org/wiki/HOWTOs.
65 Useful documentation in the form of example code can also be found in the
66 **`examples/`** and **`scripts/`** directories. The current collection includes
67 scripts that run BLAST, index flat files, parse PDB structure files, make
68 primers, retrieve ESTs based on tissue, align protein to nucleotide sequence,
69 run GENSCAN on multiple sequences, and much more! See `bioscripts.pod` for a
72 Individual `*.pm` modules have their own embedded POD documentation as well. A
73 complete set of hyperlinked POD, or module, documentation is available at
74 http://www.bioperl.org/.
76 Remember that '`perldoc`' is your friend. You can use it to read any file
77 containing POD formatted documentation without needing any type of translator
78 (e.g. '`perldoc Bio::SeqIO`').
80 If you used the Build.PL installation, and depending on your platform, you may
81 have documentation installed as man pages, which can be accessed in the usual
86 BioPerl releases are always available from the website at
87 http://www.bioperl.org/DIST or in CPAN. The latest code can be found at
88 https://github.com/bioperl.
90 * BioPerl currently uses a sematic numbering scheme to indicate stable release
91 series vs. development release series. A release number is a three digit
93 * The *first digit indicates the major release*, the idea being that all the
94 API calls in a major release are reasonably consistent.
95 * The *second number is the release series*. This is probably the most
96 important number, and represents added functionality that is
98 * The *third number is the point or patch release* and represents mainly bug
99 fixes or additional code that doesn't add significant functionality to the
102 * From the **1.0 release until the 1.6 release**, even numbers (`1.0`, `1.2`, etc)
103 indicated stable releases. Stable releases were well tested and recommended
104 for most uses. Odd numbers (`1.1`, `1.3`, etc) were development releases which one
105 would only use if one were interested in the latest and greatest features. The
106 final number (e.g. `1.2.0`, `1.2.1`) is the bug fix release. The higher the number
107 the more bug fixes has been incorporated. In theory you can upgrade from one
108 bug fix release to the next with no changes to your own code (for production
109 cases, obviously check things out carefully before you switch over).
111 * The upcoming **1.7 release** will be the last release series to utilize the
112 alternating 'stable'/'developer' convention. Starting immediately after the
113 final 1.6 branch, we will start splitting BioPerl into several smaller
114 easier-to-manage distributions. These will have independent versions, all
115 likely starting with v1.7.0. **We do not anticipate major API changes in the
116 1.7.x release series*, merely that the code will be restructured in a way to
117 make maintenance more feasible. We anticipate retaining semantic versioning
118 until the **v2.x** release.
120 # Caveats and warnings
122 When you run the tests ("`./Build test`") some tests may issue warnings messages
123 or even fail. Sometimes this is because we didn't have anyone to test the test
124 system on the combination of your operating system, version of perl, and
125 associated libraries and other modules. Because BioPerl depends on several
126 outside libraries we may not be able to test every single combination so if
127 there are warnings you may find that the package is still perfectly useful.
129 If you install the bioperl-run system and run tests when you don't have the
130 program installed you'll get messages like '`program XXX not found, skipping
131 tests`'. That's okay, BioPerl is doing what it is supposed to do. If you wanted
132 to run the program you'd need to install it first.
134 Not all scripts in the `examples/` directory are correct and up-to-date. We need
135 volunteers to help maintain these so if you find they do not submit a bug report
136 to https://github.com/bioperl/bioperl-live/issues and consider helping out in
139 If you are confused about what modules are appropriate when you try and solve a
140 particular issue in bioinformatics we urge you to look at HOWTO documents first.
142 # A simple module summary
144 Here is a quick summary of many of the useful modules and how the toolkit is
147 All modules are in the **`Bio/`** namespace,
149 * **`Perl`** is for *new users*, and gives a functional interface to the main
150 parts of the package.
152 * **`Seq`** is for *Sequences* (protein and DNA).
153 * `Bio::PrimarySeq` is a plain sequence (sequence data + identifiers)
154 * `Bio::Seq` is a fancier `PrimarySeq`, in that it has annotation (via
155 `Bio::Annotation::Collection`) and sequence features (via `Bio::SeqFeatureI` objects, attached via
156 `Bio::FeatureHolderI`).
157 * `Bio::Seq::RichSeq` is all of the above, plus it has slots for extra information specific to GenBank/EMBL/SwissProt files.
158 * `Bio::Seq::LargeSeq` is for sequences which are too big for
161 * **`SeqIO`** is for *reading and writing Sequences*. It is a front end module
162 for separate driver modules supporting the different sequence formats
164 * **`SeqFeature`** represent *start/stop/strand-based localized annotations (features) of sequences*
165 * **`Bio::SeqFeature::Generic`** is basic catchall
166 * **`Bio::SeqFeature::Similarity`** a similarity sequence feature
167 * **`Bio::SeqFeature::FeaturePair`** a sequence feature which is pairwise
168 such as query/hit pairs
170 * **`SearchIO`** is for *reading and writing pairwise alignment reports*, like
173 * **`Search`** is where the *alignment objects for `SearchIO` are defined*
174 * **`Bio::Search::Result::GenericResult`** is the result object (a blast
175 query is a `Result` object)
176 * **`Bio::Search::Hit::GenericHit`** is the `Hit` object (a query will have
177 0 to many hits in a database)
178 * **`Bio::Search::HSP::GenericHSP`** is the High-scoring Segment Pair
179 object defining the alignment(s) of the query and hit.
181 * **`SimpleAlign`** is for *multiple sequence alignments*
183 * **`AlignIO`** is for *reading and writing multiple sequence alignment
186 * **`Assembly`** provides the start of an *infrastructure for assemblies* and
187 **`Assembly::IO`** *IO converters* for them
189 * **`DB`** is the namespace for *all the database query classes*
190 * **`Bio::DB::GenBank/GenPept`** are two modules which query NCBI entrez for
192 * **`Bio::DB::SwissProt/EMBL`** query various EMBL and SwissProt
193 repositories for a sequences
194 * **`Bio::DB::GFF`** is Lincoln Stein's fast, lightweight feature and
195 sequence database which is the backend to his GBrowse system (see
197 * **`Bio::DB::Flat`** is a fast implementation of the OBDA flat-file
198 indexing system (cross-language and cross-platform supported by O|B|F
199 projects see http://obda.open-bio.org).
200 * **`Bio::DB::BioFetch/DBFetch`** for OBDA, Web (HTTP) access to remote
202 * **`Bio::DB::InMemoryCache/FileCache`** (fast local caching of sequences
203 from remote dbs to speed up your access).
204 * **`Bio::DB::Registry`** interface to the OBDA specification for remote
206 * **`Bio::DB::Biblio`** for access to remote bibliographic databases.
207 * **`Bio::DB::EUtilities`** is the initial set of modules used for generic
208 queried using NCBI's eUtils.
210 * **`Annotation`** collection of *annotation objects* (comments, DBlinks,
211 References, and misc key/value pairs)
213 * **`Coordinate`** is a system for *mapping between different coordinate systems*
214 such as DNA to protein or between assemblies
216 * **`Index`** is for *locally indexed flatfiles* with BerkeleyDB
218 * **`Tools`** contains many *miscellaneous parsers and functions* for different
220 * Gene prediction parser (Genscan, MZEF, Grail, Genemark)
221 * Annotation format (GFF)
222 * Enumerate codon tables and valid sequences symbols (CodonTable,
224 * Phylogenetic program parsing (PAML, Molphy, Phylip)
226 * **`Map`** represents *genetic and physical map representations*
228 * **`Structure`** - parse and represent *protein structure data*
230 * **`TreeIO`** is for reading and writing *Tree formats*
232 * **`Tree`** is the namespace for **all associated Tree classes**
233 * **`Bio::Tree::Tree`** is the basic tree object
234 * **`Bio::Tree::Node`** are the nodes which make up the tree
235 * **`Bio::Tree::Statistics`** is for computing statistics for a tree
236 * **`Bio::Tree::TreeFunctionsI`** is where specific tree functions are
237 implemented (like `is_monophyletic` and `lca`)
239 * **`Bio::Biblio`** is where *bibliographic data and database access objects*
242 * **`Variation`** represent *sequences with mutations and variations* applied so
243 one can compare and represent wild-type and mutation versions of a sequence.
245 * **`Root`**, basic objects for the *internals of BioPerl*
247 # Upgrading from an older version
249 If you have a previously installed version of BioPerl on your system some of
250 these notes may help you.
252 * Some modules have been removed because they have been superceded by new
253 development efforts. They are documented in the **`DEPRECATED`** file that is
254 included in the release.
256 * Some methods, or the Application Programming Interface (API), have changed or
257 been removed. You may find that scripts which worked with BioPerl 1.4 may give
258 you warnings or may not work at all (although we have tried very hard to
259 minimize this!). Send an email to the list and we'll be happy to give you