[Biocorba-l] Biocorba IDL

Brad Chapman chapmanb@arches.uga.edu
Thu, 19 Oct 2000 14:37:20 -0400 (EDT)


Alan Robinson wrote:
> > I'm writing a Biocorba server currently (planned to be released next
> > week).

Great! I'm glad to hear someone else is using it. I've been using the
perl and python stuff quite a bit in a project. I'll be really happy
to hear when your server is released, and will also post here when my
stuff is less ugly and more ready for public consumption :-)

> > whilst working with the Biocorba IDL I've come across the
> > following issues
[IDL bugs]

Ugh, these are ugly bugs in the on-line docs. I'll go through and fix
them. Right now the IDLs that come with biopython-corba and
bioperl-corba appear to be free of these errors, so it looks like a
mistake in copying things unto Wiki. Sorry about that, and thanks for
the fixes. Having IDLs in multiple places is a bad thing about
biocorba right now.

Jason:
> I think we need to have a central idl location - previously it has been in
> the bioperl-corba-server cvs module, but I think we need to be less
> project dependent.  I just put in a cvs repository for biocorba called
> biocorba-idls.  

I think this is a great idea! We really do need a central place to
keep the "official" IDL that everyone get to. Then the individual
projects using it will be responsible for synchronizing with this.

back to Alan:
> > Next, there is an inconsistency in variable type: In the BioEnv interface,
> > the methods all define the 'version' variable as being a string. However,
> > the PrimarySeqDB interface defines the database version as a 'short'.

I would be for changing both of these to be 'string' objects, to be
more flexible. Personally, I've been wanting to version my "informal" SeqDB
database using dates.
 
> > The module is defined as org::Biocorba::Seqcore so "we look good in Java".
> > Stylisticly, it should be org::biocorba::seqcore (Java packages are not
> > capitalised, but Java objects are).
> > 
> > However, wouldn't it make more sense for the module to be just "Bio"? Then
> > it would fit better with bioperl and make life easier for C interface
> > users.

Hmmm... I don't know much about the java stuff, but your name change
there sounds fine. I'm not positive if I'm for changing the module
name to be just "Bio" In python, the stubs and skeletons produced by
the IDL compiler would have the name "Bio" and "Bio__POA", which would 
confuse the way I have things set up in the biopython-corba module
right now (I use "Bio" to refer to the set of modules which make
interacting with BioCorba "feel like" interacting directly with
Biopython). Just my input...

> > The BioEnv interface defines methods to fetch a SeqDB by name, but it
> > doesn't allow you to ask what SeqDB names it holds. A 'stringList
> > get_SeqDB_names();' method would be useful here.

+1 for this from me. The BioEnv interface was a really tentative
interface that Ewan put forward based on a suggestion I had when I was 
just learning CORBA. I haven't been using it much (mainly for this
reason, since it doesn't define everything I wanted). Personally, I
could also use a get_SeqDB_names() type function. It would make the
way I'm doing things a lot cleaner.

> > For the iterators, it would be convenient to have a 'reset()' method that
> > takes you back to the first item of the iterator, so that if we want to
> > cycle over the values again, we don't have to re-create the object.

This sounds good, although I don't know about the ease of implementing 
this (I guess I think things could get hairy if you were resetting a
SeqFeature iterator inside of a Seq interator), but the best server
setup right now is the Bioperl one (which I'm not an expert on) so
those guys could probably comment better on this.

> > The only SeqTypes defined are PROTEIN, DNA and RNA. It would be useful to
> > have also CIRCULAR_DNA, CIRCULAR_RNA and XXX (e.g. see Ac#:S47134).

Hmm, shouldn't stuff like CIRCULAR be some sort of feature on the
sequence? I don't have any strong feelings either way on this.

I think it would be good to have an OTHER category, however...

> > The exception "DoesNotExist" is not thrown by any methods of the IDL.

+1 from me for getting rid of it.

> > The following is heading into fluff territory:
> > 
> > In the PrimarySeqDB interface, the methods 'database_name()' and
> > 'database_version()' could be shortened to 'name()' and 'version' for
> > consistency.

+1 on this.

> > In the documentation for the iterators: 
> > 
> >   boolean has_more(); // returns 1 when next_seq will give an object.
> > 
> > Technically '1' is not a boolean. If the method really returns '1', it
> > should be a 'short' being returned.

Agreed that we should be consistent. It looks like the Bioperl,
Biopython and Biojava iterators return 0 and 1, so I guess we should
switch to short in this case.

Thanks again for your comments Alan. Happy to have someone else
working on this!

Brad