[Biojava-l] Re: Biojava-l digest, Vol 1 #776 - 5 msgs

Schreiber, Mark mark.schreiber@agresearch.co.nz
Wed, 9 Oct 2002 09:34:27 +1300


Yup,

It needs fixing, serialization and BioJava just don't seem to play that
well :(

The question is what kind of API. The attractive part about
serialization is that when it works you get back what you started with.
You can also do RMI. The downside of the XML model is you don't get back
what you had before, you get back a MarkovModel, all of your custom
designed methods etc are lost. 

Two ways I can see to get around this. One right a wrapper class that
makes your custom model and the thing returned by the XMLMarkovModel
look the same (look like the same interface generally). The other option
is to mimic something like JAXB (not JAXB though as it won't cope well
with BioJava flyweight symbols and alphabets). Somewhere the class name
is stored in the XML and through the wonders of introspection things are
returned to how they were. This generally requires the class to be
designed as a valid bean, or at least point to a nice FactoryClass or
something.

Ultimately this would be good for all of BioJava. I know people hate the
idea of another XML format but I think that there really isn't one that
represents what we are trying to do here. You could also write XSLT to
transform into XML flavours that aren't as interested in gory details
such as classnames etc which are needed for serialization.

Just my $0.02

- Mark


> -----Original Message-----
> From: Matthew Pocock [mailto:matthew_pocock@yahoo.co.uk] 
> Sent: Wednesday, 9 October 2002 7:08 a.m.
> To: Lachlan Coin; biojava-l@biojava.org
> Subject: Re: [Biojava-l] Re: Biojava-l digest, Vol 1 #776 - 5 msgs
> 
> 
> Hi,
> 
> HMM serialization (or persistance) seems to be an
> ongoing problem for people. We (OK - I) wrote this
> code a long time ago, back in the dark ages when I
> didn't know much about programming. Does anyone want
> to fix this mess once and for all, and write a HMM
> persistance API? It sounds like that would be a realy
> helpfull thing to have.
> 
> Matthew
> 
>  --- Lachlan Coin <lc1@sanger.ac.uk> wrote: > Hi
> > 
> > Having made a mistake in serialising HMMs before -
> > are you writing your
> > serialised object at several points in the code?
> > Unless you write all of
> > the models at the same point, they will not work
> > when you read them back
> > in.
> > 
> > Cheers,
> > 
> > Lachlan
> > 
> > >
> > > Message: 1
> > > Subject: RE: [Biojava-l] Create DP object from
> > profileHMM class file
> > > Date: Tue, 8 Oct 2002 08:53:41 +1300
> > > From: "Schreiber, Mark"
> > <mark.schreiber@agresearch.co.nz>
> > > To: "Tisanai" <T.Krisanathamakul@dcs.shef.ac.uk>,
> > <biojava-l@biojava.org>
> > >
> > > Hi -
> > >
> > > The error is coming from the 64th line of your
> > program (at
> > > T_Zscore.main(T_Zscore.java:64))
> > >
> > > I can see two places that the error might be
> > coming from but I need to
> > > know which line is the 64th line of the program.
> > >
> > > Is it: ProfileHMM model = (ProfileHMM)
> > ois_md.readObject();
> > >
> > > Or is it: dp[i] =
> > DPFactory.DEFAULT.createDP(model);
> > >
> > >
> > >
> > > > -----Original Message-----
> > > > From: Tisanai
> > [mailto:T.Krisanathamakul@dcs.shef.ac.uk]
> > > > Sent: Tuesday, 8 October 2002 2:40 a.m.
> > > > To: biojava-l@biojava.org
> > > > Subject: [Biojava-l] Create DP object from
> > profileHMM class file
> > > >
> > > >
> > > > Hi
> > > >
> > > >    By this code I would like to create DP object
> > from several
> > > > phmm file.
> > > >
> > > >        for(int
> > i=0;i<md_out_lst.align.length;i++){
> > > >         String model_out_name =
> > md_out_lst.align[i];
> > > >         File md_file = new File(model_out_name);
> > > >
> > > >         FileInputStream fis_md = new
> > FileInputStream(md_file);
> > > >         ObjectInputStream ois_md = new
> > ObjectInputStream(fis_md);
> > > >         ProfileHMM model = (ProfileHMM)
> > ois_md.readObject();
> > > >         ois_md.close();
> > > >         dp[i] =
> > DPFactory.DEFAULT.createDP(model);
> > > >        }
> > > >
> > > >    I found that  it always stuck at the second
> > file (i=2). If
> > > > there is only one file in my list this code will
> > work fine.
> > > > But if there is more than one file in the list
> > when it try to
> > > > create the second dp object (dp[1]). This kind
> > of error will
> > > > shown out:
> > > >
> > > >             org.biojava.bio.BioError: State d-15
> > is known in
> > > > states  but is not listed in the transFrom table
> > > > 	at
> > > >
> >
> org.biojava.bio.dp.SimpleMarkovModel.transitionsFrom(SimpleMar
> > > > kovModel.java:227)
> > > > 	at
> > > >
> >
> org.biojava.bio.dp.DP$HMMOrderByTransition.transitionsTo(DP.java:599)
> > > >             at
> > > >
> >
> org.biojava.bio.dp.DP$HMMOrderByTransition.compare(DP.java:586)
> > > > 	at org.biojava.bio.dp.DP.stateList(DP.java:123)
> > > > 	at org.biojava.bio.dp.DP.update(DP.java:353)
> > > > 	at
> >
> org.biojava.bio.dp.onehead.SingleDP.update(SingleDP.java:49)
> > > > 	at org.biojava.bio.dp.DP.<init>(DP.java:377)
> > > > 	at
> >
> org.biojava.bio.dp.onehead.SingleDP.<init>(SingleDP.java:41)
> > > > 	at
> > > >
> >
> org.biojava.bio.dp.DPFactory$DefaultFactory.createDP(DPFactory
> > > .java:53)
> > > > 	at T_Zscore.main(T_Zscore.java:64)
> > > >
> > > >     How can I fix my code?
> > > >
> > > > Thank
> > > > Tisanai
> > > >
> > > > _______________________________________________
> > > > Biojava-l mailing list  -  Biojava-l@biojava.org 
> > > > http://biojava.org/mailman/listinfo/biojava-l
> > > >
> > >
> >
> ==============================================================
> =========
> > > Attention: The information contained in this
> > message and/or attachments
> > > from AgResearch Limited is intended only for the
> > persons or entities
> > > to which it is addressed and may contain
> > confidential and/or privileged
> > > material. Any review, retransmission,
> > dissemination or other use of, or
> > > taking of any action in reliance upon, this
> > information by persons or
> > > entities other than the intended recipients is
> > prohibited by AgResearch
> > > Limited. If you have received this message in
> > error, please notify the
> > > sender immediately.
> > >
> >
> ==============================================================
> =========
> > 
> > _______________________________________________
> > Biojava-l mailing list  -  Biojava-l@biojava.org 
> > http://biojava.org/mailman/listinfo/biojava-l
> 
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page
> from News and Sport to Email and Music Charts 
> http://uk.my.yahoo.com >
_______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org 
> http://biojava.org/mailman/listinfo/biojava-l
> 
=======================================================================
Attention: The information contained in this message and/or attachments
from AgResearch Limited is intended only for the persons or entities
to which it is addressed and may contain confidential and/or privileged
material. Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by persons or
entities other than the intended recipients is prohibited by AgResearch
Limited. If you have received this message in error, please notify the
sender immediately.
=======================================================================