[Bioperl-l] Smaller Bioperl Modules

Nathan.Watson-Haigh at csiro.au Nathan.Watson-Haigh at csiro.au
Thu Jul 24 06:26:42 UTC 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:
http://www.perlmonks.org/?node_id=699449

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
Module::ScanDeps.

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.

Cheers,
Nath

-- 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):

http://www.bioperl.org/wiki/Proposed_1.6_core_modules

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

chris

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