[BioRuby] Bio-projects comparison

Pjotr Prins pjotr2006 at thebird.nl
Tue Nov 28 06:18:04 UTC 2006

Hi Moses,

What you are saying is that you a clear way of providing interfaces
for a more plug-and-play like environment. In other words with clearly
defined interfaces it should be straightforward to replace an
implementation. With an 'open' language like Ruby you'd have to have
a way to test these interfaces and their implementations. Ruby has
some support (protected methods, introspection), but is also open to
abuse of interfaces. But the real problem is sloppy programming and
moving targets. 

For BioRuby it would make sense to create an 'API' with a well
defined interface for the stable part of the libary. These interfaces
could then be loaded through factories providing the mechanism you
are looking for. Replacing a subset of the library would be trivial.
The default behaviour or BioRuby can be transparent.

The ZOPE3 people provide such an interface mechanism for Python (which
is worse since it is a lot more 'open' than Ruby). They required that
for provide a true component architecture for ZOPE3. It is interesting
to study that.


On Mon, Nov 27, 2006 at 06:51:20PM -0800, Moses M. Hohman wrote:
> Hi Alex,
> Thanks for your thoughtful reply. Ruby's open class definitions are  
> certainly helpful. I think you've made me realize (even more) that  
> I'm not sure what exactly it is I'm proposing. I'll shut up about it  
> until I've thought about it more thoroughly and have a concrete  
> suggestion.
> I certainly understand the allure of being able to install the  
> kitchen sink and not worry about the details. I guess I'd say make  
> that path easy, but allow people to get around it if they want to  
> (which is what you're saying, too, if I understand you). Anyway, I'll  
> think about it some more : )
> Moses
> On Nov 27, 2006, at 5:25 PM, Alex Gutteridge wrote:
> >> I should clarify my point: My concern is not about disk space, but
> >> rather that I might want to be able to select separately which
> >> restriction site library and which sequence manipulation library I
> >> wanted to use. With any openbio project currently it's all or
> >> nothing, so as a result people are not encouraged to develop a better
> >> sequence library, for example (not that I'm complaining specifically
> >> about the sequence library, I'm just giving an example). That is,
> >> because the sequence manipulation part of bioruby is "already
> >> written", no one will write another one. In some ways this is good,
> >> because people can just use existing software, but in other ways this
> >> slows down the pace of innovation. I would imagine someone could
> >> improve on the design of one or two libraries in any of the openbio
> >> projects, but people generally don't. It'd be nice to have some kind
> >> of way of doing this in bioruby, IMHO, something like plugins in
> >> Rails. And, I think this could distinguish bioruby from other openbio
> >> projects.
> >
> > I'm not sure if you're saying there is a psychological barrier to  
> > writing new/replacement BioRuby libraries, or a technical one.  
> > Perhaps I am misunderstanding you, but there is nothing stopping  
> > someone writing a Bio::Sequence (as an example) replacement -  
> > either as a separate class (e.g. Bio::NewSequence), by resetting  
> > the whole Bio::Sequence class, or just redefine individual  
> > Bio::Sequence methods on the fly:
> >
> > [alexg at powerbook]/Users/alexg(10): irb -r bio
> > irb(main):001:0> module Bio; class Sequence; def to_s
> > irb(main):002:3> 'foo'
> > irb(main):003:3> end; end; end
> > => nil
> > irb(main):004:0> bar = Bio::Sequence.new('BAR')
> > => "BAR"
> > irb(main):005:0> bar.to_s
> > => "foo"
> >
> > It can't be made much more plug-in-able than that.
> >
> > If you're talking about a psychological barrier to writing  
> > replacement libraries then I'd have to disagree. Anyone with the  
> > skills to write a new Bio::Sequence class wouldn't/shouldn't be put  
> > off by the fact that there's already one out there. Allowing people  
> > to pick and choose modules to download just makes the process more  
> > complicated for new users. If I've never used BioRuby before, how  
> > do I know whether to get Bio::Sequence or Bio::NewSequence?
> >
> > Dr Alex Gutteridge
> > Post-Doctoral Researcher
> >
> > Bioinformatics Center
> > Institute for Chemical Research
> > Kyoto University
> > Gokasho, Uji, Kyoto 611-0011
> > Japan
> >
> >
> >
> _______________________________________________
> BioRuby mailing list
> BioRuby at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/bioruby

More information about the BioRuby mailing list