[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