[Bioperl-l] Smaller Bioperl Modules

Nathan.Watson-Haigh at csiro.au Nathan.Watson-Haigh at csiro.au
Thu Jul 24 02:26:42 EDT 2008

Hi Chris,

It seems that the issue of having "tons of separately installable
mini-bioperl modules" is not an issue at all for anyone at CPAN, not a
problem for end users (as long as dependencies between modules are done
correctly) but maybe/is an issue for dev maintainance:

Anyway, I thought it might be interesting to visualise the network of
dependencies within Bioperl to see if any tight clusters of heavy
connected modules that would be candidates for a separate
"mini-modules". To this end, I'm trying to use Module::ScanDeps in
conjunction with File::Find and GraphViz in order to produce a directed
graph showing the dependencies within a set of modules.

This seems to be working nicely (for a small set of modules e.g.
Bio::AlignIO::*) but I seem to be getting some dependencies that I
didn't expect. So I'm hoping someone might be able to shed light on why
these dependencies might be coming up, or if it's something wrong with

In particular I'm looking at the dependencies of Bio::AlignIO::*
modules. One of the modules (Bio::AlignIO::largemultifasta) is connected
to lots of Bio::SeqIO::* modules and I'm not sure why/how these
dependencies have come about. You can see the dependency graph at
http://www.watsonhaigh.net/img/Bio_AlignIO_deps_graph.png The
Bio::AlignIO::largemultifasta node is towards the right and is the
centre of the radial fan.
Below is my script, in case it helps.


-- start script --

use strict;

use File::Find;
use Module::ScanDeps;
use GraphViz;
use Data::Dumper;

my @module_paths;
my $g = GraphViz->new(
  layout => 'neato',
  overlap => 'scale',

my $dir = $ARGV[0];

print STDERR "Finding module files ... ";
find(\&wanted, $dir);
print STDERR "DONE\n";

sub wanted {
  next unless /\.pm$/;
  push @module_paths, $File::Find::name;

print STDERR "Scanning dependencies ... ";
my $rv = scan_deps(
  files   => \@module_paths,
  recurse => 0,
print STDERR "DONE\n";

foreach my $module ( keys %{$rv} ) {
  delete $rv->{$module} unless $module =~ /^Bio/;

print STDERR "Building dependency graph ... ";
foreach my $module ( keys %{$rv} ) {
  if ( exists$rv->{$module}{'uses'} ) {
    foreach my $uses ( @{$rv->{$module}{'uses'}} ) {
      next unless $uses =~ /^Bio/;
      $g->add_edge($module => $uses);

print STDERR "Printing dependency graph ... ";
print $g->as_png;
print STDERR "DONE\n";

-- end script --

-----Original Message-----
From: Chris Fields [mailto:cjfields at uiuc.edu] 
Sent: Tuesday, 22 July 2008 12:40 PM
To: Watson-Haigh, Nathan (LI, Rock. Rendel)
Cc: bioperl-l at lists.open-bio.org
Subject: Re: [Bioperl-l] Smaller Bioperl Modules

Hi Nat!

We have discussed breaking things up but there was never a full  
consensus on it and I think, in the long run, it would have been too  
hard to convince everyone, particularly the CPAN folk, that it made  
sense to have tons of separately installable mini-bioperl modules.

We do still intend on paring down core to the bare essentials,  
removing as many dependencies as possible, and having a separate tools  
and dev set of modules.  I added a page on the wiki on my proposal for  
the intended split (others have added a few things here and there):


It's worth reviving this discussion again; when I have more time I  
want to spearhead a 1.6 release.


On Jul 21, 2008, at 6:09 PM, <Nathan.Watson-Haigh at csiro.au> wrote:

> Hi all,
> I'm developing a web-based application and it'd be cool to use some
> Bioperl modules. However, I'll be providing my tool for downloaded and
> installation on a web server, so having to ask the sys admin to  
> install
> all of bioperl where I only need a few modules is overkill and is  
> likely
> to cause installation headaches.
> Since I've been out of the loop for quite a while now, I was wondering
> if any decisions had been made about whether or not Bioperl was  
> going to
> be released on CPAN in smaller sets of modules with correct  
> dependencies
> and possibly a Bundle::Bioperl? It'd be nice to have my application,  
> for
> example, depend on Bio::SeqIO, such that only Bio::SeqIO::* and it's
> dependencies are installable through CPAN.
> Cheers,
> Nath
> -------------------------------------------------------------
> Dr. Nathan S. Watson-Haigh        (publish under Haigh, N.S.)
> OCE Post Doctoral Fellow
> CSIRO Livestock Industries
> J M Rendel Laboratory
> Rockhampton
> QLD 4701                              Tel: +61 (0)7 4923 8121
> Australia                             Fax: +61 (0)7 4923 8222
> -------------------------------------------------------------
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioperl-l

Christopher Fields
Postdoctoral Researcher
Lab of Dr. Marie-Claude Hofmann
College of Veterinary Medicine
University of Illinois Urbana-Champaign

More information about the Bioperl-l mailing list