Bring base classes from BioPerl-run back to BioPerl.
[bioperl-live.git] / README.md
blob5b631f94f2ceb48fac973768ad43007a23ae1551
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)
6 # Getting Started
8 Please see the the [INSTALL](http://bioperl.org/INSTALL.html) or [INSTALL.WIN](http://bioperl.org/INSTALL.WIN.html) documents for installation
9 instructions.
11 # About BioPerl
13 BioPerl is a package of public domain Perl tools for computational molecular
14 biology.
16 Our website (http://bioperl.org/) provides an online resource of modules,
17 scripts, and web links for developers of Perl-based software for life science
18 research.
20 # Contact Information
22 * BioPerl mailing list: bioperl-l@bioperl.org
24 * Project website : http://bioperl.org/
26 * Bug reports : https://github.com/bioperl/bioperl-live/issues
28 Please submit bugs, in particular about documentation which you think is
29 unclear, or about problems in installation. We are also very interested in functions which don't work the way you think they do!
31 # The Directory Structure
33 The BioPerl directory structure is organized as follows:
35 * **`Bio/`** - BioPerl modules
37 * **`examples/`** - Scripts demonstrating the many uses of BioPerl
39 * **`ide/`** - Files for developing BioPerl using an IDE
41 * **`maintenance/`** - BioPerl housekeeping scripts
43 * **`models/`** - DIA drawing program generated OO UML for BioPerl classes
44   (these are quite out-of-date)
46 * **`scripts/`** - Useful production-quality scripts with POD documentation
48 * **`t/`** - Perl built-in tests, tests are divided into subdirectories
49   based on the specific classes being tested
51 * **`t/data/`** - Data files used for the tests, provides good example data
53 * **`travis_scripts/`** - script to customize Travis
55 # Documentation
57 For documentation on BioPerl see the **HOWTO** documents online at http://bioperl.org/howtos.
59 Useful documentation in the form of example code can also be found in the
60 **`examples/`** and **`scripts/`** directories. The current collection includes
61 scripts that run BLAST, index flat files, parse PDB structure files, make
62 primers, retrieve ESTs based on tissue, align protein to nucleotide sequence,
63 run GENSCAN on multiple sequences, and much more! See `bioscripts.pod` for a
64 complete listing.
66 Individual `*.pm` modules have their own embedded POD documentation as well. A
67 complete set of hyperlinked POD, or module, documentation is available at
68 http://www.bioperl.org/.
70 Remember that '`perldoc`' is your friend. You can use it to read any file
71 containing POD formatted documentation without needing any type of translator
72 (e.g. '`perldoc Bio::SeqIO`').
74 If you used the Build.PL installation, and depending on your platform, you may
75 have documentation installed as man pages, which can be accessed in the usual
76 way.
78 # Releases
80 BioPerl releases are always available from the website at http://www.bioperl.org/DIST or in CPAN. The latest code can be found at https://github.com/bioperl.
82 * BioPerl currently uses a sematic numbering scheme to indicate stable release
83   series vs. development release series. A release number is a three digit
84   number like `1.2.0`.
85   * The *first digit indicates the major release*, the idea being that all the
86     API calls in a major release are reasonably consistent.
87   * The *second number is the release series*. This is probably the most
88     important number, and represents added functionality that is
89     backwards-compatible.
90   * The *third number is the point or patch release* and represents mainly bug
91     fixes or additional code that doesn't add significant functionality to the
92     code base.
94 From the **1.0 release until the 1.6 release** even numbers (e.g. `1.4`) indicated stable releases. Stable releases were well tested and recommended for most uses. Odd numbers (e.g. `1.3`) were development releases which one would only use if one were interested in the latest features. The final number (e.g. in `1.2.1`) is the point or patch release. The higher the number the more bug fixes has been incorporated. In theory you can upgrade from one point or patch release to the next with no changes to your own code (for production cases, obviously check things out carefully before you switch over).
96 The upcoming **1.7 release** will be the last release series to utilize the alternating 'stable'/'developer' convention. Starting immediately after the final 1.6 branch, we will start splitting BioPerl into several smaller easier-to-manage distributions. These will have independent versions, all likely starting with v1.7.0. **We do not anticipate major API changes in the 1.7.x release series, merely that the code will be restructured in a way to make maintenance more feasible.** We anticipate retaining semantic versioning until the 2.x release.
98 # Caveats and Warnings
100 When you run the tests with `./Build test` some tests may issue warnings messages or even fail. Sometimes this is because we didn't have anyone to test the test system on the combination of your operating system, version of perl, and associated libraries and other modules. Because BioPerl depends on several
101 outside libraries we may not be able to test every single combination so if
102 there are warnings you may find that the package is still perfectly useful.
104 If you install the bioperl-run system and run tests when you don't have the
105 program installed you'll get messages like `program XXX not found, skipping
106 tests`. That's okay, BioPerl is doing what it is supposed to do. If you wanted
107 to run the program you'd need to install it first.
109 Not all scripts in the `examples/` directory are correct and up-to-date. If you find an issue with a script please submit a bug report to https://github.com/bioperl/bioperl-live/issues and consider helping out in their maintenance.
111 If you are confused about what modules are appropriate when you try and solve a
112 particular issue in bioinformatics we urge you to look at HOWTO documents first.
114 # A simple module summary
116 Here is a quick summary of many of the useful modules and how the toolkit is
117 laid out:
119 All modules are in the **`Bio/`** namespace,
121 * **`Perl`** is for *new users*, and gives a functional interface to the main
122   parts of the package.
124 * **`Seq`** is for *Sequences* (protein and DNA).
125     * `Bio::PrimarySeq` is a plain sequence (sequence data + identifiers)
126     * `Bio::Seq` is a fancier `PrimarySeq`, in that it has annotation (via
127     `Bio::Annotation::Collection`) and sequence features (via `Bio::SeqFeatureI` objects, attached via
128     `Bio::FeatureHolderI`).
129     * `Bio::Seq::RichSeq` is all of the above, plus it has slots for extra information specific to GenBank/EMBL/SwissProt files.
130     * `Bio::Seq::LargeSeq` is for sequences which are too big for
131     fitting into memory.
133 * **`SeqIO`** is for *reading and writing Sequences*. It is a front end module
134   for separate driver modules supporting the different sequence formats
136 * **`SeqFeature`** represent *start/stop/strand-based localized annotations (features) of sequences*
137     * **`Bio::SeqFeature::Generic`** is basic catchall
138     * **`Bio::SeqFeature::Similarity`** a similarity sequence feature
139     * **`Bio::SeqFeature::FeaturePair`** a sequence feature which is pairwise
140     such as query/hit pairs
142 * **`SearchIO`** is for *reading and writing pairwise alignment reports*, like
143   BLAST or FASTA
145 * **`Search`** is where the *alignment objects for `SearchIO` are defined*
146     * **`Bio::Search::Result::GenericResult`** is the result object (a blast
147     query is a `Result` object)
148     * **`Bio::Search::Hit::GenericHit`** is the `Hit` object (a query will have
149     0 to many hits in a database)
150     * **`Bio::Search::HSP::GenericHSP`** is the High-scoring Segment Pair
151     object defining the alignment(s) of the query and hit.
153 * **`SimpleAlign`** is for *multiple sequence alignments*
155 * **`AlignIO`** is for *reading and writing multiple sequence alignment
156   formats*
158 * **`Assembly`** provides the start of an *infrastructure for assemblies* and
159   **`Assembly::IO`** *IO converters* for them
161 * **`DB`** is the namespace for *all the database query classes*
162     * **`Bio::DB::GenBank/GenPept`** are two modules which query NCBI entrez for
163       sequences
164     * **`Bio::DB::SwissProt/EMBL`** query various EMBL and SwissProt
165       repositories for a sequences
166     * **`Bio::DB::GFF`** is Lincoln Stein's fast, lightweight feature and
167       sequence database which is the backend to his GBrowse system (see
168       www.gmod.org)
169     * **`Bio::DB::Flat`** is a fast implementation of the OBDA flat-file
170       indexing system (cross-language and cross-platform supported by O|B|F
171       projects see http://obda.open-bio.org).
172     * **`Bio::DB::BioFetch/DBFetch`** for OBDA, Web (HTTP) access to remote
173       databases.
174     * **`Bio::DB::InMemoryCache/FileCache`** (fast local caching of sequences
175       from remote dbs to speed up your access).
176     * **`Bio::DB::Registry`** interface to the OBDA specification for remote
177       data sources
178     * **`Bio::DB::Biblio`** for access to remote bibliographic databases.
179     * **`Bio::DB::EUtilities`** is the initial set of modules used for generic
180       queried using NCBI's eUtils.
182 * **`Annotation`** collection of *annotation objects* (comments, DBlinks,
183   References, and misc key/value pairs)
185 * **`Coordinate`** is a system for *mapping between different coordinate systems*
186   such as DNA to protein or between assemblies
188 * **`Index`** is for *locally indexed flatfiles* with BerkeleyDB
190 * **`Tools`** contains many *miscellaneous parsers and functions* for different
191   bioinformatics needs
192     * Gene prediction parser (Genscan, MZEF, Grail, Genemark)
193     * Annotation format (GFF)
194     * Enumerate codon tables and valid sequences symbols (CodonTable,
195     IUPAC)
196     * Phylogenetic program parsing (PAML, Molphy, Phylip)
198 * **`Map`** represents *genetic and physical map representations*
200 * **`Structure`** - parse and represent *protein structure data*
202 * **`TreeIO`** is for reading and writing *Tree formats*
204 * **`Tree`** is the namespace for **all associated Tree classes**
205     * **`Bio::Tree::Tree`** is the basic tree object
206     * **`Bio::Tree::Node`** are the nodes which make up the tree
207     * **`Bio::Tree::Statistics`** is for computing statistics for a tree
208     * **`Bio::Tree::TreeFunctionsI`** is where specific tree functions are
209       implemented (like `is_monophyletic` and `lca`)
211 * **`Bio::Biblio`** is where *bibliographic data and database access objects*
212   are kept
214 * **`Variation`** represent *sequences with mutations and variations* applied so one can compare and represent wild-type and mutation versions of a sequence.
216 * **`Root`**, basic objects for the *internals of BioPerl*
218 # Upgrading from an older version
220 If you have a previously installed version of BioPerl on your system some of
221 these notes may help you.
223 * Some modules have been removed because they have been superceded by new
224   development efforts. They are documented in the **`DEPRECATED`** file that is
225   included in the release.
227 * Some methods, or the Application Programming Interface (API), have changed or
228   been removed. You may find that scripts which worked with BioPerl 1.4 may give you warnings or may not work at all (although we have tried very hard to
229   minimize this!). Send an email to the list and we'll be happy to give you
230   pointers.