++ed by:

11 PAUSE users
14 non-PAUSE users.

Christopher Fields
and 1 contributors


modules.pl - information about modules in BioPerl core


modules.pl [-V|--verbose] [-c|--count] | [-l|--list] | [-u|--untested] | [-i|--info class] | [-i|--inherit | [-d|--dir path ] | [-v|--version | [-?|-h|--help]


This script counts, lists and provides other information about bioperl modules. It is mainly meant to be run by bioperl maintainers.

The default action is to count modules in the bioperl core distribution. Based on the class name it tries to classify them into categories. The following is a tentative glossary of terms used.


Synonyms: Generic class, parameterized class, generic module.

A class that you don't instantiate in your scripts, but that it's a template for other classes.

Examples: Bio::Tools::Run::WrapperBase - a base object for wrappers around executables. Bio::Tools::Analysis::SimpleAnalysisBase - an abstract superclass for SimpleAnalysis implementations

This are counted with /:Base/ | /Base$/; They have "Base" in the beginning or end of the name.


Synonyms: protocol, feature set.

Class that defines a set of features that are common to a group of classes.

Example: Bio::Tree::NodeI - interface describing a Tree Node.

This are counted with /[^A-Z]I$/; They have "I" at the end of the name.


A class that implements a small subset of their superclass. They are in a directory with an identical name of the superclass. There are plenty of them. You need only a small number of methods to be overridden.

Example: Bio::SeqIO::fasta.

This is counted with /.*:[a-z]/; Classes are inside their base directory and all in lowercase.


The rest of them. It is sometimes helpful to divide them into two types:

Algorithmic classes

Example: Bio::AlignIO - Handler for AlignIO formats

Storage classes

Example: Bio::SimpleAlign - Multiple alignments held as a set of sequences


Only one option is processed on each run of the script. The --verbose is an exception, it modifies the amount of output.

-V | --verbose


Set this option if you want to see more verbose output. Often that will mean seeing warnings normally going into STDERR.

-d | --dir path

Overides the default directories to check by one directory 'path' and all its subdirectories.

-c | --count

The default action if no other option is given. Gives the count of modules broken to instance ("usable"), base ( (abstract)? superclass) , interface (the "I" files) and component (used from instantiable parent) modules, in addition to total number of modules.

Note that abstract superclass in bioperl is not an enforced concept and they are not clearly indicateded in the class name.

-l | --list

Prints all the module names in alphabetical order. The output is a tab separated list of category (see above) and module name per line. The output can be processed with standard UNIX command line tools.

-u | --untested

Prints a list of instance modules which are not explicitly used by test files in the directory. Superclasess or any classes used by others are not reported, either, since their methods are assumed to be tested by subclass tests.

-i | --info class

Dumps information about a class given as an argument.

-i | --inherit

Finds interface modules which inherit from an instantiable class.

Could be extended to check other bad inheritance patterns.

-s | --synopsis

Test SYNOPSIS section of bioperl modules for runnability

-v | --version

Test the VERSION of the module against the global one set in Bio::Root::Variation. Print out the different ones.

-? | -h | --help

This help text.


Mailing Lists

User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to the Bioperl mailing list. Your participation is much appreciated.

  bioperl-l@bioperl.org                  - General discussion
  http://bioperl.org/wiki/Mailing_lists  - About the mailing lists

Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track of the bugs and their resolution. Bug reports can be submitted via the web:



Heikki Lehvaslaiho, heikki-at-bioperl-dot-org


Albert Vilella, avilella-AT-gmail-DOT-com