From simon.brocklehurst@CambridgeAntibody.com Tue Jan 2 09:46:04 2001 Date: Tue, 02 Jan 2001 09:46:04 +0000 From: Simon Brocklehurst simon.brocklehurst@CambridgeAntibody.com Subject: [Biojava-l] sample code information is needed
--------------23F614E67502A1A1601790DB
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit



Bruce Ling wrote:

>  Hi,I am a new user for bio java.  I have poked around the biojava
> code for a while and obviously I need some help.Is it possible that
> someone can provide some sample code for 1. parsing the blast file and
> HMMER output file2. parsing and transformation of XML file.One general
> comment: bioperl seems to have more functionality than biojava.  Has
> biojava thought about converting most of the bioperl functionality
> into java?

Bruce,

I'm on to this.  Should have tutorial stuff for this later this week.

Simon
--
Simon M. Brocklehurst, Ph.D.
Head of Bioinformatics & Advanced IS
Cambridge Antibody Technology
The Science Park, Melbourn, Cambridgeshire, UK
http://www.CambridgeAntibody.com/
mailto:simon.brocklehurst@CambridgeAntibody.com


--------------23F614E67502A1A1601790DB
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
&nbsp;
<p>Bruce Ling wrote:
<blockquote TYPE=CITE>&nbsp;<span 
class=164211507-25122000><font face="Arial"><font size=-1>Hi,</font></font></span><span 
class=164211507-25122000></span><span class=164211507-25122000><font face="Arial"><font size=-1>I
am a new user for bio java.&nbsp; I have poked around the biojava code
for a while and obviously I need some help.</font></font></span><span 
class=164211507-25122000></span><span class=164211507-25122000><font face="Arial"><font size=-1>Is
it possible that someone can provide some sample code for&nbsp;</font></font></span><span 
class=164211507-25122000></span><span class=164211507-25122000><font face="Arial"><font size=-1>1.
parsing the blast file and HMMER output file</font></font></span><span class=164211507-25122000><font face="Arial"><font size=-1>2.
parsing and transformation of XML file.</font></font></span><span class=164211507-25122000><font face="Arial"><font size=-1>One
general comment: bioperl seems to have more functionality than biojava.&nbsp;
Has biojava thought about converting most of the bioperl functionality
into java?</font></font></span></blockquote>
Bruce,
<p>I'm on to this.&nbsp; Should have tutorial stuff for this later this
week.
<p>Simon
<br>--
<br>Simon M. Brocklehurst, Ph.D.
<br>Head of Bioinformatics &amp; Advanced IS
<br>Cambridge Antibody Technology
<br>The Science Park, Melbourn, Cambridgeshire, UK
<br><A HREF="http://www.CambridgeAntibody.com/">http://www.CambridgeAntibody.com/</A>
<br><A HREF="mailto:simon.brocklehurst@CambridgeAntibody.com">mailto:simon.brocklehurst@CambridgeAntibody.com</A>
<br>&nbsp;</html>

--------------23F614E67502A1A1601790DB--


From td2@sanger.ac.uk Tue Jan 2 08:52:00 2001 Date: Tue, 02 Jan 2001 08:52:00 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Biojava To-do
Emig, Robin wrote:

> 	Not that I don't like mailing lists, but any chance we can put up a
> web page where we can add "to do" lists? I'm thinking something along the
> lines of a source forge type of thing at bioinformatics.org.
> 
We've already got a Wiki section on the BioJava web site -- that might 
work okay, so let's try having a BiojavaTodo page and adding items 
there.  It might also be worth having a separate `stack' page listing 
items which are being worked on right now.

I can't create this myself right now since I've forgotten the password 
for the wiki, and most of my old mail is on a disk in a machine which 
currently lacks a power supply (*sigh*), but I'll put it up tommorow if 
nobody else has done so by then.

Happy hacking,

  Thomas.


From birney@ebi.ac.uk Tue Jan 2 12:13:58 2001 Date: Tue, 2 Jan 2001 12:13:58 +0000 (GMT) From: Ewan Birney birney@ebi.ac.uk Subject: [Biojava-l] Biojava To-do
On Tue, 2 Jan 2001, Thomas Down wrote:

> Emig, Robin wrote:
> 
> > 	Not that I don't like mailing lists, but any chance we can put up a
> > web page where we can add "to do" lists? I'm thinking something along the
> > lines of a source forge type of thing at bioinformatics.org.
> > 
> We've already got a Wiki section on the BioJava web site -- that might 
> work okay, so let's try having a BiojavaTodo page and adding items 
> there.  It might also be worth having a separate `stack' page listing 
> items which are being worked on right now.
> 
> I can't create this myself right now since I've forgotten the password 
> for the wiki, and most of my old mail is on a disk in a machine which 
> currently lacks a power supply (*sigh*), but I'll put it up tommorow if 
> nobody else has done so by then.

username wiki, password wicked.




> 
> Happy hacking,
> 
>   Thomas.
> 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l
> 

-----------------------------------------------------------------
Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
<birney@ebi.ac.uk>. 
-----------------------------------------------------------------


From td2@sanger.ac.uk Tue Jan 2 10:55:44 2001 Date: Tue, 02 Jan 2001 10:55:44 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Biojava To-do
Thomas Down wrote:

>> 
> We've already got a Wiki section on the BioJava web site -- that 
> might  work okay, so let's try having a BiojavaTodo page and adding 
> items  there.  It might also be worth having a separate `stack' page 
> listing  items which are being worked on right now. 

Thanks to Ewan, we now have:

   http://www.biojava.org/wiki/html/BioJava/BioJavaTodo.html
Please edit this with more entries, especially in the `Long term 
features' section.

   Thomas.


PS. Wiki experts: the following entry doesn't behave as expected:

  <ul>
   <li>ThisShouldAppearAsWikiLink</li>
  </ul>

This doesn't give a link.  If, however, I insert spaces between the HTML 
tags and the WikiName, we get a link as expected.  Strange...


From birney@ebi.ac.uk Tue Jan 2 15:15:26 2001 Date: Tue, 2 Jan 2001 15:15:26 +0000 (GMT) From: Ewan Birney birney@ebi.ac.uk Subject: [Biojava-l] Biojava To-do
On Tue, 2 Jan 2001, Thomas Down wrote:

> Thomas Down wrote:
> 
> >> 
> > We've already got a Wiki section on the BioJava web site -- that 
> > might  work okay, so let's try having a BiojavaTodo page and adding 
> > items  there.  It might also be worth having a separate `stack' page 
> > listing  items which are being worked on right now. 
> 
> Thanks to Ewan, we now have:
> 
>    http://www.biojava.org/wiki/html/BioJava/BioJavaTodo.html
> Please edit this with more entries, especially in the `Long term 
> features' section.
> 
>    Thomas.
> 
> 
> PS. Wiki experts: the following entry doesn't behave as expected:
> 
>   <ul>
>    <li>ThisShouldAppearAsWikiLink</li>
>   </ul>

You should be going

   * ThisShouldAppearAsWikiLink
       * ThisIsANestedLink

Wiki likes spaces ;)

> 
> This doesn't give a link.  If, however, I insert spaces between the HTML 
> tags and the WikiName, we get a link as expected.  Strange...
> 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l
> 

-----------------------------------------------------------------
Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
<birney@ebi.ac.uk>. 
-----------------------------------------------------------------


From mrp@sanger.ac.uk Wed Jan 3 12:59:00 2001 Date: Wed, 03 Jan 2001 12:59:00 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] GappedSymbolList
Hi Robin,

Problem re-created and fixed here. We have altered TokenParser and the demo -
they both do prety much what is expected now  (at least no crashes).

Tell us if this doesn't work for you.

Matthew

"Emig, Robin" wrote:

> it still doesn't fix the parsing problem for protein, check out
> TestAmbiguity I add code to test some of the protein alphabet
> -Robin
>
> -----Original Message-----
> From: biojava-l-admin@biojava.org [mailto:biojava-l-admin@biojava.org]On
> Behalf Of Matthew Pocock
> Sent: Wednesday, December 20, 2000 9:50 AM
> To: Emig, Robin; 'biojava-l@biojava.org'
> Subject: Re: [Biojava-l] GappedSymbolList
>
> I have checked in a new AlphabetManager.xml that should fix the symptom but
> not
> the cause. I think there is an 'issue' in either SimpleAlphabet or
> TokenParser.
> If this new file doesn't fix your problem, I will chase up the proper fix.
>
> Matthew
>
> Matthew Pocock wrote:
>
> > Hi Robin,
> >
> > "Emig, Robin" wrote:
> >
> > >         Ok, I'm a little confused about how to actually use a
> > > gappedsymbollist. I can add gaps just fine but what If I wanted to print
> > > out?
> > > ACGT------AHXXHFF
> >
> > You should be able to get this output by calling seqString on the gapped
> > instance. The gap symbol has a getToken method that returns '-'.
> >
> > >
> > >         I have no idea how to do that. Also, the parsers don't
> understand
> > > the GapSymbol, ie you can add it to the alphabet, but you cant parse
> '-'.
> >
> > This is odd. Could you try the symbol.TestAmbiguity demo? It works for me
> and
> > includes a parsed gap character. I am guessing that your sequence is
> protein
> > - mabey something is up with how SimpleAlphabet is implemented but is
> masked
> > for DNA (somehow...).
> >
> > Matthew
> >
> > >
> > > -Robin
> > > _______________________________________________
> > > Biojava-l mailing list  -  Biojava-l@biojava.org
> > > http://biojava.org/mailman/listinfo/biojava-l
> >
> > _______________________________________________
> > Biojava-l mailing list  -  Biojava-l@biojava.org
> > http://biojava.org/mailman/listinfo/biojava-l
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From td2@sanger.ac.uk Wed Jan 3 13:26:42 2001 Date: Wed, 3 Jan 2001 13:26:42 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] A little more tutorial
I've just uploaded another tutorial section to the website --
follow the `Tutorials' link from the menu on the home page.

This section covers the aims and basic operation of the new
Sequence I/O framework.  It still needs a little more work,
but hopefully someone will find it helpful.  I'm also working
on a second section, covering the `guts' of the framework
(SeqIOListener, SymbolParser, etc) -- that should be available
in the next few days.

Happy hacking (or documenting!),

   Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Wed Jan 3 16:02:36 2001 Date: Wed, 3 Jan 2001 16:02:36 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] sample code information is needed
On Mon, Dec 25, 2000 at 11:11:29PM -0800, Bruce Ling wrote:
> 
> One general comment: bioperl seems to have more functionality than biojava.
> Has biojava thought about converting most of the bioperl functionality into
> java?

That's true (although, to be fair, there is also functionality
in BioJava which bioperl doesn't do yet).  We ought to be able
to port the code for some of this missing functionality pretty
easily -- seems like a logical task to have running in the
background at the bootcamp (planned for a couple of months'
time).

Of course, if anyone wants to start converting their favourite
perl modules before then, that's fine too...

    Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From birney@ebi.ac.uk Wed Jan 3 16:28:28 2001 Date: Wed, 3 Jan 2001 16:28:28 +0000 (GMT) From: Ewan Birney birney@ebi.ac.uk Subject: [Biojava-l] sample code information is needed
On Wed, 3 Jan 2001, Thomas Down wrote:

> On Mon, Dec 25, 2000 at 11:11:29PM -0800, Bruce Ling wrote:
> > 
> > One general comment: bioperl seems to have more functionality than biojava.
> > Has biojava thought about converting most of the bioperl functionality into
> > java?
> 
> That's true (although, to be fair, there is also functionality
> in BioJava which bioperl doesn't do yet).  We ought to be able
> to port the code for some of this missing functionality pretty
> easily -- seems like a logical task to have running in the
> background at the bootcamp (planned for a couple of months'
> time).

Also the BioCorba framework can provide/or can be extended to cover more
functionality from bioperl into biojava...

> 
> Of course, if anyone wants to start converting their favourite
> perl modules before then, that's fine too...
> 
>     Thomas.
> -- 
> ``If I was going to carry a large axe on my back to a diplomatic
> function I think I'd want it glittery too.''
>            -- Terry Pratchett
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l
> 

-----------------------------------------------------------------
Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420
<birney@ebi.ac.uk>. 
-----------------------------------------------------------------


From mrp@sanger.ac.uk Wed Jan 3 21:32:21 2001 Date: Wed, 03 Jan 2001 21:32:21 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] New tutorial!
Hi.

I spent today writing a couple of examples of the Changeability AIP. You
should be able to find them linked to from the tutorials page at
http://biojava.org/tutorial/index.html

As always, all comments (positive & negative) apreciated.

Matthew


From td2@sanger.ac.uk Thu Jan 4 11:30:13 2001 Date: Thu, 4 Jan 2001 11:30:13 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] JAXP 1.1
People using BioJava and XML might be interested to know
that there's now an LGPLed implementation of JAXP1.1
(note: JAXP is just the compatibility layer for pluggable
XML parsers -- not a parser implementation in it's own
right).  This potentially opens the way for us to move
back to using pluggable parsers in the BioJava core.

I'd guess that it's probably not worth making this change
before 1.1 now (is anyone out there unhappy about BioJava
being tied to Xerces-J?), but it could be a worthwhile
move in the future.

If you want to see the code, try:

  http://oje.sourceforge.net/

Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From simon.brocklehurst@CambridgeAntibody.com Mon Jan 8 13:08:58 2001 Date: Mon, 08 Jan 2001 13:08:58 +0000 From: Simon Brocklehurst simon.brocklehurst@CambridgeAntibody.com Subject: [Biojava-l] Blast-like parsing tutorial
Dear All,

The first end-user blast-like parsing tutorial is now up on the biojava
web site (see the tutorials section).  Remember, you need to be using
biojava-live to access this functionality.  Example code and example
data to use with demos in the demo section.

More to follow, but it's a start...

Simon
--
Simon M. Brocklehurst, Ph.D.
Head of Bioinformatics & Advanced IS
Cambridge Antibody Technology
The Science Park, Melbourn, Cambridgeshire, UK
http://www.CambridgeAntibody.com/
mailto:simon.brocklehurst@CambridgeAntibody.com



From td2@sanger.ac.uk Mon Jan 8 12:49:03 2001 Date: Mon, 8 Jan 2001 12:49:03 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Blast-like parsing tutorial
On Mon, Jan 08, 2001 at 01:08:58PM +0000, Simon Brocklehurst wrote:
> Dear All,
> 
> The first end-user blast-like parsing tutorial is now up on the biojava
> web site (see the tutorials section).  Remember, you need to be using
> biojava-live to access this functionality.  Example code and example
> data to use with demos in the demo section.

Looks good!

I make that four new tutorial sections in the last week -- looks
like things are really taking off...

   Thomas.

From mrp@sanger.ac.uk Mon Jan 8 13:00:46 2001 Date: Mon, 08 Jan 2001 13:00:46 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Blast-like parsing tutorial
Thanks Simon for a great tutorial. I am glad that the tutorials page is
tarting to look less spartan.

If any of you feel that there are areas missing from the tutorials
entirely, then please tell us - and we may even write it up for you.

Matthew

Simon Brocklehurst wrote:

> Dear All,
>
> The first end-user blast-like parsing tutorial is now up on the biojava
> web site (see the tutorials section).  Remember, you need to be using
> biojava-live to access this functionality.  Example code and example
> data to use with demos in the demo section.
>
> More to follow, but it's a start...
>
> Simon
> --
> Simon M. Brocklehurst, Ph.D.
> Head of Bioinformatics & Advanced IS
> Cambridge Antibody Technology
> The Science Park, Melbourn, Cambridgeshire, UK
> http://www.CambridgeAntibody.com/
> mailto:simon.brocklehurst@CambridgeAntibody.com
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From kdj@sanger.ac.uk Mon Jan 8 13:45:35 2001 Date: 08 Jan 2001 13:45:35 +0000 From: Keith James kdj@sanger.ac.uk Subject: [Biojava-l] org.biojava.bio.search interfaces
Hi,

I've made some progress on Fasta search output parsing to the extent
that I'm happy with the initial design and implementation and I'm
about to write a demo application to debug it.

In order to comply with the existing interfaces the parser must be
able to resolve the query sequence id (in the search output file) to a
SymbolList instance and the database filename (also in the search
output file) to a SequenceDB instance. (See the getQuerySequence(),
getSequenceDB() and getSearcher() methods in
SeqSimilaritySearchResult). At the moment I've achieved this by using
a SequenceDB to hold the query sequences while the parsing takes place
and a SequenceDBInstallation to resolve the database.

In doing this I've had some difficulties with the interfaces, most of
which were caused by my inexperience with Java, but some which appear
to be issues with the interface design. Specifically, the
SeqSimilaritySearchResult, Hit and SubHit implementations are required
to contain circular references (Result->List->Hit and Hit->Result,
Hit->List->SubHit and SubHit->Hit).

>From my experience with using other search parsers it's quite rare
that a one needs to refer from a SubHit back up the hierarchy. I think
that the interfaces would be better off without this requirement. (The
SimpleSeqSimilaritySearch classes can't be instantiated because of
this; they create immutable objects by passing all properties to the
constructor. There is a chicken-egg situation where each needs the
other to be instantiated first.)

I would be interested in what folks think of removing
getSearchResult() from Interface SeqSimilaritySearchHit and getHit()
from Interface SeqSimilaritySearchSubHit? (Or in fact, hearing of neat
tricks which are made possible by retaining those methods.)

By the way, thanks to the authors of the tutorials.

cheers,

-- 

-= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =-
The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA

From td2@sanger.ac.uk Mon Jan 8 13:59:26 2001 Date: Mon, 8 Jan 2001 13:59:26 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] org.biojava.bio.search interfaces
On Mon, Jan 08, 2001 at 01:45:35PM +0000, Keith James wrote:
> 
> I've made some progress on Fasta search output parsing to the extent
> that I'm happy with the initial design and implementation and I'm
> about to write a demo application to debug it.

Cool...

> In doing this I've had some difficulties with the interfaces, most of
> which were caused by my inexperience with Java, but some which appear
> to be issues with the interface design. Specifically, the
> SeqSimilaritySearchResult, Hit and SubHit implementations are required
> to contain circular references (Result->List->Hit and Hit->Result,
> Hit->List->SubHit and SubHit->Hit).

Oookay, this does look like a problem, at least with the
Simple* implementations.  I must admit that I'd tend towards
removing the SeqSimilaritySearchSubHit.getHit() method.  Gerald,
are you still around?  Are there any objections to this?

It certainly seems worth a try to get a working implementation.

> By the way, thanks to the authors of the tutorials.

Fancy writing a tutorial for the bio.search package, once you've
got things working? ;)

Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From kdj@sanger.ac.uk Mon Jan 8 18:22:23 2001 Date: 08 Jan 2001 18:22:23 +0000 From: Keith James kdj@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
I have a question re. objects designed to be immutable under all
circumstances and yet implementing Changeable.

e.g. I wanted FastaSearchResult to be immutable but also to implement
Annotatable (the search header contains a lot of fairly loosely
formatted, but worthwhile data). This means that it has to implement
add/removeChangeListener.

I suppose I could implement the methods as stubs which do nothing.
I've seen this elsewhere in Biojava, I think. As the methods return
nothing and can't throw exceptions I guess this should work. However
is it good that someone who uses these methods (and is therefore
expecting the object to change) should be able to add/remove a
Listener? Or think that they had, when in fact nothing had happened.

As the methods are not allowed to throw exceptions, how can you
politely say "Are you sure you want to listen for changes - this
object is immutable" ?

-- 

-= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =-
The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA

From tmo@ebi.ac.uk Mon Jan 8 18:47:59 2001 Date: Mon, 08 Jan 2001 18:47:59 +0000 From: Tom Oinn tmo@ebi.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
Keith James wrote:
> 
> I have a question re. objects designed to be immutable under all
> circumstances and yet implementing Changeable.

<snip>

> As the methods are not allowed to throw exceptions, how can you
> politely say "Are you sure you want to listen for changes - this
> object is immutable" ?

In this case it's likely to be an error in the application code isn't
it? You can always throw a RuntimeException of some kind in this case.
It's not very 'polite' but you wouldn't expect it to every appear in a
finished application, it would only do so if there were errors I would
have thought. 

Tom

--
This ant has performed an illegal operation 
and must now explode violently.

From td2@sanger.ac.uk Mon Jan 8 19:42:31 2001 Date: Mon, 8 Jan 2001 19:42:31 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
On Mon, Jan 08, 2001 at 06:22:23PM +0000, Keith James wrote:
> 
> I have a question re. objects designed to be immutable under all
> circumstances and yet implementing Changeable.
> 
> e.g. I wanted FastaSearchResult to be immutable but also to implement
> Annotatable (the search header contains a lot of fairly loosely
> formatted, but worthwhile data). This means that it has to implement
> add/removeChangeListener.
> 
> I suppose I could implement the methods as stubs which do nothing.
> I've seen this elsewhere in Biojava, I think. As the methods return
> nothing and can't throw exceptions I guess this should work. However
> is it good that someone who uses these methods (and is therefore
> expecting the object to change) should be able to add/remove a
> Listener? Or think that they had, when in fact nothing had happened.

I don't see a problem here at all.  If you call addChangeListener
on any Changable, you're asking to be notified if that object
ever changes.  If it happens to be an immutable implementation,
then it's fine to make addChangeListener a stub method -- for
the specific case of an immutable object a stub method will
fully comply with the contract.

> As the methods are not allowed to throw exceptions, how can you
> politely say "Are you sure you want to listen for changes - this
> object is immutable" ?

No, please don't get into this.  We've got lots of interfaces
where both mutable an immutable implementations are potentially
useful.  Code can add ChangeListeners if they're worried about
the object changing during some kind of computation (often, you
just want the simplest case of locking an object be adding
an ALWAYS_VETO listener).  As soon as you start complaining
when someone tries an addChangeListener on an immutable object,
then client code has to know what the mutability status of
a given object is, and you're diluting the power of the
interfaces for no particularly good reason (IMHO).

Or am I missing something?

   Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Mon Jan 8 19:49:09 2001 Date: Mon, 8 Jan 2001 19:49:09 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
On Mon, Jan 08, 2001 at 06:47:59PM +0000, Tom Oinn wrote:
> 
> > As the methods are not allowed to throw exceptions, how can you
> > politely say "Are you sure you want to listen for changes - this
> > object is immutable" ?
> 
> In this case it's likely to be an error in the application code isn't
> it? You can always throw a RuntimeException of some kind in this case.
> It's not very 'polite' but you wouldn't expect it to every appear in a
> finished application, it would only do so if there were errors I would
> have thought. 

Error? I really don't see this at all.  By calling addChangeListener
on an object, you are just expressing concern that an object
might change in the future, and asking that object to let you
know if changes do occur.  If that object knows it isn't going
to change, then it can simply ignore the addChangeListener.

Actually, trying to define mutability is itself a pretty
tricky problem.  Sure, some implementations are immutable
per se, but you can also have cases like ReversedSymbolList
which could wrap eith a mutable or an immutable underlying
SymbolList.  Should the behaviour of addChangeListener differ
according to the underlying implementation?  This is getting
onto nasty territory, and i'm much happier with the
current `no exceptions' interface.


Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From kdj@sanger.ac.uk Mon Jan 8 20:49:49 2001 Date: 08 Jan 2001 20:49:49 +0000 From: Keith James kdj@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
>>>>> "Thomas" == Thomas Down <td2@sanger.ac.uk> writes:

[..]

    >> As the methods are not allowed to throw exceptions, how can you
    >> politely say "Are you sure you want to listen for changes -
    >> this object is immutable" ?

    Thomas> No, please don't get into this.  We've got lots of
    Thomas> interfaces where both mutable an immutable implementations
    Thomas> are potentially useful.

[..]

Okay, no problem. I had put stubs in because I had seen it done
elsewhere, but I wanted to understand the reason behind it to be sure
it was appropriate here too.

cheers,

-- 

-= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =-
The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA

From mrp@sanger.ac.uk Tue Jan 9 11:00:48 2001 Date: Tue, 09 Jan 2001 11:00:48 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
Hi. As the architect of this particular can of worms, I guess I should speak
up here. In this case, FastaSearchResult will inherit from Annotatable that
in turn inherits from Changeable. You wish the state in FastaSearchResult
instances to be immutable. The Annotatable interface both defines the
getAnnotation method and also an inner class for notifying listeners to the
Annotatable that the Annotation has altered.

The correct  least resistance implementation of a FastaSearchResult would
either inherit from AbstractChangeable or to use a ChangeSupport and
explicitly delegate add/remove listener methods to it (as AbstractChangeable
does internaly). Then, during construction, once the Annotation property is
set, it should register an instance of AnnotationForwarder with the
Annotation, and store a reference to that in the SimpleFastaSearchResult
instance (as a private field?) to prevent the listener being garbage
collected.

Hope this makes things clearer. I will fix the Annotatable documentation to
make this explicit.

Matthew

Keith James wrote:

> I have a question re. objects designed to be immutable under all
> circumstances and yet implementing Changeable.
>
> e.g. I wanted FastaSearchResult to be immutable but also to implement
> Annotatable (the search header contains a lot of fairly loosely
> formatted, but worthwhile data). This means that it has to implement
> add/removeChangeListener.
>
> I suppose I could implement the methods as stubs which do nothing.
> I've seen this elsewhere in Biojava, I think. As the methods return
> nothing and can't throw exceptions I guess this should work. However
> is it good that someone who uses these methods (and is therefore
> expecting the object to change) should be able to add/remove a
> Listener? Or think that they had, when in fact nothing had happened.
>
> As the methods are not allowed to throw exceptions, how can you
> politely say "Are you sure you want to listen for changes - this
> object is immutable" ?
>
> --
>
> -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =-
> The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From mark_s@sanger.otago.ac.nz Tue Jan 9 21:07:19 2001 Date: Wed, 10 Jan 2001 10:07:19 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] Immutable objects and ChangeListeners
As a bit of a biojava newbie I was wondering why the event type model was
used for the change listeners and not the observer / observable API??

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From mark_s@sanger.otago.ac.nz Tue Jan 9 22:35:11 2001 Date: Wed, 10 Jan 2001 11:35:11 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] URN/URI?
Another newbie question,

What is the URN parameter in SimpleSequence? Is it the same as the URI
parameter in SimpleSequenceFactory? Is this documented elsewhere and if so
can a link be added to the documentation??

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From dorsch@netgenics.com Tue Jan 9 23:49:05 2001 Date: Tue, 9 Jan 2001 18:49:05 -0500 From: Forsch, Dan dorsch@netgenics.com Subject: [Biojava-l] Immutable objects and ChangeListeners
I like the listener/event paradigm which is extremely common in "modern"
Java programming.  Observer/Observable is lightweight but it doesn't provide
enough semantics.

However, I think Mark raises a fair question which I would recast thusly:
does BioJava need its own change notification API when mechanisms for this
already exist in the core Java libraries?  I'm thinking specifically of the
beans PropertyChange classes.  BioJava's ChangeEvent stuff has some nice
features like the ALWAYS_VETO listener and the ChangeForwarder mechanism for
chaining change events.  It also unifies the bound and constrained
properties into one change framework which I feel makes it a somewhat better
API than PropertyChange/VetoableChange.  

Even so it replicates about 75% of what's already built into Java as a
standard API which makes BioJava less compatible with external code,
especially (but not limited to) GUI apps and JavaBeans.  I believe it would
have been possible to add some of the ChangeEvent features as extensions to
PropertyChange.  The result might have been a little less clean and somewhat
constrained (heh) in terms of functionality but it would have gone a long
way to making BioJava compatible with Java standards.

I'm interested in hearing others thoughts on this with the possiblility of
looking to move the changeable support to an extension of
PropertyChange/VetoableChange following the 1.1 release.

I was further wondering if some of the "missing" implementations of
Changeable, particularly in some of the Simple... implementations like
SimpleSequence, should be filled in.  Is there any support for adding this
to the To Do list for 1.1?

Dan Forsch, Principal Software Engineer
NetGenics, Inc.
1717 East 9th Street, #1600
Cleveland, OH  44114
phone: 206.374.4541


-----Original Message-----
From: Mark Schreiber [mailto:mark_s@sanger.otago.ac.nz]
Sent: Tuesday, January 09, 2001 1:07 PM
To: Matthew Pocock
Cc: biojava-l@biojava.org
Subject: Re: [Biojava-l] Immutable objects and ChangeListeners


As a bit of a biojava newbie I was wondering why the event type model was
used for the change listeners and not the observer / observable API??

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

_______________________________________________
Biojava-l mailing list  -  Biojava-l@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

From td2@sanger.ac.uk Wed Jan 10 11:01:44 2001 Date: Wed, 10 Jan 2001 11:01:44 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] URN/URI?
On Wed, Jan 10, 2001 at 11:35:11AM +1300, Mark Schreiber wrote:
> Another newbie question,
> 
> What is the URN parameter in SimpleSequence? Is it the same as the URI
> parameter in SimpleSequenceFactory? Is this documented elsewhere and if so
> can a link be added to the documentation??

Yes, it is the same.  The getURN() accessor in the Sequence
interface really ought to be called getURI() -- it's a
historical accident that it isn't, but I suspect their might
be some dissent if we change it now (if people think the change
/is/ a good idea, please speak out).

There's some explanation of getURN() in the tutorials, but maybe
we do need some more detail in the javadoc -- I'll fix that
in a minute, if nobody else is on this one.


Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Wed Jan 10 11:14:41 2001 Date: Wed, 10 Jan 2001 11:14:41 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
On Tue, Jan 09, 2001 at 06:49:05PM -0500, Forsch, Dan wrote:
> I like the listener/event paradigm which is extremely common in "modern"
> Java programming.  Observer/Observable is lightweight but it doesn't provide
> enough semantics.
> 
> However, I think Mark raises a fair question which I would recast thusly:
> does BioJava need its own change notification API when mechanisms for this
> already exist in the core Java libraries?  I'm thinking specifically of the
> beans PropertyChange classes.  BioJava's ChangeEvent stuff has some nice
> features like the ALWAYS_VETO listener and the ChangeForwarder mechanism for
> chaining change events.  It also unifies the bound and constrained
> properties into one change framework which I feel makes it a somewhat better
> API than PropertyChange/VetoableChange.  
> 
> Even so it replicates about 75% of what's already built into Java as a
> standard API which makes BioJava less compatible with external code,
> especially (but not limited to) GUI apps and JavaBeans.  I believe it would
> have been possible to add some of the ChangeEvent features as extensions to
> PropertyChange.  The result might have been a little less clean and somewhat
> constrained (heh) in terms of functionality but it would have gone a long
> way to making BioJava compatible with Java standards.
> 
> I'm interested in hearing others thoughts on this with the possiblility of
> looking to move the changeable support to an extension of
> PropertyChange/VetoableChange following the 1.1 release.

The main problem with the `javabeans' style change events is
that they are tied to properties.  This works quite well for
the job of GUI-building many kinds of applications (which is
what javabeans was originally intended for, I guess), but it's
kind-of limiting.  For instance, how do you represent a change
in the weights of a Distribution?  These aren't properties in
the javabeans sense (each individual weight doesn't have it's
own accessor and mutator methods), but they are still very real
`properties' of the object, and it's useful to include them in
the event framework.

The same is true (probably more so) for Edits applied to 
SymbolLists.

Sun have gone some way to recognising that you need a change
framework which goes beyond javebeans-style properties.  Look
at javax.swing.event.ChangeEvent.  In some ways, this is
closer to the BioJava events than the java.beans ones are.
But it's very simplistic.  The BioJava events are a pragmatic
attempt to build a system that fits the requirements for
bioinformatics applications (I suspect it might also be useful
in other cases).

There's probably more that can be done, though.  I particular,
some simple adaptor classes to bridge between the BioJava
and JavaBeans event models would be useful, especially when
working with beans-aware GUI components.

> I was further wondering if some of the "missing" implementations of
> Changeable, particularly in some of the Simple... implementations like
> SimpleSequence, should be filled in.  Is there any support for adding this
> to the To Do list for 1.1?

What do you mean by `missing'?  If an object really is immutable,
then it's fine for it to have a stub Changeable implementation.

On the other hand, there are also some objects which aren't
quite immutable as they seem (usually because they are 
Annotatable, and the annotation can change), and we should
certainly look into fixing those ASAP. (I think I have to
take some of the blame for these -- oops.)

Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Wed Jan 10 11:55:22 2001 Date: Wed, 10 Jan 2001 11:55:22 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] URN/URI?
I've made a few documentation fixes -- hope these help people
in the future.

It's still kind-of tempting to change /getURN/getURI/, so that
the method name matches the function...

Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From mrp@sanger.ac.uk Wed Jan 10 14:26:14 2001 Date: Wed, 10 Jan 2001 14:26:14 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] URN/URI?
Hi Mark,

This is my fault - back in the dark ages I was a bit hazey about UR[LIN]s and
their relationship to one another. The original intent was that sequences,
alphabets and other resources should be retrievable by some form of naming
scheim - URNs resolve to URIs which then resolve to objects. As things have
progressed, we have never followed this through to its logical condition.
Hopefuly, we may be able to hash out some naming-and-directory type stuff that
will superseed this legacy. For now, I think it is just an indeosynchracy that
we should live with. Perhaps the parameter in SimpleSequenceFactory could be
changed to be consistent with the (incorrectly named) sequence property.

Thoughts?

Matthew

Mark Schreiber wrote:

> Another newbie question,
>
> What is the URN parameter in SimpleSequence? Is it the same as the URI
> parameter in SimpleSequenceFactory? Is this documented elsewhere and if so
> can a link be added to the documentation??
>
> Mark
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Mark Schreiber                  Ph: 64 3 4797875
> Rm 218                          email mark_s@sanger.otago.ac.nz
> Department of Biochemistry      email m.schreiber@clear.net.nz
> University of Otago
> PO Box 56
> Dunedin
> New Zealand
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From mrp@sanger.ac.uk Wed Jan 10 15:21:43 2001 Date: Wed, 10 Jan 2001 15:21:43 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Immutable objects and ChangeListeners
Hi.

Sory for the length of this - it's a bit of a mental vomit. Events are cool.
They allow you to know that objects are changing without invalidating the
encapsulation of the objects - fostering loose binding betwen components.

The Java libraries seem to contain two types of event models. Firstly, there is
the interface based events, such as the MouseListener/MouseEvent, where there is
an interface for each logical group of parameters that may be interesting to a
listener, and the interface for that listener is defined. There is one set of
events and listeners for each logical group of events e.g.
ActionEvent/ActionListener. This gives very good compile-time binding, and is
apropreate for cases where objects need to be informed of a specific change and
perform a specific response - handling a button press and the like.

The other extreem is exemplified by the
PropertyChangeEvent/PropertyChangeListener api. These events signify that a
JavaBeans property on an object has altered (or is about to alter). The property
is specified by a string. This allows a single listener to work with a range of
event sources and property types e.g. a repaint listener may well cause a GUI
component to repaint if any of the objects it renders are altered in any way.
With the tight-interface way of doing things, you would have to define one
event/listener pair for each property, and have one listener instance for each
possible cause for a repaint. This hastle is obviated by the loose binding of a
property change event to its name at the expense of compile-time sanity checks.

There are several restrictions to the PropertyChange API that are not present in
the Changeability API. Firstly, properties should realy map to bean properties.
As Thomas pointed out, many of the things that can change in BioJava objects are
not bean properties, but are still mutable state. OK, I sort of made this up,
but this is the spirit of the things.

Secondly, if I have two beans with a property 'font', there is no way for me to
know whether they are comparable properties. One may be the font associated with
a GUI component, another may be a font name as a String in a wrapper arround a
text box. The BioJava ChangeType objects provide a type-safe way to clearly
identify the 'type' of the event. Interfaces define how they may change by
listing public static final ChangeType instances. Since these are defined within
interfaces, it is clear when two changes are of the same type because they have
exactly the same ChangeType property in the ChangeEvent.

Thirdly, both of the event models above are shallow. That is, you can discover
that an object has changed, but there is no way to know what caused that change.
For example, if a widget says that it has resized, you don't know if that is
because the user resized a window or the underlying data has changed. In the
case of the GUI, this probably doesn't matter, but for our applications it does.
You can listen to an HMM's PARAMETER changes to be informed that some
propability for transitions or emissions has altered. If you get one of these
events, you can then call changeEvent.getPrevious() to pull back the event that
a probability Distribution fired to indicate that it had altered. This
maintainance of the complete 'chain of evidence' is key to robustly handeling
these events. The flip side of this is that ChangeVetoException inherits from
NestedException, which means that it can maintain a complete 'chain of evidence'
for why a change is being prevented by using the constructor that takes a
message and a causual exception. A listener on the HMM can veto all PARAMETER
changes, which will result indirectly in all changes to the underlying
Distributions being vetoed. This gives us an extremely powerful API for
maintining object integrity.

I am very open to the idea of moving towards reuse of a standard Java event API
post 1.1 if it can be cleanly and easily extended to do all the things that ours
can do. At the moment, though, for everyone except event source implementors I
think the learning curve is negligable, especialy if there is previous knowledge
of other event systems. We should probably aim to provide a
Changeability->PropertyChangeEvent bridge for people wanting to easily build
GUIs (hours in the day ... volunteers?).

I probably haven't said anything new here (and used more words than anybody
else). The current state of affairs is a first-attempt at implementing this kind
of thing, so there is still considerable room for change. After all, the code
must primarily be usable rather than an exercise in design. I almost certainly
don't read enough APIs to know how other projects handle this, there is probably
a better way.

All the best,

Matthew


From elb@BlossomAssociates.com Wed Jan 10 17:04:34 2001 Date: Wed, 10 Jan 2001 09:04:34 -0800 (PST) From: Eric Blossom elb@BlossomAssociates.com Subject: [Biojava-l] URN/URI?
Why not add a getURI method and deprecate the getURN method?
This would avoid breaking code and would document the switch.

Eric

On Wed, 10 Jan 2001, Thomas Down wrote:

> On Wed, Jan 10, 2001 at 11:35:11AM +1300, Mark Schreiber wrote:
> > Another newbie question,
> > 
> > What is the URN parameter in SimpleSequence? Is it the same as the URI
> > parameter in SimpleSequenceFactory? Is this documented elsewhere and if so
> > can a link be added to the documentation??
> 
> Yes, it is the same.  The getURN() accessor in the Sequence
> interface really ought to be called getURI() -- it's a
> historical accident that it isn't, but I suspect their might
> be some dissent if we change it now (if people think the change
> /is/ a good idea, please speak out).
> 
> There's some explanation of getURN() in the tutorials, but maybe
> we do need some more detail in the javadoc -- I'll fix that
> in a minute, if nobody else is on this one.
> 
> 
> Thomas.


From mrp@sanger.ac.uk Wed Jan 10 17:55:32 2001 Date: Wed, 10 Jan 2001 17:55:32 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Another tutorial!
Hi.

I have just posted a new tutorial that explains how to write a
Changeable instance, and how to define an interface that publishes its
ChangeTypes. Hope this is useful.

Matthew


From dalke@acm.org Thu Jan 11 12:32:21 2001 Date: Thu, 11 Jan 2001 05:32:21 -0700 From: Andrew Dalke dalke@acm.org Subject: [Biojava-l] looking for datafile parsers
Hello,

  I'm working on a parser generator as part of the
Biopython development.  It's getting towards completion
which means it's time to start writing papers about it.  :)
Indeed, my paper was accepted for a talk at the upcoming
Python conference.  One of the reviewers wanted more
information comparing my work to others in the field, so
I've been digging up related project.  I figure on writing
another paper for Bioinformatics which will include some
more of this information.

  The most similar program is SRS, which is also a parser
generator, although they are context free while my parser is
(mostly) regular.  I tried to get a copy of the reference
paper (from Meth.Enzy.) from the library but it was checked
out.  I would love it if someone would offer to answer a
few questions for my about it, and to run some benchmarks
to see how fast it parses swissprot38, say, as compared to
how long it takes the bioperl code to parse the same file.
Any takers?

  There are a few projects which allow users to specific
a format using a configuration description which can roughly
be classified as a regular expression pattern matcher sitting
on top of line type recognizer.  This includes Biopy and
BioDB-Loader as well as the current Biopython parser.  Another
class of projects uses a common data structure then implements
readers/writers to the different formats at the expense of
throwing away some data, such as bioperl and SeqIO.  Swissknife
is an example of a library which reads/writes from a single
format into a data format tailored specifically to that format.
A few are special case programs (grep, NiceProt, sp2fasta)
which do one and only one thing, although in the case of
sw2xml that one thing converts the format (SWISS-PROT) to
another format (XML) for which many tools are readily available.
Most of the packages throw away formatting information and
only store the physical data, although get-sprot-entry is a nice
example of why keeping presentation information is useful.
The program creates an HTML page which looks the same as the
original format except that various fields are marked up with
hyperlinks.  Finally, the project I've been working on, Martel,
lets you develop parsers which handle most, if not all, of
these cases.

I want to make sure I covered everything so I've been searching
for SWISS-PROT parsers as my prototypical example.  A
description of what I found is below.  If something major is
missing, please tell me.  If you can provide assistence with
the SRS, GCG, Java or Lisp parts, also please tell me.


 Here's a key to some of the notation I use in the listings below:
count == count the number of records in a database
offset == generate offsets into the file for fast indexing
fasta == extract data for FASTA (ID, AC and SQ fields)
generic == extract generic sequence data, usually as a
   data structure containing fields common to multiple formats
   but ignoring some SWISS-PROT specific fields
all == extract all fields
validate == validate that a record is in the correct format
markup == identifies fields and saves the layout data so as
    to allow HTML markup without otherwise changing the format
    (timings not given for markup since it will depend on the
     specific markup requested, and because only Martel and
     get-sprot-entry preserve markup)

Performance is measured against the 80,000 records of
swissprot38


grep - http://www.gnu.org/gnulist/production/grep.html
  written in C
  count (when used as "grep ^ID | wc")
     takes 0m:57s to parse sprot38
  offset (when used as "grep -b ^ID")
  cannot be used for fasta, generic, all, validate, markup

one really large regular expression  (here as a bit of humor)
  written in C
  cannot be used for count, offset, fasta, generic, all, markup
  can be used for validate in theory, but I haven't tested it

bioperl - http://www.bioperl.org/
  written in Perl
  count (as a special case of generic)
  fasta (as a special case of generic)
  generic
    takes 30m:13s to parse sprot38
  cannot be used for index (?), all, validate, markup

biopython - http://www.biopython.org/
  written in Python
  count (as a special case of all)
  fasta (as a special case of all)
  generic (as a special case of all)
  all
    takes 28m:55s to parse sprot38
  validate
  cannot be used for index(?), markup

biojava - http://www.biojava.org/
  written in Java
  unknown (have source but need to figure it out)
  performance unknown (don't know how to code in Java)

Martel - http://www.biopython.org/~dalke/Martel/
  written in Python with a C extension
  count
    RecordReader.StartsWith "ID" takes 1m28s to parse sprot38
  index
  fasta (standard format def. but only using the ID and SQ tags)
    takes 9m:23s to parse sprot38
  generic (as a special case of all)
  all
    takes 23m:29s to parse sprot38
  validate
    with no callbacks takes 6m:41s
  markup
  

SRS - http://www.lionbio.co.uk/
  written in C (?)
  have never used it, but it can definitely do count, fasta,
  generic and all.  The standard swissprot format definition
       http://srs.ebi.ac.uk/srs6bin/cgi-bin/wgetz?
       -page+LibInfo+-id+01FXMii+-lib+SWISSPROT
  cannot be used to validate although SRS itself can.  I
  think SRS can be used to generate HTML markup but I can't
  begin to guess how that might be done.
    *** I really want to ask someone questions about SRS ***
    *** Any takers? ***
  I don't think it can be used to create your own indicies - 
    you must use its offset tables.

swissknife - ftp://ftp.ebi.ac.uk/pub/software/swissprot/
  written in Perl
  count
    lazy reader takes 1m:48s to parse sprot38
  fasta (getting the ->ID and ->SQ attributes)
    takes 8m:47s to parse sprot38
  generic (as a special case of all)
  all
    takes 38m:21s to parse sprot38
  cannot be used to validate, markup

Biopy - http://shag.embl-heidelberg.de:8000/Biopy/
  written in Python
  count (as a special case of all)
  index (by "position += length($_)")
  fasta (as a special case of all)
  generic (as a special case of all)
  all - requires additional programming to parse the subfields
    (it only identifies lines) so I actually wouldn't count
    this as a full parser.
    * takes roughly 25m to parse
  cannot be used to validate, markup

Darwin - http://cbrg.inf.ethz.ch/Darwinshome.html
  is its own language and set of libraries
  contains a converter from SWISS-PROT to its own format.
  I don't access to the source code so the following is based
  on the example parser at
    http://www.inf.ethz.ch/personal/hallett/drive/node92.html
  count (as a special case of all)
  fasta (as a special case of all)
  generic (as a special case of all)
  all - requires additional programming to parse the subfields
    although the real implementation may contain all of that.
  given example cannot be used to index, validate, markup
(Why does http://www.inf.ethz.ch/personal/hallett/drive/drive.html
say that SWISS-PROT 38 has only 77,977 record when my copy has
exactly 80,000?)

SeqIO - http://www.cs.ucdavis.edu/~gusfield/seqio.tar.gz
  written in C
  count (as a special case of generic)
  fasta (as a special case of generic)
  generic
    have not yet benchmarked
  cannot be used to index, all, validate, markup

readseq (C) - http://iubio.bio.indiana.edu/soft/molbio/readseq/
                 version1/readseq.shar
  written in C
  doesn't have swissprot and need to test of embl works instead
  to be tested  

readseq (Java) - http://iubio.bio.indiana.edu/soft/molbio/readseq/
                    java/readseq-source.zip
  written in Java
  have not yet explored (see above where I need help on how
   to write a good test program in Java.)

Boulder - http://stein.cshl.org/software/boulder/
  written in Perl
  count (as a special case of generic)
  fasta (as a special case of generic)
  generic
    have not yet benchmarked
  cannot be used for index, all, validate, markup

molbio++ - ftp://ftp.ebi.ac.uk/pub/software/unix/molbio.tar.Z
  written in (now obsolete) C++ which doesn't compile
  I think it can be classified as
  count (as a special case of generic)
  fasta (as a special case of generic)
  generic, although it calls for some extra parsing to get
     at subfields of a data line
     * will not be benchmarking since I don't want to spend
        the effort to get it to compile.
  cannot be used for index, all, validate, markup

BioDB-Loader - http://www.franz.com/services/conferences_seminars/
                 ismb2000/biodb1.tar.Z

  written in Common Lisp (Help! I know even less lisp than Java!)
  I'm guessing it can be classified as
  count (as a special case of generic)
  index
  fasta (as a special case of generic)
  generic, although it calls for some extra parsing to get
     at the subfields of a data line
     * have not benchmarked, although I have downloaded the Allegro
        common Lisp demo version.
  cannot be used for all, validate, markup

GCG - http://www.gcg.com/products/wis-package.html
  written in C (?)
  never used it.  Betting it can be classified as
  count (as a special case of generic)
  index
  fasta (as a special case of generic)
  generic
    have not benchmarked since I'm not spending that much
    money just to test the performance.
  cannot be used for all, validate, markup

sp2fasta - part of ftp://ftp.ncbi.nlm.nih.gov/toolkit/ ?
  Can't seem to find it in the current distribution.  Various
  web pages imply it is a C program to convert SWISS-PROT/EMBL
  to FASTA.
  count (if used together with grep and wc)
  fasta
    have not benchmarked since I cannot find code
  cannot be used for index, generic, all, validate, markup

sw2xml - http://www.vsms.nottingham.ac.uk/biodom/software/
             protsuite-user-dist/sw2xml-protbot.pl
  written in Perl.  It is a translation program from SWISS-PROT
  to XML so some additional, though minor, XML coding is needed
  to do the following.
  count (as a special case of all)
  fasta (as a special case of all)
  generic (as a special case of all)
  all
    have not yet benchmarked
  cannot be used to index, validate, markup (because of the 'tidy')

NiceProt - used at ExPASy
  implementation information not available
  only used to parse a single record
  parses the data file but doesn't build a data structure (?)
  so creation of fasta, generic and all require som modifications.
  cannot be used to count, index, validate(?), markup

get-sprot-entry - used at ExPASy
  implementation not available
  can be used to markup a record (eg, see
    http://expasy.cbr.nrc.ca/cgi-bin/get-sprot-entry?P52930 )
  doesn't build data structures or convert to another format
    so it cannot be used for anything else (true?)


Whew!  I'ld be surprised if I really did miss some other
major style of parsing.  Actually, I did - there are no
lex/yacc grammers for SWISS-PROT but I'm not surprised
because the lexing is strongly position dependent which
calls for tight, explicit, tricky communications with the
parser.

Any other suggestions?

Sincerely,

                    Andrew Dalke
                    dalke@acm.org



From simon.brocklehurst@CambridgeAntibody.com Thu Jan 11 13:59:22 2001 Date: Thu, 11 Jan 2001 13:59:22 +0000 From: Simon Brocklehurst simon.brocklehurst@CambridgeAntibody.com Subject: [Biojava-l] looking for datafile parsers
Hi Andrew,

You might be interested to know that CAT has contributed to biojava a
SAX2-compliant, event-based parsing framework for dealing with
bioinformatics data files.

Essentially, by using a SAX2 model, the framework allows users to build
arbritrary XML Content Handlers for dealing with data from
bioinformatics files in arbritary ways.  The framework generates SAX2
events from bioinformatics format files i.e. the input data isn't XML,
nor is it converted into XML internally.

It's a reasonable implementation of the SAX2 e.g. Users can:

o Set properties on SAX Parsers e.g. configuration of various features
namespace reporting etc.

o Handle infinitely large files, because it works like a SAXParser
should i.e. doesn't keep the whole file in memory etc.

o Deals with InputSources i.e. essentially various flavours of streams.

A couple of neat benefits of a implementationing of SAX2:

o It's trivial to create XML format versions of files so, with which you
can do whatever you want with these e.g. using XSLT

o By stringing together biojava SAXParsers which are non-validating,
with validating SAXParsers from e.g. IBM, you can create parsers that
validate against DTDs and/or XML Schemas that we produce for the data
formats supported by the framework.  Because, the bioinforamtics data
from is modelled in a strongly typed way by the framework, you can get
genuinely useful benefits from validation.

We haven't put SwissProt support into this framework as of yet -
biojava already had ways of handling SwissProt data before we put the
SAX2 framework in.  Currently we have in there OK support for NCBI Blast
and WU-Blast, and improving support for HMMER, and PDB data.

Hope this info is useful...

Simon
--
Simon M. Brocklehurst, Ph.D.
Head of Bioinformatics & Advanced IS
Cambridge Antibody Technology
The Science Park, Melbourn, Cambridgeshire, UK
http://www.CambridgeAntibody.com/
mailto:simon.brocklehurst@CambridgeAntibody.com



From ajm6q@virginia.edu Thu Jan 11 13:52:32 2001 Date: Thu, 11 Jan 2001 08:52:32 -0500 (EST) From: Aaron J Mackey ajm6q@virginia.edu Subject: [Biojava-l] Re: [Bioperl-l] looking for datafile parsers
On Thu, 11 Jan 2001, Andrew Dalke wrote:

> Finally, the project I've been working on, Martel,
> lets you develop parsers which handle most, if not all, of
> these cases.

Excellent, I look forward to seeing your work.  Parsing is the meat and
potatoes of bioinformatics, and it's beginning to taste very stale (I
dunno, maybe it's been stale for awhile now).  My own secret wish list is
focused more on result file parsing; I once spent a fair amount of time
building a "robust" FASTA result file parser, but found myself constantly
needing to tweak it to keep up with fasta development changes.  You don't
have that problem with SwissProt or other static file formats.

> grep - http://www.gnu.org/gnulist/production/grep.html
>   written in C
>   count (when used as "grep ^ID | wc")
>      takes 0m:57s to parse sprot38
>   offset (when used as "grep -b ^ID")
>   cannot be used for fasta, generic, all, validate, markup

I've actually found that I now use grep and a small mix of perl more than
any other parsing routine (mainly because of the predicament I mention
above: when a format changes, I have to fix the entire parser, even if I
just want to pull out a few relevant fields at the moment).  My result
file "parsers" often take a few 'grep swipes' at the file (since the
second grep on the same file is commonly much faster than the first), and
as you show, it's very fast to begin.  The one extension to grep that I'd
dearly like to see (perhaps I'll submit a patch) would be to extend the -A
and -B (after-context and before-context flags) to take regexp's
themselves (i.e. instead of printing N lines after the first match,
continue printing until the second regexp is matched, or other
possibilities depending on specified flags).  Then you could start using
(multiple) greps to get 'fasta', 'generic', 'all' satisfied.

Use the shell, Luke.

-Aaron

-- 
 o ~   ~   ~   ~   ~   ~  o
/ Aaron J Mackey           \
\  Dr. Pearson Laboratory  /
 \ University of Virginia  \
 /  (804) 924-2821          \
 \  amackey@virginia.edu    /
  o ~   ~   ~   ~   ~   ~  o



From mrp@sanger.ac.uk Thu Jan 11 16:37:58 2001 Date: Thu, 11 Jan 2001 16:37:58 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Benchmarks
Hi all,

I have written code to count SP entries, and to convert them into Fasta
(using SeqIOListener directly and via the object model). On alphas, our
count code executes as quickly as grep (!!!). On linux, the java class
is slower by a small factor (~1.4 * grep time). The listener
implementation of the fasta maker is quicker than the one that goes via
the sequence object model (no suprises there), but I think that both are
competative with the other projects results. Anyway, you can get the
benchmarks from me and try it out yourself on some SP .dat files.

http://www.sanger.ac.uk/~mrp/benchmarks.jar

You will need to unjar this and read the README. Have fun with this.

Matthew

ps A large thanks to Thomas for writting the super-efficient IO
framework which now goes like a train on speed.


From mark_s@sanger.otago.ac.nz Thu Jan 11 23:18:31 2001 Date: Fri, 12 Jan 2001 12:18:31 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] most uptodate jar
Hi,

which is the most upto date jar??

I am trying to build tutorial 4 on my machine and it complains about
NestedError, ChangeVetoException etc being missing. I have the biojava
1.01 jar. Which one should I have??

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From mrp@sanger.ac.uk Fri Jan 12 12:41:01 2001 Date: Fri, 12 Jan 2001 12:41:01 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] most uptodate jar
I always develop from CVS - either the public anonymous CVS
(http://cvs.biojava.org) or the development CVS. I forget periodicaly that
other people use the snapshots on the web site. I will post a new one
today.

Sory for the inconvenience,

Matthew

Mark Schreiber wrote:

> Hi,
>
> which is the most upto date jar??
>
> I am trying to build tutorial 4 on my machine and it complains about
> NestedError, ChangeVetoException etc being missing. I have the biojava
> 1.01 jar. Which one should I have??
>
> Mark
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Mark Schreiber                  Ph: 64 3 4797875
> Rm 218                          email mark_s@sanger.otago.ac.nz
> Department of Biochemistry      email m.schreiber@clear.net.nz
> University of Otago
> PO Box 56
> Dunedin
> New Zealand
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From mrp@sanger.ac.uk Fri Jan 12 13:02:56 2001 Date: Fri, 12 Jan 2001 13:02:56 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] most uptodate jar
Hi.

If you go to http://biojava.org and follow the download link, and decend into
the binaries directory, you will find biojava-20010112.jar which is the most
up-to-date jar. You will need to place this in a directory with gnuregexp.jar,
xerces.jar and bytecode.jar (grab and rename bytecode-0.9.jar). Then,
everything should work for you (fingers crossed). I am in the process of
making the up-to-date documentation and source-code snapshots, so these should
be on-line soon.

Matthew

Matthew Pocock wrote:

> I always develop from CVS - either the public anonymous CVS
> (http://cvs.biojava.org) or the development CVS. I forget periodicaly that
> other people use the snapshots on the web site. I will post a new one
> today.
>
> Sory for the inconvenience,
>
> Matthew
>
> Mark Schreiber wrote:
>
> > Hi,
> >
> > which is the most upto date jar??
> >
> > I am trying to build tutorial 4 on my machine and it complains about
> > NestedError, ChangeVetoException etc being missing. I have the biojava
> > 1.01 jar. Which one should I have??
> >
> > Mark
> >
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > Mark Schreiber                  Ph: 64 3 4797875
> > Rm 218                          email mark_s@sanger.otago.ac.nz
> > Department of Biochemistry      email m.schreiber@clear.net.nz
> > University of Otago
> > PO Box 56
> > Dunedin
> > New Zealand
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > _______________________________________________
> > Biojava-l mailing list  -  Biojava-l@biojava.org
> > http://biojava.org/mailman/listinfo/biojava-l
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From mrp@sanger.ac.uk Fri Jan 12 14:55:00 2001 Date: Fri, 12 Jan 2001 14:55:00 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] SeqIOListener
SeqIOListener has methods addSequenceProperty(String key, Object value)
and similarly addFeatureProperty. Is there a good reason for the key
being a String, or could it also be declared as being an Object? The
Annotation objects allow arbitrary objects as keys, so I think the
SeqIOListener interface should allow this as well.

Thoughts?

Matthew


From dsokol@osnut.com Sat Jan 13 07:45:51 2001 Date: Sat, 13 Jan 2001 02:45:51 -0500 From: dsokol@osnut.com dsokol@osnut.com Subject: [Biojava-l] Exciting New Nutraceutical Company- Promote your own ideas!
--=200101130127=
Content-Type: text/html;charset=US-ASCII

<!-- saved from url=(0022)http://internet.e-mail -->
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Design Your Own Herbal and Nutritional Supplements and Reap the Financial Benefits</title>
</head>

<body bgcolor="#FFFFFF" text="#008000">
<p align="left"> biojava-l@biojava.org,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p align="left">&nbsp;&nbsp;&nbsp; It was a pleasure learning about your
interests in biology from your website.&nbsp; Based on your
credentials, I am offering you the following opportunity, which I hope you may
find worthwhile.</p>
<p align="left">Thank you,</p>
<p align="left">Daniel</p>
<p align="center"><font face="Arial Black" size="5">&nbsp;<b><font color="#008000">Have
your nutraceutical ideas become reality and marketed to the general public-and perhaps even globally</font></b><font color="#008000"><b>.</b></font></font></p>
<p align="center"><b><u><font face="Arial Black" size="4">Design Your Own Herbal
and Nutritional Supplements and Reap the Financial Benefits from the Quality of
your own ideas!</font></u></b></p>
      <p align="center"><font face="Gill Sans Ultra Bold" size="4">Kava Kava, Ginseng,
      Echinacea, St. John's Wort...</font></p>
<p align="center"><font face="Gill Sans Ultra Bold" size="4">For <u>FREE</u>
information on these nutraceuticals, including their methods of synthesis,&nbsp;
you can go to <a href="http://www.osnut.com/freeinfo.htm">http://www.osnut.com/freeinfo.htm</a>
by clicking <a href="http://www.osnut.com/freeinfo.htm">HERE</a>.</font></p>
<p align="center"><font color="#008000" size="4">The
      explosion in the nutraceutical industry has left open the possibility for
considerable profits.&nbsp; New nutraceuticals and herbal formulas are being
      discovered, designed, and marketed every day!&nbsp; If you have a
      background in herbs/
      biology/ chemistry /nutrition and/or medicine, then OSnutraceuticals
      is the company for you.</font></p>
<p align="center"><font size="4" color="#008000">Open
      Source Nutraceuticals, Inc. is a company committed to
      excellence in the nutraceutical industry by providing an open
      source
      for the creation and standardization of nutraceuticals for
      naturally treating all kinds of conditions. By implementing
      a&nbsp;linux-like
      platform for discussion and protection of your ideas, OSnutraceuticals can
be the best way to have your innovations marketed to the general
      public and for you to reap the financial benefits from the
sales.</font></p>
      <p align="center"><font size="4" color="#008000">Sign up <b>NOW</b> and
      get 2 months <b>FREE</b>!</font></p>
      <p align="center"><font color="#008000" size="4">For
      more information, visit <a href="http://www.osnut.com">www.osnut.com</a></font></p>
      <p align="center"><font color="#008000" size="4">by
      clicking <a href="http://www.osnut.com">HERE!</a></font></p>
<p align="center"><font color="#008000" size="4">(Note:
<a href="http://www.osnut.com">www.osnut.com</a> is best viewed
      using Microsoft's Internet
      Explorer but can also be viewed with Netscape as well)</font></font></p>

<p align="center"><font size="3">&nbsp;</font><font size="4">If you feel
you received this ad by mistake, please contact <a href="mailto:dsokol@osnut.com">dsokol@osnut.com </a>and put the word
&quot;remove&quot; in the subject line.&nbsp; You will automatically be taken
off our mailing list!</font></p>

</body>
</html>

--=200101130127=--


From Robin.Emig@maxygen.com Mon Jan 15 16:28:39 2001 Date: Mon, 15 Jan 2001 08:28:39 -0800 From: Emig, Robin Robin.Emig@maxygen.com Subject: [Biojava-l] Exciting New Nutraceutical Company- Promote your own ideas!
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01C07F10.3B35A1D0
Content-Type: text/plain

commence hate mail.......
 

-----Original Message-----
From: biojava-l-admin@biojava.org [mailto:biojava-l-admin@biojava.org]On
Behalf Of dsokol@osnut.com
Sent: Friday, January 12, 2001 11:46 PM
To: biojava-l@biojava.org
Subject: [Biojava-l] Exciting New Nutraceutical Company- Promote your own
ideas!



biojava-l@biojava.org,


    It was a pleasure learning about your interests in biology from your
website.  Based on your credentials, I am offering you the following
opportunity, which I hope you may find worthwhile.

Thank you,

Daniel

 Have your nutraceutical ideas become reality and marketed to the general
public-and perhaps even globally.

Design Your Own Herbal and Nutritional Supplements and Reap the Financial
Benefits from the Quality of your own ideas!

Kava Kava, Ginseng, Echinacea, St. John's Wort...

For FREE information on these nutraceuticals, including their methods of
synthesis,  you can go to http://www.osnut.com/freeinfo.htm
<http://www.osnut.com/freeinfo.htm>  by clicking HERE
<http://www.osnut.com/freeinfo.htm> .

The explosion in the nutraceutical industry has left open the possibility
for considerable profits.  New nutraceuticals and herbal formulas are being
discovered, designed, and marketed every day!  If you have a background in
herbs/ biology/ chemistry /nutrition and/or medicine, then OSnutraceuticals
is the company for you.

Open Source Nutraceuticals, Inc. is a company committed to excellence in the
nutraceutical industry by providing an open source for the creation and
standardization of nutraceuticals for naturally treating all kinds of
conditions. By implementing a linux-like platform for discussion and
protection of your ideas, OSnutraceuticals can be the best way to have your
innovations marketed to the general public and for you to reap the financial
benefits from the sales.

Sign up NOW and get 2 months FREE!

For more information, visit www.osnut.com <http://www.osnut.com> 

by clicking HERE! <http://www.osnut.com> 

(Note: www.osnut.com <http://www.osnut.com>  is best viewed using
Microsoft's Internet Explorer but can also be viewed with Netscape as well)

 If you feel you received this ad by mistake, please contact
dsokol@osnut.com  <mailto:dsokol@osnut.com> and put the word "remove" in the
subject line.  You will automatically be taken off our mailing list!


------_=_NextPart_001_01C07F10.3B35A1D0
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=3D(0022)http://internet.e-mail --><HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<TITLE>Design Your Own Herbal and Nutritional Supplements and Reap the =
Financial Benefits</TITLE>

<META http-equiv=3DContent-Language content=3Den-us>
<META content=3D"MSHTML 5.50.4207.2601" name=3DGENERATOR>
<META content=3DFrontPage.Editor.Document name=3DProgId></HEAD>
<BODY text=3D#008000 bgColor=3D#ffffff>
<DIV><SPAN class=3D906352816-15012001><FONT face=3DArial =
color=3D#0000ff=20
size=3D2>commence hate mail.......</FONT></SPAN></DIV>
<DIV><SPAN class=3D906352816-15012001></SPAN>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px">
  <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
  size=3D2>-----Original Message-----<BR><B>From:</B> =
biojava-l-admin@biojava.org=20
  [mailto:biojava-l-admin@biojava.org]<B>On Behalf Of=20
  </B>dsokol@osnut.com<BR><B>Sent:</B> Friday, January 12, 2001 11:46=20
  PM<BR><B>To:</B> biojava-l@biojava.org<BR><B>Subject:</B> [Biojava-l] =
Exciting=20
  New Nutraceutical Company- Promote your own =
ideas!<BR><BR></FONT></DIV>
  <P=20
  =
align=3Dleft>biojava-l@biojava.org,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
  <P align=3Dleft>&nbsp;&nbsp;&nbsp; It was a pleasure learning about =
your=20
  interests in biology from your website.&nbsp; Based on your =
credentials, I am=20
  offering you the following opportunity, which I hope you may find=20
  worthwhile.</P>
  <P align=3Dleft>Thank you,</P>
  <P align=3Dleft>Daniel</P>
  <P align=3Dcenter><FONT face=3D"Arial Black" size=3D5>&nbsp;<B><FONT=20
  color=3D#008000>Have your nutraceutical ideas become reality and =
marketed to the=20
  general public-and perhaps even globally</FONT></B><FONT=20
  color=3D#008000><B>.</B></FONT></FONT></P>
  <P align=3Dcenter><B><U><FONT face=3D"Arial Black" size=3D4>Design =
Your Own Herbal=20
  and Nutritional Supplements and Reap the Financial Benefits from the =
Quality=20
  of your own ideas!</FONT></U></B></P>
  <P align=3Dcenter><FONT face=3D"Gill Sans Ultra Bold" size=3D4>Kava =
Kava, Ginseng,=20
  Echinacea, St. John's Wort...</FONT></P>
  <P align=3Dcenter><FONT face=3D"Gill Sans Ultra Bold" size=3D4>For =
<U>FREE</U>=20
  information on these nutraceuticals, including their methods of=20
  synthesis,&nbsp; you can go to <A=20
  =
href=3D"http://www.osnut.com/freeinfo.htm">http://www.osnut.com/freeinfo=
.htm</A>=20
  by clicking <A =
href=3D"http://www.osnut.com/freeinfo.htm">HERE</A>.</FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>The explosion in the =
nutraceutical=20
  industry has left open the possibility for considerable =
profits.&nbsp; New=20
  nutraceuticals and herbal formulas are being discovered, designed, =
and=20
  marketed every day!&nbsp; If you have a background in herbs/ biology/ =

  chemistry /nutrition and/or medicine, then OSnutraceuticals is the =
company for=20
  you.</FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>Open Source =
Nutraceuticals, Inc. is=20
  a company committed to excellence in the nutraceutical industry by =
providing=20
  an open source for the creation and standardization of nutraceuticals =
for=20
  naturally treating all kinds of conditions. By implementing =
a&nbsp;linux-like=20
  platform for discussion and protection of your ideas, =
OSnutraceuticals can be=20
  the best way to have your innovations marketed to the general public =
and for=20
  you to reap the financial benefits from the sales.</FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>Sign up <B>NOW</B> =
and get 2 months=20
  <B>FREE</B>!</FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>For more =
information, visit <A=20
  href=3D"http://www.osnut.com">www.osnut.com</A></FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>by clicking <A=20
  href=3D"http://www.osnut.com">HERE!</A></FONT></P>
  <P align=3Dcenter><FONT color=3D#008000 size=3D4>(Note: <A=20
  href=3D"http://www.osnut.com">www.osnut.com</A> is best viewed using =
Microsoft's=20
  Internet Explorer but can also be viewed with Netscape as=20
  well)</FONT></FONT></P>
  <P align=3Dcenter><FONT size=3D3>&nbsp;</FONT><FONT size=3D4>If you =
feel you=20
  received this ad by mistake, please contact <A=20
  href=3D"mailto:dsokol@osnut.com">dsokol@osnut.com </A>and put the =
word "remove"=20
  in the subject line.&nbsp; You will automatically be taken off our =
mailing=20
  list!</FONT></P></BLOCKQUOTE></BODY></HTML>

------_=_NextPart_001_01C07F10.3B35A1D0--

From dorsch@netgenics.com Mon Jan 15 16:52:25 2001 Date: Mon, 15 Jan 2001 11:52:25 -0500 From: Forsch, Dan dorsch@netgenics.com Subject: [Biojava-l] Immutable objects and ChangeListeners
I don't want to beat this (cold) thread into the ground but I'd like to try
once more to clarify the point that I was making.  Someone (Thomas?) made
the point that the API's in BioJava should be geared towards support for
bioinformatics applications.  I agree with that but I don't belive there is
very much in the Changeable API or any change framework that is specific to
biological data.  BioJava's strength will be both in its support for common
bioinformatics tasks and in its leveraging the power of Java.  As such I
think the contributors should try to make use of the Java core libraries
whenever possible in order to emphasize compatibility.  

The PropertyChange API was developed for changes to JavaBean properties but
it is useful (and useable) outside of that context.  Changes to a
Distribution or SymbolList are not property changes, I agree, but the
distinction is really a semantical one which, IMO, doesn't justify
duplicating much of the purpose of that API.  It's also true that properties
which generate PropertyChangeEvents should have corresponding get/setters
but that is just a JavaBeans _convention_ and shouldn't be required to use
that API to represent changes in a more general way (incidentally, I think
that BioJava API's should use the get/set convention whenever possible, even
in non-GUI interfaces and classes).  As far as the type safety issue is
concerned, the same thing could be achieved with public String constants
defined in BioJava interfaces that is being done with public ChangeType
members.

I'll reiterate that I think Changeable is a superior model to
Property/Vetoable Change but the price of potential incompatibility is too
high IMO.  Consider the example of a GUI application using BioJava to model
the domain data and also using 3rd party JavaBeans in the UI.   A component
in such an application will likely have to be both a PropertyChangeListener
for the beans and ChangeListener for changes in BioJava objects.  If this
overlap can be bridged by adapters between the two API's then that solution
seems like a good compromise.

Dan Forsch, Principal Software Engineer
NetGenics, Inc.
1717 East 9th Street, #1600
Cleveland, OH  44114
phone: 206.374.4541


> -----Original Message-----
> From: Matthew Pocock [mailto:mrp@sanger.ac.uk]
> Sent: Wednesday, January 10, 2001 7:22 AM
> To: Forsch, Dan
> Cc: 'Mark Schreiber'; biojava-l@biojava.org
> Subject: Re: [Biojava-l] Immutable objects and ChangeListeners
> 
> 
> Hi.
> 
> Sory for the length of this - it's a bit of a mental vomit. 
> Events are cool.
> They allow you to know that objects are changing without 
> invalidating the
> encapsulation of the objects - fostering loose binding betwen 
> components.
> 
> The Java libraries seem to contain two types of event models. 
> Firstly, there is
> the interface based events, such as the 
> MouseListener/MouseEvent, where there is
> an interface for each logical group of parameters that may be 
> interesting to a
> listener, and the interface for that listener is defined. 
> There is one set of
> events and listeners for each logical group of events e.g.
> ActionEvent/ActionListener. This gives very good compile-time 
> binding, and is
> apropreate for cases where objects need to be informed of a 
> specific change and
> perform a specific response - handling a button press and the like.
> 
> The other extreem is exemplified by the
> PropertyChangeEvent/PropertyChangeListener api. These events 
> signify that a
> JavaBeans property on an object has altered (or is about to 
> alter). The property
> is specified by a string. This allows a single listener to 
> work with a range of
> event sources and property types e.g. a repaint listener may 
> well cause a GUI
> component to repaint if any of the objects it renders are 
> altered in any way.
> With the tight-interface way of doing things, you would have 
> to define one
> event/listener pair for each property, and have one listener 
> instance for each
> possible cause for a repaint. This hastle is obviated by the 
> loose binding of a
> property change event to its name at the expense of 
> compile-time sanity checks.
> 
> There are several restrictions to the PropertyChange API that 
> are not present in
> the Changeability API. Firstly, properties should realy map 
> to bean properties.
> As Thomas pointed out, many of the things that can change in 
> BioJava objects are
> not bean properties, but are still mutable state. OK, I sort 
> of made this up,
> but this is the spirit of the things.
> 
> Secondly, if I have two beans with a property 'font', there 
> is no way for me to
> know whether they are comparable properties. One may be the 
> font associated with
> a GUI component, another may be a font name as a String in a 
> wrapper arround a
> text box. The BioJava ChangeType objects provide a type-safe 
> way to clearly
> identify the 'type' of the event. Interfaces define how they 
> may change by
> listing public static final ChangeType instances. Since these 
> are defined within
> interfaces, it is clear when two changes are of the same type 
> because they have
> exactly the same ChangeType property in the ChangeEvent.
> 
> Thirdly, both of the event models above are shallow. That is, 
> you can discover
> that an object has changed, but there is no way to know what 
> caused that change.
> For example, if a widget says that it has resized, you don't 
> know if that is
> because the user resized a window or the underlying data has 
> changed. In the
> case of the GUI, this probably doesn't matter, but for our 
> applications it does.
> You can listen to an HMM's PARAMETER changes to be informed that some
> propability for transitions or emissions has altered. If you 
> get one of these
> events, you can then call changeEvent.getPrevious() to pull 
> back the event that
> a probability Distribution fired to indicate that it had altered. This
> maintainance of the complete 'chain of evidence' is key to 
> robustly handeling
> these events. The flip side of this is that 
> ChangeVetoException inherits from
> NestedException, which means that it can maintain a complete 
> 'chain of evidence'
> for why a change is being prevented by using the constructor 
> that takes a
> message and a causual exception. A listener on the HMM can 
> veto all PARAMETER
> changes, which will result indirectly in all changes to the underlying
> Distributions being vetoed. This gives us an extremely 
> powerful API for
> maintining object integrity.
> 
> I am very open to the idea of moving towards reuse of a 
> standard Java event API
> post 1.1 if it can be cleanly and easily extended to do all 
> the things that ours
> can do. At the moment, though, for everyone except event 
> source implementors I
> think the learning curve is negligable, especialy if there is 
> previous knowledge
> of other event systems. We should probably aim to provide a
> Changeability->PropertyChangeEvent bridge for people wanting 
> to easily build
> GUIs (hours in the day ... volunteers?).
> 
> I probably haven't said anything new here (and used more 
> words than anybody
> else). The current state of affairs is a first-attempt at 
> implementing this kind
> of thing, so there is still considerable room for change. 
> After all, the code
> must primarily be usable rather than an exercise in design. I 
> almost certainly
> don't read enough APIs to know how other projects handle 
> this, there is probably
> a better way.
> 
> All the best,
> 
> Matthew
> 

From axk@sanger.ac.uk Mon Jan 15 16:52:42 2001 Date: Mon, 15 Jan 2001 16:52:42 +0000 From: Arnaud Kerhornou axk@sanger.ac.uk Subject: [Biojava-l] Biocorba Demo and Iterator reset ?
Hi

First just to let you know I ran the Biocorba demo with the new io
proposal. With some modifications within the server code, it works fine.

// SequenceFactory sFact = new SimpleSequenceFactory();
    SequenceBuilderFactory sfact = new
FastaDescriptionLineParser.Factory (SimpleSequenceBuilder.FACTORY);

// ...

// SequenceIterator seqI = new StreamReader(seqDBI, sFormat, rParser,
sFact);
    StreamReader seqI = new StreamReader (seqDBI, sFormat, rParser,
sfact);

And I'd like to know if it's possible to reset an Iterator Object to
start again an iteration from the beginning ?

cheers
--
Arnaud Kerhornou

The Sanger Centre
The Pathogen Sequencing Unit
Wellcome Trust Genome Campus, Hinxton, Cambridge, CB10 1SA, UK
Work: +44 (0) 1223 494955
Fax:  +44 (0) 1223 494919



From Robin.Emig@maxygen.com Mon Jan 15 17:00:10 2001 Date: Mon, 15 Jan 2001 09:00:10 -0800 From: Emig, Robin Robin.Emig@maxygen.com Subject: [Biojava-l] Immutable objects and ChangeListeners
2cents...
I think biojava will have three main purposes
1) To teach bioinformatics (hmms, etc)
2) To build quick "script" type apps to parse data
3) To build robust Bioinformatics applications

#1 and #2 don't really care about compatability, though using common APIs
lowers the barrier to entry for Biojava.
#3 Does care, and in fact if biojava doesn't remain lightweight and
compatible, it will never be used in this situation.

I propose that Matt et all work out a compatible API and send it around to
the mailing list. If it sucks, everyone will say so and by all means stick
with Changeable.

-Robin


-----Original Message-----
From: biojava-l-admin@biojava.org [mailto:biojava-l-admin@biojava.org]On
Behalf Of Forsch, Dan
Sent: Monday, January 15, 2001 8:52 AM
To: 'Matthew Pocock'
Cc: 'Mark Schreiber'; biojava-l@biojava.org
Subject: RE: [Biojava-l] Immutable objects and ChangeListeners


I don't want to beat this (cold) thread into the ground but I'd like to try
once more to clarify the point that I was making.  Someone (Thomas?) made
the point that the API's in BioJava should be geared towards support for
bioinformatics applications.  I agree with that but I don't belive there is
very much in the Changeable API or any change framework that is specific to
biological data.  BioJava's strength will be both in its support for common
bioinformatics tasks and in its leveraging the power of Java.  As such I
think the contributors should try to make use of the Java core libraries
whenever possible in order to emphasize compatibility.  

The PropertyChange API was developed for changes to JavaBean properties but
it is useful (and useable) outside of that context.  Changes to a
Distribution or SymbolList are not property changes, I agree, but the
distinction is really a semantical one which, IMO, doesn't justify
duplicating much of the purpose of that API.  It's also true that properties
which generate PropertyChangeEvents should have corresponding get/setters
but that is just a JavaBeans _convention_ and shouldn't be required to use
that API to represent changes in a more general way (incidentally, I think
that BioJava API's should use the get/set convention whenever possible, even
in non-GUI interfaces and classes).  As far as the type safety issue is
concerned, the same thing could be achieved with public String constants
defined in BioJava interfaces that is being done with public ChangeType
members.

I'll reiterate that I think Changeable is a superior model to
Property/Vetoable Change but the price of potential incompatibility is too
high IMO.  Consider the example of a GUI application using BioJava to model
the domain data and also using 3rd party JavaBeans in the UI.   A component
in such an application will likely have to be both a PropertyChangeListener
for the beans and ChangeListener for changes in BioJava objects.  If this
overlap can be bridged by adapters between the two API's then that solution
seems like a good compromise.

Dan Forsch, Principal Software Engineer
NetGenics, Inc.
1717 East 9th Street, #1600
Cleveland, OH  44114
phone: 206.374.4541


> -----Original Message-----
> From: Matthew Pocock [mailto:mrp@sanger.ac.uk]
> Sent: Wednesday, January 10, 2001 7:22 AM
> To: Forsch, Dan
> Cc: 'Mark Schreiber'; biojava-l@biojava.org
> Subject: Re: [Biojava-l] Immutable objects and ChangeListeners
> 
> 
> Hi.
> 
> Sory for the length of this - it's a bit of a mental vomit. 
> Events are cool.
> They allow you to know that objects are changing without 
> invalidating the
> encapsulation of the objects - fostering loose binding betwen 
> components.
> 
> The Java libraries seem to contain two types of event models. 
> Firstly, there is
> the interface based events, such as the 
> MouseListener/MouseEvent, where there is
> an interface for each logical group of parameters that may be 
> interesting to a
> listener, and the interface for that listener is defined. 
> There is one set of
> events and listeners for each logical group of events e.g.
> ActionEvent/ActionListener. This gives very good compile-time 
> binding, and is
> apropreate for cases where objects need to be informed of a 
> specific change and
> perform a specific response - handling a button press and the like.
> 
> The other extreem is exemplified by the
> PropertyChangeEvent/PropertyChangeListener api. These events 
> signify that a
> JavaBeans property on an object has altered (or is about to 
> alter). The property
> is specified by a string. This allows a single listener to 
> work with a range of
> event sources and property types e.g. a repaint listener may 
> well cause a GUI
> component to repaint if any of the objects it renders are 
> altered in any way.
> With the tight-interface way of doing things, you would have 
> to define one
> event/listener pair for each property, and have one listener 
> instance for each
> possible cause for a repaint. This hastle is obviated by the 
> loose binding of a
> property change event to its name at the expense of 
> compile-time sanity checks.
> 
> There are several restrictions to the PropertyChange API that 
> are not present in
> the Changeability API. Firstly, properties should realy map 
> to bean properties.
> As Thomas pointed out, many of the things that can change in 
> BioJava objects are
> not bean properties, but are still mutable state. OK, I sort 
> of made this up,
> but this is the spirit of the things.
> 
> Secondly, if I have two beans with a property 'font', there 
> is no way for me to
> know whether they are comparable properties. One may be the 
> font associated with
> a GUI component, another may be a font name as a String in a 
> wrapper arround a
> text box. The BioJava ChangeType objects provide a type-safe 
> way to clearly
> identify the 'type' of the event. Interfaces define how they 
> may change by
> listing public static final ChangeType instances. Since these 
> are defined within
> interfaces, it is clear when two changes are of the same type 
> because they have
> exactly the same ChangeType property in the ChangeEvent.
> 
> Thirdly, both of the event models above are shallow. That is, 
> you can discover
> that an object has changed, but there is no way to know what 
> caused that change.
> For example, if a widget says that it has resized, you don't 
> know if that is
> because the user resized a window or the underlying data has 
> changed. In the
> case of the GUI, this probably doesn't matter, but for our 
> applications it does.
> You can listen to an HMM's PARAMETER changes to be informed that some
> propability for transitions or emissions has altered. If you 
> get one of these
> events, you can then call changeEvent.getPrevious() to pull 
> back the event that
> a probability Distribution fired to indicate that it had altered. This
> maintainance of the complete 'chain of evidence' is key to 
> robustly handeling
> these events. The flip side of this is that 
> ChangeVetoException inherits from
> NestedException, which means that it can maintain a complete 
> 'chain of evidence'
> for why a change is being prevented by using the constructor 
> that takes a
> message and a causual exception. A listener on the HMM can 
> veto all PARAMETER
> changes, which will result indirectly in all changes to the underlying
> Distributions being vetoed. This gives us an extremely 
> powerful API for
> maintining object integrity.
> 
> I am very open to the idea of moving towards reuse of a 
> standard Java event API
> post 1.1 if it can be cleanly and easily extended to do all 
> the things that ours
> can do. At the moment, though, for everyone except event 
> source implementors I
> think the learning curve is negligable, especialy if there is 
> previous knowledge
> of other event systems. We should probably aim to provide a
> Changeability->PropertyChangeEvent bridge for people wanting 
> to easily build
> GUIs (hours in the day ... volunteers?).
> 
> I probably haven't said anything new here (and used more 
> words than anybody
> else). The current state of affairs is a first-attempt at 
> implementing this kind
> of thing, so there is still considerable room for change. 
> After all, the code
> must primarily be usable rather than an exercise in design. I 
> almost certainly
> don't read enough APIs to know how other projects handle 
> this, there is probably
> a better way.
> 
> All the best,
> 
> Matthew
> 
_______________________________________________
Biojava-l mailing list  -  Biojava-l@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

From dorsch@netgenics.com Mon Jan 15 17:35:17 2001 Date: Mon, 15 Jan 2001 12:35:17 -0500 From: Forsch, Dan dorsch@netgenics.com Subject: [Biojava-l] Immutability as a default
> -----Original Message-----
> From: Thomas Down [mailto:td2@sanger.ac.uk]
> Sent: Wednesday, January 10, 2001 3:15 AM
> To: Forsch, Dan
> Cc: 'Mark Schreiber'; Matthew Pocock; biojava-l@biojava.org
> Subject: Re: [Biojava-l] Immutable objects and ChangeListeners
> 
> > I was further wondering if some of the "missing" implementations of
> > Changeable, particularly in some of the Simple... 
> implementations like
> > SimpleSequence, should be filled in.  Is there any support 
> for adding this
> > to the To Do list for 1.1?
> 
> What do you mean by `missing'?  If an object really is immutable,
> then it's fine for it to have a stub Changeable implementation.
> 
> On the other hand, there are also some objects which aren't
> quite immutable as they seem (usually because they are 
> Annotatable, and the annotation can change), and we should
> certainly look into fixing those ASAP. (I think I have to
> take some of the blame for these -- oops.)

I agree that an empty Changeable implementation satisfies the contract for
an object which is always immutable.  I guess I need to rephrase my question
and ask why many of the concrete implementations of BioJava interfaces
(Simple...) would be immutable by default.  As previously highlighted, it's
easy to 'lock' an instance of a changeable value with an AlwaysVetoListener
but it's not possible go in the reverse direction if the Changeable
interface is no-oped.  Put another way, couldn't mutability be a runtime
object-wise issue rather than a compile-time class-wise one?

I haven't seen any cases of immutable objects which are really mutable but I
belive I found one bug related to mutability.  It's evident in the following
code:

            ViewSequence view = new ViewSequence(someSequence);
            Annotation annot = view.getAnnotation();
            annot.addChangeListener(ChangeListener.LOG_TO_OUT,
Annotation.PROPERTY);
	try {
                annot.setProperty("Dummy", "Value");
            }
            catch (ChangeVetoException cve) {
            }

The above results in: java.util.NoSuchElementException: Property Dummy
unknown

The problem is that OverlayAnnotation is calling getProperty() from
setProperty() to get the old value for the ChangeEvent.  The former in turn
ends up calling parent.getProperty() if the key is new, but SimpleAnnotation
throws NoSuchElementException for unknown keys.  

A possible solution is to have OverlayAnnotation catch the exception and
just return null.  What I think would be better is to not throw a
NoSuchElementException in getProperty because it is a RuntimeException which
the compiler doesn't force you to catch even if it's declared using
"throws".  My preference would to change the semantics of
Annotation.getProperty() to return null when an unknown key is requested.

I'd make a fix myself but I don't have write access to CVS.

Dan Forsch, Principal Software Engineer
NetGenics, Inc.
1717 East 9th Street, #1600
Cleveland, OH  44114
phone: 206.374.4541

From td2@sanger.ac.uk Tue Jan 16 10:17:09 2001 Date: Tue, 16 Jan 2001 10:17:09 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Biocorba Demo and Iterator reset ?
On Mon, Jan 15, 2001 at 04:52:42PM +0000, Arnaud Kerhornou wrote:
> Hi
> 
> First just to let you know I ran the Biocorba demo with the new io
> proposal. With some modifications within the server code, it works fine.
> 
> // SequenceFactory sFact = new SimpleSequenceFactory();
>     SequenceBuilderFactory sfact = new
> FastaDescriptionLineParser.Factory (SimpleSequenceBuilder.FACTORY);
> 
> // ...
> 
> // SequenceIterator seqI = new StreamReader(seqDBI, sFormat, rParser,
> sFact);
>     StreamReader seqI = new StreamReader (seqDBI, sFormat, rParser,
> sfact);

Cool.  Do you have CVS write access (Matthew's probably the
person to ask if you want an account), or would you like me to
check this in?

> And I'd like to know if it's possible to reset an Iterator Object to
> start again an iteration from the beginning ?

No, I don't think iterators should have this functionality.  An
iterator could encapsulate, for example, a stream of sequences
coming down an HTTP connection, and this can't be reset without
re-issuing the HTTP request.  In both BioJava and BioCorba, the
corrent pattern if you want multiple iterations is to got a
SequenceDB (PrimarySeqDB), and create new iterators as required.

[As an aside, I've been working  on the performance issues of
 the BioJava IndexedSequenceDB over the weekend, and I'll add a
 more efficient iterator() method to that.]


    Thomas.

From td2@sanger.ac.uk Tue Jan 16 12:10:08 2001 Date: Tue, 16 Jan 2001 12:10:08 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Adding introspection to the ChangeEvent system
I've added a simple introspection system to the biojava
ChangeEvent mechanism.

There's an extra method in ChangeType:

  public static Set getChangeTypes(Class clazz);

This returns a set of all ChangeTypes declared by the specified
class (and any superclasses and interfaces).

I've written a quick command line tool to do the introspection -- look
at ListChangeTypes.java in the demos/ directory.

This also potentially opens the way for using the ChangeEvents
in an IDE-type environment.  Are there any IDEs out there which
allow plugins for introspection of classes, or is this always
hard-coded?  If not, why not? ;)


    Thomas.

From mark_s@sanger.otago.ac.nz Tue Jan 16 23:33:57 2001 Date: Wed, 17 Jan 2001 12:33:57 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] HMM's and Distributions
Hi,

As a bit of a learning excercise I am recoding the Dice.java demo to work
with the new definitions of some of the Seq and Dist and DP classes. This
may also be useful to others so I may post it when finished.

I have on quick question. I notice that transition probabilities are
passed to a HMM as a Distribution object. How would one construct such an
object to hold the transitions and probabilities??

Sorry for the newbie question but I think my documentation is a bit out of
date.

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From mark_s@sanger.otago.ac.nz Wed Jan 17 01:54:40 2001 Date: Wed, 17 Jan 2001 14:54:40 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] Re: HMM's and Distributions
Oops, Sorry I didn't realise that the demos where on the CVS tree.

It does raise a point though. At what point will the biojava API become
stable. ie shouldn't we deprecate outdated methods from now on rather than
removing them entirely??  It would seem to be breaking one of the
fundamentals of OO design.

Just my $NZ 0.02

Mark

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From td2@sanger.ac.uk Wed Jan 17 10:46:49 2001 Date: Wed, 17 Jan 2001 10:46:49 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] HMM's and Distributions
On Wed, Jan 17, 2001 at 12:33:57PM +1300, Mark Schreiber wrote:
> Hi,
> 
> As a bit of a learning excercise I am recoding the Dice.java demo to work
> with the new definitions of some of the Seq and Dist and DP classes. This
> may also be useful to others so I may post it when finished.
> 
> I have on quick question. I notice that transition probabilities are
> passed to a HMM as a Distribution object. How would one construct such an
> object to hold the transitions and probabilities??

MarkovModel implementations implicitly construct alphabets
representing the set of transition destinations from any given
state, so you can do

  dist = DistributionFactory.DEFAULT.createDistribution(
                  model.transitionsFrom(someState));

I think you can also just get the distribution in current use:

  dist = model.getWeights(someState);

And alter that using the Distribution.setWeight(double) method.

Hope this helps,

    Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Wed Jan 17 10:51:59 2001 Date: Wed, 17 Jan 2001 10:51:59 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Re: HMM's and Distributions
On Wed, Jan 17, 2001 at 02:54:40PM +1300, Mark Schreiber wrote:
> 
> It does raise a point though. At what point will the biojava API become
> stable. ie shouldn't we deprecate outdated methods from now on rather than
> removing them entirely??  It would seem to be breaking one of the
> fundamentals of OO design.

Part of the problem here is that different parts of BioJava have
distinct lifecycles.  There's `core' stuff which is pretty stable --
certainly things like the Alphabet, SymbolList, and Sequence
interfaces really /ought/ to be stable, and we should probably
go the deprecation route if we ever do need to remove old methods.
Hopefully sequence input is reaching this point now, after the
refactoring of the last few months.

The dynamic programming toolkit is still in rather more of a
state of flux, and has changed architecture quite a bit since
it was originally written.  It certainly /will/ stabilize, but I'd
guess it's up to Matthew (who's done almost all the architecture
work in this package) to say when.

That said, I hope there won't be too many more upheavals -- the
current API (while very different from what was released in 1.0)
has been fairly stable for a while now.

Matthew?


From mrp@sanger.ac.uk Wed Jan 17 12:08:32 2001 Date: Wed, 17 Jan 2001 12:08:32 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Exciting New Nutraceutical Company- Promote your own ideas!
This mailing list is for the discussion of the BioJava open source
project. It is not for advertisments, job opportunities or any other
form of spam. If you are genuinely interested in BioJava then feel free
to contribute to the maling list. If you are not, then please do not
make our lives more painfull by sending junk mail.

Matthew Pocock (Project Coordinator)

dsokol@osnut.com wrote:
</snip>


From mrp@sanger.ac.uk Wed Jan 17 12:27:14 2001 Date: Wed, 17 Jan 2001 12:27:14 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Re: HMM's and Distributions
Perhaps we should tag API as stable in the javadoc once we believe that it
shouldn't change?

Thomas Down wrote:

> On Wed, Jan 17, 2001 at 02:54:40PM +1300, Mark Schreiber wrote:
> >
> > It does raise a point though. At what point will the biojava API become
> > stable. ie shouldn't we deprecate outdated methods from now on rather than
> > removing them entirely??  It would seem to be breaking one of the
> > fundamentals of OO design.
>
> Part of the problem here is that different parts of BioJava have
> distinct lifecycles.  There's `core' stuff which is pretty stable --
> certainly things like the Alphabet, SymbolList, and Sequence
> interfaces really /ought/ to be stable, and we should probably
> go the deprecation route if we ever do need to remove old methods.
> Hopefully sequence input is reaching this point now, after the
> refactoring of the last few months.
>
> The dynamic programming toolkit is still in rather more of a
> state of flux, and has changed architecture quite a bit since
> it was originally written.  It certainly /will/ stabilize, but I'd
> guess it's up to Matthew (who's done almost all the architecture
> work in this package) to say when.
>
> That said, I hope there won't be too many more upheavals -- the
> current API (while very different from what was released in 1.0)
> has been fairly stable for a while now.
>
> Matthew?
>
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l


From td2@sanger.ac.uk Wed Jan 17 13:40:45 2001 Date: Wed, 17 Jan 2001 13:40:45 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Immutability as a default
On Mon, Jan 15, 2001 at 12:35:17PM -0500, Forsch, Dan wrote:
> 
> I agree that an empty Changeable implementation satisfies the contract for
> an object which is always immutable.  I guess I need to rephrase my question
> and ask why many of the concrete implementations of BioJava interfaces
> (Simple...) would be immutable by default.  As previously highlighted, it's
> easy to 'lock' an instance of a changeable value with an AlwaysVetoListener
> but it's not possible go in the reverse direction if the Changeable
> interface is no-oped.  Put another way, couldn't mutability be a runtime
> object-wise issue rather than a compile-time class-wise one?

The point of specifying just about everything as interfaces (as
we do in BioJava), is so that we can have multiple implementations
optimized for specific purposes.  Sometimes, and immutable implementation
of an interface is potentially more efficient for the common (read-only)
case than an implementation which handles mutability gracefully.  This
is the `good' explanation for immutable-by-default implementations (The
not-so-good explanation is, of course, that the mutable implementation
is harder to write and nobody needs it yet).

The main (almost-)immutable-by-default object which comes to mind is
SimpleSymbolList.  This used to be a really important class since
these were being created by the I/O framework, and we wanted them
to be simple, reliable, and as fast as possible for the read-only
case.  Now the I/O framework is using it's own SymbolList implementations
99% of the time, so this argument no longer holds.

I'd agree that, as a general principle, the `Simple' implementations
should be complete, and that includes mutability support.  If nobody
else wants to take this on, I'll replace SimpleSymbolList with a new
implementation which is truly mutable.

> [snip]
>
> The problem is that OverlayAnnotation is calling getProperty() from
> setProperty() to get the old value for the ChangeEvent.  The former in turn
> ends up calling parent.getProperty() if the key is new, but SimpleAnnotation

Yeah, this is a bug which slipped in when we added the Changeable
support for this class -- it's fixed now.

Sorry about that,

   Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From td2@sanger.ac.uk Wed Jan 17 15:29:52 2001 Date: Wed, 17 Jan 2001 15:29:52 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Bibliographic objects
This isn't a new idea
   
   (http://biojava.org/pipermail/biojava-l/2000-May/000249.html)

but...  I'm interested in deverloping a [Bibliographic] reference
object model in BioJava.  These objects would be constructed
by things like EmblProcessor (and SwissprotProcessor) from the
headers of sequence records.  If we get them right, they might
also have many other applications, including running
stand-alone reference databases.

Is there any demand for this?

If we go ahead, I'd like to see an object model which is tightly
coupled to a sane XML schema.  You'd think that there should be
some standard XML bibliography schema, but right now we seem to
have:

  - Schemas (well, generally DTDs actually *sigh*) intended
    for heavy duty use in library systems.  For example, see:

      http://www.culture.fr/BiblioML/

  - Bibliography systems embedded in other applications (for
    instance Docbook)

Has anyone used an XML bibliography system?  Any recommendations?


Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett

From tmo@ebi.ac.uk Wed Jan 17 16:13:14 2001 Date: Wed, 17 Jan 2001 16:13:14 +0000 From: Tom Oinn tmo@ebi.ac.uk Subject: [Biojava-l] Bibliographic objects
Thomas Down wrote:
> 
> This isn't a new idea
> 
>    (http://biojava.org/pipermail/biojava-l/2000-May/000249.html)
> 
> but...  I'm interested in deverloping a [Bibliographic] reference
> object model in BioJava.  These objects would be constructed
> by things like EmblProcessor (and SwissprotProcessor) from the
> headers of sequence records.  If we get them right, they might
> also have many other applications, including running
> stand-alone reference databases.
> 
> Is there any demand for this?

Yes. We (in this case We -> Interpro programmers) are also thinking
about this, as we have what is tending towards a unified model for
references within EMBL, SWISSPROT and InterPro. We found the following
problems....

1. The databases that we ideally want to be able to model citations in
are not very good from the point of view of consistancy. We find many
mis-spellings, etc.

2. We're looking from the relational database viewpoint mostly, so our
ideas are focused on simple mappings between object and relational
models. This may not sit well with what you're thinking of, but it
may.

3. We're under the usual time constraints (i.e. heads of group saying
things like 'we need our unified reference database as soon as
possible'), which never helps.

Would any of the Sanger people have time to call round to the EBI? I
can attempt to arrange all the interested people at this end, probably
in a few weeks. Suggestions?

Cheers,

Tom


--
I love catnip mice...
It's why I chew their heads off,
They're good for breakfast	
					-- Cat Haiku

From td2@sanger.ac.uk Wed Jan 17 16:17:08 2001 Date: Wed, 17 Jan 2001 16:17:08 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] Bibliographic objects
On Wed, Jan 17, 2001 at 04:13:14PM +0000, Tom Oinn wrote:
> 
> > Is there any demand for this?
> 
> Yes. We (in this case We -> Interpro programmers) are also thinking
> about this, as we have what is tending towards a unified model for
> references within EMBL, SWISSPROT and InterPro. We found the following
> problems....
>
> 1. The databases that we ideally want to be able to model citations in
> are not very good from the point of view of consistancy. We find many
> mis-spellings, etc.

Yes *sigh*.  On the other hand, I'm not sure this should have
any effect on the actual Reference, Author, etc. interfaces.
I'd rather cope with ambiguities and typos by having external
classes for performing fuzzy comparisons between objects.

> Would any of the Sanger people have time to call round to the EBI? I
> can attempt to arrange all the interested people at this end, probably
> in a few weeks. Suggestions?

I'd be happy to drop round pretty much any time that's convenient.
Matthew has expressed an interest, too -- he'll be along if he can.

Thanks,
    Thomas.

From mdickson@netgenics.com Wed Jan 17 17:05:13 2001 Date: Wed, 17 Jan 2001 12:05:13 -0500 From: Dickson, Mike mdickson@netgenics.com Subject: [Biojava-l] Bibliographic objects
You might want to look at the BQS submission to the OMG.  It addresses
definitions for and query of Bibliographic information in life sciences.  It
was submitted by the EBI and (I thought) very nicely done.

Mike

-----Original Message-----
From: Thomas Down [mailto:td2@sanger.ac.uk]
Sent: Wednesday, January 17, 2001 10:30 AM
To: biojava-l@biojava.org
Subject: [Biojava-l] Bibliographic objects


This isn't a new idea
   
   (http://biojava.org/pipermail/biojava-l/2000-May/000249.html)

but...  I'm interested in deverloping a [Bibliographic] reference
object model in BioJava.  These objects would be constructed
by things like EmblProcessor (and SwissprotProcessor) from the
headers of sequence records.  If we get them right, they might
also have many other applications, including running
stand-alone reference databases.

Is there any demand for this?

If we go ahead, I'd like to see an object model which is tightly
coupled to a sane XML schema.  You'd think that there should be
some standard XML bibliography schema, but right now we seem to
have:

  - Schemas (well, generally DTDs actually *sigh*) intended
    for heavy duty use in library systems.  For example, see:

      http://www.culture.fr/BiblioML/

  - Bibliography systems embedded in other applications (for
    instance Docbook)

Has anyone used an XML bibliography system?  Any recommendations?


Thomas.
-- 
``If I was going to carry a large axe on my back to a diplomatic
function I think I'd want it glittery too.''
           -- Terry Pratchett
_______________________________________________
Biojava-l mailing list  -  Biojava-l@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

From smarkel@netgenics.com Wed Jan 17 17:16:08 2001 Date: Wed, 17 Jan 2001 09:16:08 -0800 From: Scott Markel smarkel@netgenics.com Subject: [Biojava-l] Bibliographic objects
"Dickson, Mike" wrote:
> 
> You might want to look at the BQS submission to the OMG.  It addresses
> definitions for and query of Bibliographic information in life sciences.  It
> was submitted by the EBI and (I thought) very nicely done.

The submission document can be found at

  http://cgi.omg.org/cgi-bin/doc?lifesci/00-09-14

A small errata document is also available

  http://cgi.omg.org/cgi-bin/doc?lifesci/00-10-02

Scott

-- 
Scott Markel, Ph.D.       NetGenics, Inc.
smarkel@netgenics.com     4350 Executive Drive
Tel: 858 455 5223         Suite 260
FAX: 858 455 1388         San Diego, CA  92121

From mdriscol@genset.fr Wed Jan 17 17:34:20 2001 Date: Wed, 17 Jan 2001 18:34:20 +0100 From: Michael Driscoll mdriscol@genset.fr Subject: [Biojava-l] Bibliographic objects & NCBI's Pubmed
The citation model developed at the National Library of Medicine, which is fairly
robust and has been in use for many years in Medline, has been implemented and
extended in NCBI's Pubmed. (http://www.ncbi.nlm.nih.gov/pubmed .)

Resource links of interest:

NLM's current DTD:
 http://www.ncbi.nlm.nih.gov:80/entrez/query/static/PubMed.dtd
An example XML file:
 http://www.ncbi.nlm.nih.gov:80/entrez/query/static/spec.html#ExampleXMLfile
Another entry -- to see XML select "View As XML" in toolbar:
 http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=2231712&dopt=Abstract



Mike

Ingenieur Logiciel
GENSET SA
24 rue Royale
75008 Paris FRANCE


> Message: 10
> Date: Wed, 17 Jan 2001 16:17:08 +0000
> From: Thomas Down <td2@sanger.ac.uk>
> To: Tom Oinn <tmo@ebi.ac.uk>
> Cc: biojava-l@biojava.org
> Subject: Re: [Biojava-l] Bibliographic objects
> Organization: This tangled web on which I'm laid intwined
>
> On Wed, Jan 17, 2001 at 04:13:14PM +0000, Tom Oinn wrote:
> >
> > > Is there any demand for this?
> >
> > Yes. We (in this case We -> Interpro programmers) are also thinking
> > about this, as we have what is tending towards a unified model for
> > references within EMBL, SWISSPROT and InterPro. We found the following
> > problems....
> >
> > 1. The databases that we ideally want to be able to model citations in
> > are not very good from the point of view of consistancy. We find many
> > mis-spellings, etc.
>
> Yes *sigh*.  On the other hand, I'm not sure this should have
> any effect on the actual Reference, Author, etc. interfaces.
> I'd rather cope with ambiguities and typos by having external
> classes for performing fuzzy comparisons between objects.
>
> > Would any of the Sanger people have time to call round to the EBI? I
> > can attempt to arrange all the interested people at this end, probably
> > in a few weeks. Suggestions?
>
> I'd be happy to drop round pretty much any time that's convenient.
> Matthew has expressed an interest, too -- he'll be along if he can.
>
> Thanks,
>     Thomas.


From mark_s@sanger.otago.ac.nz Thu Jan 18 01:26:22 2001 Date: Thu, 18 Jan 2001 14:26:22 +1300 (NZDT) From: Mark Schreiber mark_s@sanger.otago.ac.nz Subject: [Biojava-l] Up-to-date Dice.Java
Hi,

I did find that the most recent CVS copy of Dice.java was still a little
out of date and wouldn't compile. So here is the modified source which
seems to work.

If anyone has comments on how I may have done it better please let me
know.

Mark

/*
 *                    BioJava development code
 *
 * This code may be freely distributed and modified under the
 * terms of the GNU Lesser General Public Licence.  This should
 * be distributed with the code.  If you do not have a copy,
 * see:
 *
 *      http://www.gnu.org/copyleft/lesser.html
 *
 * Copyright for this code is held jointly by the individual
 * authors.  These should be listed in @author doc comments.
 *
 * For more information on the BioJava project and its aims,
 * or to join the biojava-l mailing list, visit the home page
 * at:
 *
 *      http://www.biojava.org/
 *
 */
package biojava.tutorials;

import org.biojava.bio.*;
import org.biojava.bio.symbol.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.dist.*;
import org.biojava.bio.dp.*;

/**
 * This demo file is a simulation of the "The occasionally dishonest
casino" example
 * from the book by R. Durbin, S. Eddy, A. Krogh, G. Mitchison,
 * "Biological Sequence Analysis",
 * Chapter 3 Markov Chains and hidden Markov models, Section 2, pp55-57.
 * <P>
 * Use: <code>Dice</code>
 * <p>
 * The output consists of three lines:  line 1 represents the output
sequence generated
 * by the hidden markov model (f for fair and l for loaded).  Line 2
contains the name of
 * the die which emitted the corresponding output symbol.  Line 3 shows
the state
 * sequence predicted by the Viterbi algorithm.
 * <P>
 *
 * @author Samiul Hasan
 */

public class Dice
{
  public static void main(String[] args)
  throws Exception {
  	Symbol[] rolls=new Symbol[6];

   	//set up the dice alphabet
   	SimpleAlphabet diceAlphabet=new SimpleAlphabet();
   	diceAlphabet.setName("DiceAlphabet");
        AlphabetManager manager = new AlphabetManager();
   	for(int i=1;i<7;i++) {
	    rolls[i-1]=
manager.createSymbol((char)('0'+i),""+i,Annotation.EMPTY_ANNOTATION);
	    diceAlphabet.addSymbol(rolls[i-1]);
    }

    int [] advance = { 1 };
    Distribution fairD =
DistributionFactory.DEFAULT.createDistribution(diceAlphabet);
    EmissionState fairS = new SimpleEmissionState("fair",
Annotation.EMPTY_ANNOTATION, advance, fairD);
    Distribution loadedD =
DistributionFactory.DEFAULT.createDistribution(diceAlphabet);
    EmissionState loadedS = new SimpleEmissionState("loaded",
Annotation.EMPTY_ANNOTATION, advance, loadedD);

	  SimpleMarkovModel casino = new SimpleMarkovModel(1,
diceAlphabet, "Casino");
    casino.addState(fairS);
    casino.addState(loadedS);

	  //set up transitions between states.
    casino.createTransition(casino.magicalState(),fairS);
    casino.createTransition(casino.magicalState(),loadedS);
    casino.createTransition(fairS,casino.magicalState());
    casino.createTransition(loadedS,casino.magicalState());
    casino.createTransition(fairS,loadedS);
    casino.createTransition(loadedS,fairS);
    casino.createTransition(fairS,fairS);
    casino.createTransition(loadedS,loadedS);

	  //set up emission probabilities.
    for(int i=0;i<rolls.length;i++)	{
	    fairD.setWeight(rolls[i],1.0/6.0);
	    loadedD.setWeight(rolls[i], 0.1);
    }
    loadedD.setWeight(rolls[5],0.5);

	  //set up transition scores.
    Distribution dist;

    dist = casino.getWeights(casino.magicalState());
    dist.setWeight(fairS, 0.8);
    dist.setWeight(loadedS, 0.2);

    dist = casino.getWeights(fairS);
    dist.setWeight(loadedS,               0.04);
    dist.setWeight(fairS,                 0.95);
    dist.setWeight(casino.magicalState(), 0.01);

    dist = casino.getWeights(loadedS);
    dist.setWeight(fairS,                 0.09);
    dist.setWeight(loadedS,               0.90);
    dist.setWeight(casino.magicalState(), 0.01);

	  DP dp=DPFactory.DEFAULT.createDP(casino);
    StatePath obs_rolls = dp.generate(300);

	  SymbolList roll_sequence =
obs_rolls.symbolListForLabel(StatePath.SEQUENCE);
    SymbolList[] res_array = {roll_sequence};
    StatePath v = dp.viterbi(res_array, ScoreType.PROBABILITY);

	  //print out obs_sequence, output, state symbols.
    for(int i = 1; i <= obs_rolls.length()/60; i++) {
      for(int j=i*60; j<Math.min((i+1)*60, obs_rolls.length()); j++)  {
        System.out.print(obs_rolls.symbolAt(StatePath.SEQUENCE,
j+1).getToken());
      }
      System.out.print("\n");
      for(int j=i*60; j<Math.min((i+1)*60, obs_rolls.length()); j++)  {
        System.out.print(obs_rolls.symbolAt(StatePath.STATES,
j+1).getToken());
      }
      System.out.print("\n");
      for(int j=i*60; j<Math.min((i+1)*60, obs_rolls.length()); j++)  {
        System.out.print(v.symbolAt(StatePath.STATES, j+1).getToken());
      }
      System.out.print("\n\n");
    }
  }
}


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Schreiber			Ph: 64 3 4797875
Rm 218				email mark_s@sanger.otago.ac.nz
Department of Biochemistry	email m.schreiber@clear.net.nz
University of Otago		
PO Box 56
Dunedin
New Zealand
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


From muilu@ebi.ac.uk Thu Jan 18 10:53:23 2001 Date: Thu, 18 Jan 2001 10:53:23 +0000 From: Juha Muilu muilu@ebi.ac.uk Subject: [Biojava-l] Bibliographic objects & NCBI's Pubmed
Hi 
I am forwarding Martin Senger's reply, he is not on the list.

> 
> > The citation model developed at the National Library of Medicine, which is fairly
> > robust and has been in use for many years in Medline, has been implemented and
> > extended in NCBI's Pubmed. (http://www.ncbi.nlm.nih.gov/pubmed .)
> >
   The specification developed in the OMG Life Science Research group
(as
mentioned before by Mike Dickson) was designed after studying several
data
models, and one of them was the Pubmed. I believe (and even more, we are
now working on implementation of it) that the LSR specification can be
used to access "any" bibliographic repository and still provide data in
an
interoperable way. The details of the data model (and the spec itself)
can
be found at http://industry.ebi.ac.uk/~senger/BQS/ (which is only a
temporary URL - the right one later will be
http://industry.ebi.ac.uk/openBQS/), especially at
http://industry.ebi.ac.uk/~senger/BQS/web.

   Regards,
   Martin



Michael Driscoll wrote:
> 
> The citation model developed at the National Library of Medicine, which is fairly
> robust and has been in use for many years in Medline, has been implemented and
> extended in NCBI's Pubmed. (http://www.ncbi.nlm.nih.gov/pubmed .)
> 
> Resource links of interest:
> 
> NLM's current DTD:
>  http://www.ncbi.nlm.nih.gov:80/entrez/query/static/PubMed.dtd
> An example XML file:
>  http://www.ncbi.nlm.nih.gov:80/entrez/query/static/spec.html#ExampleXMLfile
> Another entry -- to see XML select "View As XML" in toolbar:
>  http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=2231712&dopt=Abstract
> 
> Mike
> 
> Ingenieur Logiciel
> GENSET SA
> 24 rue Royale
> 75008 Paris FRANCE
> 
> > Message: 10
> > Date: Wed, 17 Jan 2001 16:17:08 +0000
> > From: Thomas Down <td2@sanger.ac.uk>
> > To: Tom Oinn <tmo@ebi.ac.uk>
> > Cc: biojava-l@biojava.org
> > Subject: Re: [Biojava-l] Bibliographic objects
> > Organization: This tangled web on which I'm laid intwined
> >
> > On Wed, Jan 17, 2001 at 04:13:14PM +0000, Tom Oinn wrote:
> > >
> > > > Is there any demand for this?
> > >
> > > Yes. We (in this case We -> Interpro programmers) are also thinking
> > > about this, as we have what is tending towards a unified model for
> > > references within EMBL, SWISSPROT and InterPro. We found the following
> > > problems....
> > >
> > > 1. The databases that we ideally want to be able to model citations in
> > > are not very good from the point of view of consistancy. We find many
> > > mis-spellings, etc.
> >
> > Yes *sigh*.  On the other hand, I'm not sure this should have
> > any effect on the actual Reference, Author, etc. interfaces.
> > I'd rather cope with ambiguities and typos by having external
> > classes for performing fuzzy comparisons between objects.
> >
> > > Would any of the Sanger people have time to call round to the EBI? I
> > > can attempt to arrange all the interested people at this end, probably
> > > in a few weeks. Suggestions?
> >
> > I'd be happy to drop round pretty much any time that's convenient.
> > Matthew has expressed an interest, too -- he'll be along if he can.
> >
> > Thanks,
> >     Thomas.
> 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l

-- 
 +--------------------------------------------------------------------+
 |Juha Muilu, Ph.D., EMBL Outstation| Email:  muilu@ebi.ac.uk         |
 |European Bioinformatics Institute | Phone:  +44 (0)1223 494 624     |
 |Wellcome Trust Genome Campus      | Fax:    +44 (0)1223 494 468     |
 |Hinxton, Cambridge CB10 1SD, UK   | http://industry.ebi.ac.uk/~muilu|
 +--------------------------------------------------------------------+

From hlapp@gmx.net Thu Jan 18 19:43:40 2001 Date: Thu, 18 Jan 2001 11:43:40 -0800 From: Hilmar Lapp hlapp@gmx.net Subject: [Biojava-l] Re: HMM's and Distributions
Matthew Pocock wrote:
> 
> Perhaps we should tag API as stable in the javadoc once we believe that it
> shouldn't change?
> 

You should do so when it *doesn't* change anymore, not according
to your belief. Regarding stability, a significant improvement of
the code structure may be a good reason to change an API, but then
don't claim an API to be stable. Over the last 8 months I have
seen many of the core BioJava APIs change, so if stability is what
you primarily want, BioJava isn't. This doesn't make the package
bad (in fact, it's very good work), but you shouldn't raise wrong
expectations. In industry an API is stable if it changes maybe
once in a year.

	Hilmar
-- 
-----------------------------------------------------------------
Hilmar Lapp                                email: hlapp@gmx.net
GNF, San Diego, Ca. 92122                  phone: +1 858 812 1757
-----------------------------------------------------------------

From boettche@poll.informatik.hu-berlin.de Fri Jan 19 14:19:47 2001 Date: Fri, 19 Jan 2001 15:19:47 +0100 From: Julia Boettcher boettche@poll.informatik.hu-berlin.de Subject: [Biojava-l] EmblProcessor
Hello,

In the 3rd chapter of your Tutorial
(http://www.biojava.org/tutorials/chap_iobasics.html) the class
EmblProcessor is used. Does this class exist already? Do you know a
working Parser for EMBL- and SWISSPROT-flatfiles? 

thanks, Julia


Julia Boettcher
Lehrstuhl fuer Datenbanken und Informationssysteme
Institut fuer Informatik
Humboldt-Universitaet, Berlin

From mrp@sanger.ac.uk Fri Jan 19 14:25:06 2001 Date: Fri, 19 Jan 2001 14:25:06 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Up-to-date Dice.Java
Thanks Mark,

I have merged this in with some edit of my own, and commited it to CVS.

Matthew

Mark Schreiber wrote:

> Hi,
>
> I did find that the most recent CVS copy of Dice.java was still a little
> out of date and wouldn't compile. So here is the modified source which
> seems to work.
>
> If anyone has comments on how I may have done it better please let me
> know.
>
> Mark


From td2@sanger.ac.uk Fri Jan 19 14:39:25 2001 Date: Fri, 19 Jan 2001 14:39:25 +0000 From: Thomas Down td2@sanger.ac.uk Subject: [Biojava-l] EmblProcessor
On Fri, Jan 19, 2001 at 03:19:47PM +0100, Julia Boettcher wrote:
> Hello,
> 
> In the 3rd chapter of your Tutorial
> (http://www.biojava.org/tutorials/chap_iobasics.html) the class
> EmblProcessor is used. Does this class exist already? Do you know a
> working Parser for EMBL- and SWISSPROT-flatfiles? 

Yes, EmblProcessor does exist, as does a corresponding
SwissprotProcessor (although I'm not absolutely sure about
the status of that one).  Both of them are used as
`post-processing' filters for EmblLikeProcessor, as
described in the tutorial.

If you can't find these files, it may be that you're using
an old version of Biojava.  Sequence I/O is one of the
things that has changed significantly since the 1.0x
releases.  If you want to use the new I/O, you'll need to
download the latest snapshot from:

  http://biojava.org/download/binaries/

Alternatively, you can get an up-to-the-minute version from
anonymous CVS -- see:

  http://cvs.biojava.org/

Let me know if you have any trouble,

   Thomas.

From mrp@sanger.ac.uk Fri Jan 19 15:45:39 2001 Date: Fri, 19 Jan 2001 15:45:39 +0000 From: Matthew Pocock mrp@sanger.ac.uk Subject: [Biojava-l] Sequence Indexers
Hi.

Are there a large number of people using the IndexedSequenceDB class?
Thomas has made some changes to it that give significant performance
enhancements, and I was about to add the ability to plug in custom
index-stoorage back ends (like a tab-delimited back end, or berkley-db
or SQL). Both of these will make current index files obsolete. The
upside is that the process of building index files should be come only
slightly more expensive than counting the entries per file (near to the
cost of grepping them).

The current scheim serializes the entire hash of offsets to disk - this
is very time consuming & not a good solution for single-sequence
fetches. It also makes the index java-specific.

Scream now, or I will make the changes...

Matthew




From mrp@sanger.ac.uk Fri Jan 19 19:06:46 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Fri, 19 Jan 2001 19:06:46 +0000 Subject: [Biojava-l] New proteomics package Message-ID: <3A689045.62E7531B@sanger.ac.uk> Anouncing the new org.biojava.bio.proteomics package: Mike Jones (mjones@mpi.com) has just commited a proteomics package that slices, dices and weighs your peptides. In addition, he has added the interface SymbolPropertyTable in the symbol package that allows arbitrary numeric data to be associated with symbol instances. This looks like realy useful code for those of us who do proteins. Thanks Mike From kdj@sanger.ac.uk Sun Jan 21 11:26:04 2001 From: kdj@sanger.ac.uk (Keith James) Date: 21 Jan 2001 11:26:04 +0000 Subject: [Biojava-l] biojava-live no longer builds (?) Message-ID: Hi folks, There seems to be a bit of a problem with classes using xml.jar. Despite having it in my classpath, anything requiring classes within it can't find them e.g. /home/keith/devel/external/biojava-live/src/org/biojava/bio/proteomics/ Protease.java:25: cannot resolve symbol symbol : class Resolver location: package parser import com.sun.xml.parser.Resolver; ^ /home/keith/devel/external/biojava-live/src/org/biojava/bio/proteomics/ Protease.java:26: cannot resolve symbol symbol : class XmlDocument location: package tree import com.sun.xml.tree.XmlDocument; etc. To check that this wasn't just because I had broken something in my checkout, I downloaded a new anon CVS copy, which won't build either. Is anyone else having this problem? -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From td2@sanger.ac.uk Sun Jan 21 15:50:59 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sun, 21 Jan 2001 15:50:59 +0000 Subject: [Biojava-l] biojava-live no longer builds (?) In-Reply-To: ; from kdj@sanger.ac.uk on Sun, Jan 21, 2001 at 11:26:04AM +0000 References: Message-ID: <20010121155059.A15387@adnah.sanger.ac.uk> On Sun, Jan 21, 2001 at 11:26:04AM +0000, Keith James wrote: > > Hi folks, > > There seems to be a bit of a problem with classes using > xml.jar. Despite having it in my classpath, anything requiring classes > within it can't find them e.g. I don't think you've broken anything -- we supposedly don't have any code in the project which depends on xml.jar any more -- we switched to using Xerces-J (xerces.jar) a while back. Mike -- would you mind changing the proteomics code to use xerces for parsing it's XML files? It should only be a couple of lines of change. The build system doesn't pay much attention to your CLASSPATH environment variable -- it's specified in build.xml (if you're using ANT) or build/Builder.props (if you're using the old build system). If you need to get things compiling, I'd just add in xml.jar there... Hope this helps, Thomas. From kdj@sanger.ac.uk Sun Jan 21 17:22:22 2001 From: kdj@sanger.ac.uk (Keith James) Date: 21 Jan 2001 17:22:22 +0000 Subject: [Biojava-l] biojava-live no longer builds (?) In-Reply-To: <20010121155059.A15387@adnah.sanger.ac.uk> References: <20010121155059.A15387@adnah.sanger.ac.uk> Message-ID: >>>>> "Thomas" == Thomas Down writes: Thomas> The build system doesn't pay much attention to your Thomas> CLASSPATH environment variable -- it's specified in Thomas> build.xml (if you're using ANT) or build/Builder.props (if Thomas> you're using the old build system). If you need to get Thomas> things compiling, I'd just add in xml.jar there... I'm using the build system. Adding xml.jar to the props file fixed everything. ta, -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From mark_s@sanger.otago.ac.nz Mon Jan 22 01:24:44 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Mon, 22 Jan 2001 14:24:44 +1300 (NZDT) Subject: [Biojava-l] single and double headed HMM's Message-ID: Hi, I am fairly familiar with HMM's but I am not shure what is meant by the term double headed. Can someone explain?? Mark ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From mrp@sanger.ac.uk Mon Jan 22 11:14:13 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Mon, 22 Jan 2001 11:14:13 +0000 Subject: [Biojava-l] single and double headed HMM's References: Message-ID: <3A6C1605.5D817E62@sanger.ac.uk> Hi. Mark Schreiber wrote: > Hi, > > I am fairly familiar with HMM's but I am not shure what is meant by the > term double headed. Can someone explain?? Sure... A single-head HMM emits (or aligns) a single sequence with a set of states. A two-head HMM emits (or aligns) two sequences with a set of states. An n-head HMM emits (or aligns) n sequences with a set of states. However many heads the model has, it emits paralell lists of symbols, one line for each sequence being aligned, with gaps used to space the sequences out to the same length. A traditional one-head model would be a trans-membrain model, a profile HMM or a MEME weight-matrix. A traditional example of a two-head model would be pair-wise alignment, or aligning protein to genomic sequences. MSA performs n-head alignment to give you the (nearly) optimal alignment of n sequences. Each head may have a distinct alphabet - you could align DNA and PROTEIN and cDNA if you wanted - if you could think of something usefull that this did. An obvious and fun 3 head algorithm would be to align genomic to genomic via cDNA or PROTEIN to make a comparative gene finder. Should this go into the docs somewhere? > > > Mark > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Mark Schreiber Ph: 64 3 4797875 > Rm 218 email mark_s@sanger.otago.ac.nz > Department of Biochemistry email m.schreiber@clear.net.nz > University of Otago > PO Box 56 > Dunedin > New Zealand > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From td2@sanger.ac.uk Mon Jan 22 11:15:34 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Mon, 22 Jan 2001 11:15:34 +0000 Subject: [Biojava-l] single and double headed HMM's In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Mon, Jan 22, 2001 at 02:24:44PM +1300 References: Message-ID: <20010122111534.A28059@jabba.sanger.ac.uk> On Mon, Jan 22, 2001 at 02:24:44PM +1300, Mark Schreiber wrote: > Hi, > > I am fairly familiar with HMM's but I am not shure what is meant by the > term double headed. Can someone explain?? Not absolutely sure where the terminology originates but it refers to the number of sequences emitted by the model: - Single-head models emit a single sequence. The dp toolkit can be used to align and score a sequence against the model. Profile HMMs for recognising protein families would be a classic application. In biojava, these models generally emit over simple alphabets (eg DNA or protein). - Two-head models emit a pair of sequences. They can be used to align and score two sequences against one another. Alignment algorithms such as Smith-Waterman can be implemented as a two-head HMM. They always emit over cross-product alphabets (e.g. DNA x DNA). One day, it would be nice to upgrade the toolkit so that it can dynamically generate arbitrary-headed DP algorithms (i.e. for alighning three or more sequences). Hope this clarifies matters, Thomas. From birney@ebi.ac.uk Mon Jan 22 11:55:42 2001 From: birney@ebi.ac.uk (Ewan Birney) Date: Mon, 22 Jan 2001 11:55:42 +0000 (GMT) Subject: [Biojava-l] single and double headed HMM's In-Reply-To: <20010122111534.A28059@jabba.sanger.ac.uk> Message-ID: On Mon, 22 Jan 2001, Thomas Down wrote: > On Mon, Jan 22, 2001 at 02:24:44PM +1300, Mark Schreiber wrote: > > Hi, > > > > I am fairly familiar with HMM's but I am not shure what is meant by the > > term double headed. Can someone explain?? > > Not absolutely sure where the terminology originates but it > refers to the number of sequences emitted by the model: > > - Single-head models emit a single sequence. The dp toolkit > can be used to align and score a sequence against the model. > Profile HMMs for recognising protein families would be a > classic application. In biojava, these models generally > emit over simple alphabets (eg DNA or protein). > > - Two-head models emit a pair of sequences. They can be used > to align and score two sequences against one another. Alignment > algorithms such as Smith-Waterman can be implemented as > a two-head HMM. They always emit over cross-product alphabets > (e.g. DNA x DNA). The "standard" (durbin, eddy, krogh, holmes ... myself...) way to call this is a "Pair HMM" There is no real counterpart outside of bioinformatics. In grammar theory there are things called two-tape grammars, but that term gets abused between people who mean you need two tapes to handle the grammar and "transducing" grammars which turn one tape into another tape. The pair-hmm is closest to the two tape "transducing" grammar. > > One day, it would be nice to upgrade the toolkit so that it > can dynamically generate arbitrary-headed DP algorithms (i.e. > for alighning three or more sequences). > computationaly this does not behave well... ;) > Hope this clarifies matters, > > Thomas. > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > ----------------------------------------------------------------- Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420 . ----------------------------------------------------------------- From kdj@sanger.ac.uk Mon Jan 22 16:48:05 2001 From: kdj@sanger.ac.uk (Keith James) Date: 22 Jan 2001 16:48:05 +0000 Subject: [Biojava-l] package: org.biojava.bio.program.? Message-ID: Before I commit my classes for parsing Fasta search output, I'd like to get some feedback on what people feel is a good package for them to go in. Although I've only made an implementation for Fasta, I tried to make the interfaces applicable to any search output which is an arbitrary flat file containing a "start", a header (1+ lines) , hits (1 + lines) with optional subhits and an "end". This would hope to cover stuff like some of the EMBOSS programs. So I have (guided by seq io and gff design): SearchContentHandler (listener interface) SearchBuilder (subinterface of SearchContentHandler) SearchParser (interface) FastaSearchBuilder (implementation of SearchBuilder) FastaSearchParser (implementation of SearchParser) SearchReader (implementation of Iterator) The SearchReader constructor takes a SearchParser, SearchBuilder and BufferedReader and at the moment produces (SeqSimilaritySearchResult) Objects from next(). I'm intending to add filtering by having a decorator for SearchContentHandler which also takes a filter object (something like scoreFilter, EvalueFilter, PvalueFilter, topNhitsFilter). At the moment I've got all the files in org.biojava.bio.program.flat (arbitrary flat file) as the current packages seem to be named after the data source (xml, gff, das etc) rather than the content (search, structural). Any preferences? cheers, -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From td2@sanger.ac.uk Mon Jan 22 17:10:06 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Mon, 22 Jan 2001 17:10:06 +0000 Subject: [Biojava-l] Heads up: packages moving Message-ID: <20010122171006.C28059@jabba.sanger.ac.uk> There's been quite a lot of code accumulated into the BioJava core (biojava-live) CVS module. Before the 1.1 freeze (which I hope will be Real Soon Now), I'd like to see some peripheral packages moving out to separate, optional CVS modules. There are two candidates for this: The `CORBA' packages -> biojava-corba The `ACeDB' packages -> acedb, biojava-acedb Neither of these package have recieved very much attention during the 1.1 development cycle. It's likely that I will be doing some more work on the org.acedb packages in the not-too-distant future, but it would be good if we could find someone interested in maintaining the CORBA packages (they still need upgrading to the latest IDL, I think). Is everyone happy with these moves? If so, they'll happen in the next couple of days. Or is there a strong feeling in favour of leaving this functionality in biojava-live? (Note -- if you look at http://cvs.biojava.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=biojava you'll see that there are already several `optional' modules in the biojava repository -- this is just a continuation of that trend). Thomas. From mdickson@netgenics.com Mon Jan 22 17:22:42 2001 From: mdickson@netgenics.com (Dickson, Mike) Date: Mon, 22 Jan 2001 12:22:42 -0500 Subject: [Biojava-l] Heads up: packages moving Message-ID: I think both moves makes sense. Regarding maintaining the corba work, I'd been considering donating a bunch of the code we've done for the OMG LSR BSA to BioJava. It would of course be based on different IDL's than the current corba work. My idea was to write adapters that map the BSA Impl code to BioJava under the hood (for a server implementation for instance) and also an adapter that would map the BSA interfaces to BioJava interfaces. This would allow a client to use the BioJava interfaces and still talk to remote objects. I believe something similar to this approach was used in the current corba code. Anyway, I'd like qet an idea of interest in the work I'm proposing. In any event, I think that the packages you mention would be logically split apart Thomas. Many people will likely use BioJava without corba at all. Also, if we do incorporate our BSA work there'd be 2 possible corba API's so keeping them seperate seems sensible in any event. Mike -----Original Message----- From: Thomas Down [mailto:td2@sanger.ac.uk] Sent: Monday, January 22, 2001 12:10 PM To: biojava-l@biojava.org Subject: [Biojava-l] Heads up: packages moving There's been quite a lot of code accumulated into the BioJava core (biojava-live) CVS module. Before the 1.1 freeze (which I hope will be Real Soon Now), I'd like to see some peripheral packages moving out to separate, optional CVS modules. There are two candidates for this: The `CORBA' packages -> biojava-corba The `ACeDB' packages -> acedb, biojava-acedb Neither of these package have recieved very much attention during the 1.1 development cycle. It's likely that I will be doing some more work on the org.acedb packages in the not-too-distant future, but it would be good if we could find someone interested in maintaining the CORBA packages (they still need upgrading to the latest IDL, I think). Is everyone happy with these moves? If so, they'll happen in the next couple of days. Or is there a strong feeling in favour of leaving this functionality in biojava-live? (Note -- if you look at http://cvs.biojava.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=biojava you'll see that there are already several `optional' modules in the biojava repository -- this is just a continuation of that trend). Thomas. _______________________________________________ Biojava-l mailing list - Biojava-l@biojava.org http://biojava.org/mailman/listinfo/biojava-l From td2@sanger.ac.uk Mon Jan 22 17:18:38 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Mon, 22 Jan 2001 17:18:38 +0000 Subject: [Biojava-l] package: org.biojava.bio.program.? In-Reply-To: ; from kdj@sanger.ac.uk on Mon, Jan 22, 2001 at 04:48:05PM +0000 References: Message-ID: <20010122171838.D28059@jabba.sanger.ac.uk> On Mon, Jan 22, 2001 at 04:48:05PM +0000, Keith James wrote: > > Before I commit my classes for parsing Fasta search output, I'd like > to get some feedback on what people feel is a good package for them to > go in. > > So I have (guided by seq io and gff design): > > SearchContentHandler (listener interface) > SearchBuilder (subinterface of SearchContentHandler) > > SearchParser (interface) > > > FastaSearchBuilder (implementation of SearchBuilder) > FastaSearchParser (implementation of SearchParser) > > SearchReader (implementation of Iterator) Sounds good.... > At the moment I've got all the files in org.biojava.bio.program.flat > (arbitrary flat file) as the current packages seem to be named after > the data source (xml, gff, das etc) rather than the content (search, > structural). The contract for the org.biojava.bio.program.* hierarchy has never been 100% clear, at least to me. However, I guess that's a fair enough place to put the functionality. The other possibility would be a sub-package of bio.search (I must admit this seems a bit more logical than bio.program, but I don't have particularly strong feelings). Calling the package `flat' is kind-of limited though -- I think I'd prefer `fasta' (which everyone else has heard of) than `flat', which is kind-of value. You can always make it clear in the first sentance of package.html that the parsers work with EMBOSS tools as well. Anyway, it'll be good to see the code whichever package you decide on. Thomas. From mrp@sanger.ac.uk Mon Jan 22 17:30:11 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Mon, 22 Jan 2001 17:30:11 +0000 Subject: [Biojava-l] package: org.biojava.bio.program.? References: Message-ID: <3A6C6E22.4A0B99D7@sanger.ac.uk> Hi Keith, This sounds realy good. If you think that the listener API is generic, then by all means add it to your flat package. The Fasta implementation can also go in there if it is realy small (1-2 files). If it is in any way heavy (5+ classes), then I sudgest org.biojava.bio.programs.fasta package for the Fasta-specific portion only. The filters sound like a realy sound idea. Commit away! Matthew ... now for writing the bridge to make/consume our SAX events with search thingies ... Keith James wrote: > Before I commit my classes for parsing Fasta search output, I'd like > to get some feedback on what people feel is a good package for them to > go in. > > Although I've only made an implementation for Fasta, I tried to make > the interfaces applicable to any search output which is an arbitrary > flat file containing a "start", a header (1+ lines) , hits (1 + lines) > with optional subhits and an "end". This would hope to cover stuff > like some of the EMBOSS programs. > > So I have (guided by seq io and gff design): > > SearchContentHandler (listener interface) > SearchBuilder (subinterface of SearchContentHandler) > > SearchParser (interface) > > FastaSearchBuilder (implementation of SearchBuilder) > FastaSearchParser (implementation of SearchParser) > > SearchReader (implementation of Iterator) > > The SearchReader constructor takes a SearchParser, SearchBuilder and > BufferedReader and at the moment produces (SeqSimilaritySearchResult) > Objects from next(). > > I'm intending to add filtering by having a decorator for > SearchContentHandler which also takes a filter object (something like > scoreFilter, EvalueFilter, PvalueFilter, topNhitsFilter). > > At the moment I've got all the files in org.biojava.bio.program.flat > (arbitrary flat file) as the current packages seem to be named after > the data source (xml, gff, das etc) rather than the content (search, > structural). > > Any preferences? > > cheers, > > -- > > -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- > The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From mrp@sanger.ac.uk Mon Jan 22 17:36:25 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Mon, 22 Jan 2001 17:36:25 +0000 Subject: [Biojava-l] Heads up: packages moving References: Message-ID: <3A6C6F98.283D29FF@sanger.ac.uk> "Dickson, Mike" wrote: > Regarding maintaining the corba work, I'd been considering donating a bunch > of the code we've done for the OMG LSR BSA to BioJava. It would of course > be based on different IDL's than the current corba work. My idea was to > write adapters that map the BSA Impl code to BioJava under the hood (for a > server implementation for instance) and also an adapter that would map the > BSA interfaces to BioJava interfaces. This would allow a client to use the > BioJava interfaces and still talk to remote objects. I believe something > similar to this approach was used in the current corba code. Anyway, I'd > like qet an idea of interest in the work I'm proposing. If you would like to donate the code, I can set you up with CVS access. The adapters would go into their own CVS packages. I guess you would be responsible for maintaining them. Interoperability with BSA has to be a good thing - what do the industry people think? I don't see BioCorba and BSA as rival CORBA services for BioJava, esp if neither one is in the core repository. I think that if both are available, then people can chose the one that is most apropreate for a given task. Matthew From jason@chg.mc.duke.edu Mon Jan 22 18:26:03 2001 From: jason@chg.mc.duke.edu (Jason Stajich) Date: Mon, 22 Jan 2001 13:26:03 -0500 (EST) Subject: [Biojava-l] Heads up: packages moving In-Reply-To: <3A6C6F98.283D29FF@sanger.ac.uk> Message-ID: Mike - We'd certainly appreciate you donating the code. We have been discussing about how to make the OMG LSR => BioCORBA mapping work since last summer, there are a couple of places where things might be difficult, but a number of the proposed strategies seem to be doable. If you are willing to at least take a look at this, it would be very beneficial for the project. I do think separating the biocorba-java cvs module out is a good thing, we have actually separated bioperl-corba-client and bioperl-corba-server into two separate cvs modules to not force a client-only user to install any of the bioperl corba code to run the server. I'm bogged down in getting the bioperl 0.7 release ready - once we get our feature / locations issues settled and fuzzy feature/ multi-location features are handled I'll bring the bioperl corba code up to the current 0.2 IDL spec. One key component to the biocorba project is to provide code that is supported by all the bio language project (java,perl,python) so any bridge that is done to support OMG LSR should be implemented in each language's corba client/server code if possible. We should probably start a wiki page to this effect at some point... Jason Jason Stajich jason@chg.mc.duke.edu Center for Human Genetics Duke University Medical Center http://www.chg.duke.edu/ On Mon, 22 Jan 2001, Matthew Pocock wrote: > "Dickson, Mike" wrote: > > > Regarding maintaining the corba work, I'd been considering donating a bunch > > of the code we've done for the OMG LSR BSA to BioJava. It would of course > > be based on different IDL's than the current corba work. My idea was to > > write adapters that map the BSA Impl code to BioJava under the hood (for a > > server implementation for instance) and also an adapter that would map the > > BSA interfaces to BioJava interfaces. This would allow a client to use the > > BioJava interfaces and still talk to remote objects. I believe something > > similar to this approach was used in the current corba code. Anyway, I'd > > like qet an idea of interest in the work I'm proposing. > > If you would like to donate the code, I can set you up with CVS access. The > adapters would go into their own CVS packages. I guess you would be responsible > for maintaining them. Interoperability with BSA has to be a good thing - what do > the industry people think? > > I don't see BioCorba and BSA as rival CORBA services for BioJava, esp if neither > one is in the core repository. I think that if both are available, then people > can chose the one that is most apropreate for a given task. > > Matthew > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > From mark_s@sanger.otago.ac.nz Mon Jan 22 20:09:01 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Tue, 23 Jan 2001 09:09:01 +1300 (NZDT) Subject: [Biojava-l] single and double headed HMM's In-Reply-To: <3A6C1605.5D817E62@sanger.ac.uk> Message-ID: On Mon, 22 Jan 2001, Matthew Pocock wrote: > Hi. > > Mark Schreiber wrote: > > A traditional one-head model would be a trans-membrain model, a profile HMM > or a MEME weight-matrix. A traditional example of a two-head model would be > pair-wise alignment, or aligning protein to genomic sequences. MSA performs > n-head alignment to give you the (nearly) optimal alignment of n sequences. > Each head may have a distinct alphabet - you could align DNA and PROTEIN > and cDNA if you wanted - if you could think of something usefull that this > did. An obvious and fun 3 head algorithm would be to align genomic to > genomic via cDNA or PROTEIN to make a comparative gene finder. > > Should this go into the docs somewhere? Sure, how about in the package for one headed and two headed? Mark > > > > > > > Mark > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Mark Schreiber Ph: 64 3 4797875 > > Rm 218 email mark_s@sanger.otago.ac.nz > > Department of Biochemistry email m.schreiber@clear.net.nz > > University of Otago > > PO Box 56 > > Dunedin > > New Zealand > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > _______________________________________________ > > Biojava-l mailing list - Biojava-l@biojava.org > > http://biojava.org/mailman/listinfo/biojava-l > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From mjones@mpi.com Mon Jan 22 21:16:11 2001 From: mjones@mpi.com (Mike Jones) Date: Mon, 22 Jan 2001 16:16:11 -0500 Subject: [Biojava-l] biojava-live no longer builds (?) References: <20010121155059.A15387@adnah.sanger.ac.uk> Message-ID: <3A6CA31B.9176365E@mpi.com> I changed ProteinTools and MassCalc to use xerces. I tried to do a build on the whole thing but it bailed on io/EmblLikeFormat.java:95: Exception org.biojava.bio.seq.io.ParseException must be caught, or it must be declared in the throws clause of this method. [javac] listener.startSequence(); [javac] ^ [javac] 1 error The proteomics packages compiles ok if I do it separately. Keith James wrote: > >>>>> "Thomas" == Thomas Down writes: > > Thomas> The build system doesn't pay much attention to your > Thomas> CLASSPATH environment variable -- it's specified in > Thomas> build.xml (if you're using ANT) or build/Builder.props (if > Thomas> you're using the old build system). If you need to get > Thomas> things compiling, I'd just add in xml.jar there... > > I'm using the build system. Adding xml.jar to the props file fixed > everything. > > ta, > > -- > > -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- > The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From mark_s@sanger.otago.ac.nz Mon Jan 22 23:00:05 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Tue, 23 Jan 2001 12:00:05 +1300 (NZDT) Subject: [Biojava-l] Higer order HMMs Message-ID: Hi, If I want a HMM to emit hexamers as in a gene finding HMM do I just create a new hexamer alphabet and add that to the state or can it be mimicked by the way that the transitions are set?? Also if I want a different states to emit pentamers and some to emit triplets can they be combined in the same model using different alphabets? Mark ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From td2@sanger.ac.uk Tue Jan 23 10:29:23 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Tue, 23 Jan 2001 10:29:23 +0000 Subject: [Biojava-l] biojava-live no longer builds (?) In-Reply-To: <3A6CA31B.9176365E@mpi.com>; from mjones@mpi.com on Mon, Jan 22, 2001 at 04:16:11PM -0500 References: <20010121155059.A15387@adnah.sanger.ac.uk> <3A6CA31B.9176365E@mpi.com> Message-ID: <20010123102923.B1295@jabba.sanger.ac.uk> On Mon, Jan 22, 2001 at 04:16:11PM -0500, Mike Jones wrote: > I changed ProteinTools and MassCalc to use xerces. I tried to do a build on the > whole thing but it bailed on > > io/EmblLikeFormat.java:95: Exception org.biojava.bio.seq.io.ParseException must be caught, or it must be declared in the throws clause of this method. > [javac] listener.startSequence(); > [javac] ^ > [javac] 1 error I've sorted this out now (Matthew: I think this relates to your changes -- I've just added `throws ParseException' in the appropriate places). The project now builds cleanly for me -- let me know if you're still having any trouble. From axk@sanger.ac.uk Tue Jan 23 11:00:55 2001 From: axk@sanger.ac.uk (Arnaud Kerhornou) Date: Tue, 23 Jan 2001 11:00:55 +0000 Subject: [Biojava-l] Integrating Biojava into an organism Database System Message-ID: <3A6D6467.3A5A0D8@sanger.ac.uk> Hi I work for the Pathogen Sequencing Unit at the Sanger Centre. One of our projects is to set a database. This database will store publicly available data regarding several organisms. We are interested in implementing the Database Interface with Java. So I was thinking how to integrate BioJava, in other words our objects would behave as BioJava objects, following two ways : The first one is our own objects would inherit from the BioJava Interface. This implies to implement them, and thus we'll have difficulties to keep them compliant iwth the future development within BioJava. Another solution is to inherit from your own object implementation, but in that case we won't be able to set a hierarcherical class inheritance tree of our own (no multiple inheritance). The second solution, our objects would wrap Biojava objects, thus delegating the implementation of Biojava behaviours to objects, part of the Biojava project. Does this solution sound better ? I started implementing my own Sequence object which wraps a SimpleSequence Object. Our objects are designed as Persistent and the storage will be in a relational database. Instead of mapping the Biojava design into a Relational Design, I tried to store the wrapped SimpleSequence object into a MySQL Blob data type. => An exception has been raised because SimpleFeatureHolder is not serializable ! But actually I'm not sure we need to make Biojava Objects persistent, we would have our own object design. These objects will just be able to behave as biojava objects, delegating the behaviour implementation to a transient biojava object. Does it make any sense ? -- Arnaud Kerhornou The Sanger Centre The Pathogen Sequencing Unit Wellcome Trust Genome Campus, Hinxton, Cambridge, CB10 1SA, UK Work: +44 (0) 1223 494955 Fax: +44 (0) 1223 494919 From birney@ebi.ac.uk Tue Jan 23 11:59:32 2001 From: birney@ebi.ac.uk (Ewan Birney) Date: Tue, 23 Jan 2001 11:59:32 +0000 (GMT) Subject: [Biojava-l] Integrating Biojava into an organism Database System In-Reply-To: <3A6D6467.3A5A0D8@sanger.ac.uk> Message-ID: On Tue, 23 Jan 2001, Arnaud Kerhornou wrote: > Hi > > I work for the Pathogen Sequencing Unit at the Sanger Centre. One of our > projects is to set a database. This database will store publicly > available data regarding several organisms. > We are interested in implementing the Database Interface with Java. > > So I was thinking how to integrate BioJava, in other words our objects > would behave as BioJava objects, following two ways : > > The first one is our own objects would inherit from the BioJava > Interface. This implies to implement them, and thus we'll have > difficulties to keep them compliant iwth the future development within > BioJava. I would take this route. It is up to biojava to keep interface definitions stable and you will want to have control of your own implementation This is the route Ensembl takes with Bioperl (ie, Ensembl implements Bioperl interfaces) and it works very well. Bioperl might be more stable than biojava, but you always have the option of walking down the corridor and beating up Matt and Thomas if they don't behave ;) ----------------------------------------------------------------- Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420 . ----------------------------------------------------------------- From mrp@sanger.ac.uk Tue Jan 23 13:26:48 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Tue, 23 Jan 2001 13:26:48 +0000 Subject: [Biojava-l] Higer order HMMs References: Message-ID: <3A6D8698.71606D40@sanger.ac.uk> Hi Mark, We are now entering the twilight zone... Mark Schreiber wrote: > Hi, > > If I want a HMM to emit hexamers as in a gene finding HMM do I just create > a new hexamer alphabet and add that to the state or can it be mimicked by > the way that the transitions are set?? The BioJava HMM toolkit only supports 1st order probabilities over transitions. That is, the probability of reaching a state is only conditional upon the 1st previous state. Other scheims would require a history of states visited to be maintained, and this is potentialy quite expensive. This effect can be simulated by producing multiple n'th order states (wow - that's scary) that project the n'th order state-space into a 1st order one. I haven't yet found any compelling reason to write the projection code. Originaly, the advance array on emission states would have dealt with the hexamer issue for you. However, we very quickly discovered (after reading the durbin-eddy-..... dp book) that you can handle this by building an HMM that emits hexamers. If you want to look at the sequence as a list of hexamers (non-overlapping) then you have the emission state Distributions emit over the hexamer alphabet, and you build the hexamer lists using SymbolListViews.windowedSymbolList(). If you want all overlapping hexamers, you use SymbolListViews.orderNSymbolList() and OrderNDistribution to model the conditional probability of the 6th nucleotide of each hexamer conditional on the previous five. We have tried to make sure that any model can always be represented in the 1st order form so that the DP engine can be relatively simple. I think that it also turns out that some sets of probabilities can be cached more eficiently in 1st order form. > Also if I want a different states to emit pentamers and some to emit > triplets can they be combined in the same model using different alphabets? Here you define the model in terms of pentamers, and some order 5 Distribution instances are degenerate for the first two nucleotides. > > > Mark > There may be some models that can't be represented quickly in this way, but I think that all can be transformed algorithmicaly. If the pent/trip model is more than an idle curiosity, then we can knock up an HMM implementation that 1st orderises any arbitrary model. Matthew > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Mark Schreiber Ph: 64 3 4797875 > Rm 218 email mark_s@sanger.otago.ac.nz > Department of Biochemistry email m.schreiber@clear.net.nz > University of Otago > PO Box 56 > Dunedin > New Zealand > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From td2@sanger.ac.uk Tue Jan 23 13:52:11 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Tue, 23 Jan 2001 13:52:11 +0000 Subject: [Biojava-l] Pluggable-heuristics cache package. Message-ID: <20010123135211.C1295@jabba.sanger.ac.uk> I've just imported a small package I've had lying around in org.biojava.utils.cache. I've found this very useful in writing the biojava-ensembl bridge, and I suspect it will be useful in other large-database applications. The idea is that Cache objects act as factories for CacheReferences: CacheReference cachedSequence = myCache.makeReference(seq); CacheReferences are rather like normal java reference objects, but they're represented by an interface for greater flexibility. At the moment there are two implementations: FixedSizeCache -- Store up to 'n' (configurable) objects. SoftReferenceCache -- Store objects using java SoftReferences. It's easy to write other Cache implementations if you want a different heuristic. Thomas. From yihua.zhou@monsanto.com Tue Jan 23 15:02:10 2001 From: yihua.zhou@monsanto.com (ZHOU, YIHUA [FND/1000]) Date: Tue, 23 Jan 2001 09:02:10 -0600 Subject: [Biojava-l] (no subject) Message-ID: BioJava is doing a great job in representing and processing sequence data. How about microarray expression data? Is there anyone actively involved in this area? Who should I talk to for potential contribution in this sub-project? Thanks. Yihua Zhou, Ph.D. Sr. Bioinformatics Scientist Monsanto Company 314-694-5053 From smarkel@netgenics.com Tue Jan 23 18:05:09 2001 From: smarkel@netgenics.com (Scott Markel) Date: Tue, 23 Jan 2001 10:05:09 -0800 Subject: [Biojava-l] (no subject) References: Message-ID: <3A6DC7D5.7840EC3B@netgenics.com> "ZHOU, YIHUA [FND/1000]" wrote: > > BioJava is doing a great job in representing and processing sequence data. > How about microarray expression data? Is there anyone actively involved in > this area? Who should I talk to for potential contribution in this > sub-project? There's an ongoing effort at the Object Management Group to develop standard interfaces and XML DTDs/schemas for microarray expression data. The participants are EBI (representing MGED: http://www.mged.org), NetGenics, and Rosetta (representing GEML: http://www.geml.org). Agilent is a supporter. Charles Troup (Agilent) has done a great job of leading the evaluation effort. The evaluation document is http://cgi.omg.org/cgi-bin/doc?lifesci/00-12-12 You can get copies of the initial submissions and the RFP at http://www.omg.org/techprocess/meetings/schedule/Gene_Expression_RFP.html There are a few more related links at http://www.omg.org/homepages/lsr/rfs.html The good news is that the GEML, MGED, and OMG communities are working together to solve this problem. Scott -- Scott Markel, Ph.D. NetGenics, Inc. smarkel@netgenics.com 4350 Executive Drive Tel: 858 455 5223 Suite 260 FAX: 858 455 1388 San Diego, CA 92121 From mark_s@sanger.otago.ac.nz Tue Jan 23 21:49:42 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Wed, 24 Jan 2001 10:49:42 +1300 (NZDT) Subject: [Biojava-l] Higer order HMMs In-Reply-To: <3A6D8698.71606D40@sanger.ac.uk> Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1961032256-980286582=:14781 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, I have whipped up a diagram of how a higher order model might be impersonated by a 1st order model. See attachment. Do you think that this would work or would it be easier to make a custom alphabet (bearing in mind there are 4096 dna hexamers! Also I am trying to construct a system where by a model can suggest what may be the appropriate order state for any particular region of a gene. I was thinking the estimate could be based on Mutual information content, similar to the example in Durbin et al. Can Biojava do mutual info or sould I make a class of my own. Is there a better way? Suggestions ?? Mark On Tue, 23 Jan 2001, Matthew Pocock wrote: > Hi Mark, > > We are now entering the twilight zone... > > Mark Schreiber wrote: > > > Hi, > > > > If I want a HMM to emit hexamers as in a gene finding HMM do I just create > > a new hexamer alphabet and add that to the state or can it be mimicked by > > the way that the transitions are set?? > > The BioJava HMM toolkit only supports 1st order probabilities over > transitions. That is, the probability of reaching a state is only conditional > upon the 1st previous state. Other scheims would require a history of states > visited to be maintained, and this is potentialy quite expensive. This effect > can be simulated by producing multiple n'th order states (wow - that's scary) > that project the n'th order state-space into a 1st order one. I haven't yet > found any compelling reason to write the projection code. > > Originaly, the advance array on emission states would have dealt with the > hexamer issue for you. However, we very quickly discovered (after reading the > durbin-eddy-..... dp book) that you can handle this by building an HMM that > emits hexamers. If you want to look at the sequence as a list of hexamers > (non-overlapping) then you have the emission state Distributions emit over the > hexamer alphabet, and you build the hexamer lists using > SymbolListViews.windowedSymbolList(). If you want all overlapping hexamers, > you use SymbolListViews.orderNSymbolList() and OrderNDistribution to model the > conditional probability of the 6th nucleotide of each hexamer conditional on > the previous five. > > We have tried to make sure that any model can always be represented in the 1st > order form so that the DP engine can be relatively simple. I think that it > also turns out that some sets of probabilities can be cached more eficiently > in 1st order form. > > > Also if I want a different states to emit pentamers and some to emit > > triplets can they be combined in the same model using different alphabets? > > Here you define the model in terms of pentamers, and some order 5 Distribution > instances are degenerate for the first two nucleotides. > > > > > > > Mark > > > > There may be some models that can't be represented quickly in this way, but I > think that all can be transformed algorithmicaly. If the pent/trip model is > more than an idle curiosity, then we can knock up an HMM implementation that > 1st orderises any arbitrary model. > > Matthew > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Mark Schreiber Ph: 64 3 4797875 > > Rm 218 email mark_s@sanger.otago.ac.nz > > Department of Biochemistry email m.schreiber@clear.net.nz > > University of Otago > > PO Box 56 > > Dunedin > > New Zealand > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > _______________________________________________ > > Biojava-l mailing list - Biojava-l@biojava.org > > http://biojava.org/mailman/listinfo/biojava-l > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --0-1961032256-980286582=:14781 Content-Type: APPLICATION/octet-stream; name="HMMArchitecture.doc" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAD AAAAEwAAAAAAAAAAEAAAXQAAAAEAAAD+////AAAAABIAAAB9AAAA7wAAAP// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ///////////////////////spcEANyAJBAAA+BK/AAAAAAAAEAAAAAAABAAA KQcAAA4AYmpialUWVRYAAAAAAAAAAAAAAAAAAAAAAAAJBBYAJhIAADd8AAA3 fAAAKQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAAAAAA AAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAAGwAAAAAAOIAAAAA AAAA4gAAAOIAAAAAAAAA4gAAAAAAAADiAAAAAAAAAOIAAAAAAAAA4gAAABQA AAAAAAAAAAAAAPYAAAAAAAAAaAEAAAAAAABoAQAAAAAAAGgBAAAAAAAAaAEA AAwAAAB0AQAADAAAAPYAAAAAAAAA8AkAALYAAACMAQAATAAAANgBAAAAAAAA 2AEAAAAAAADYAQAAAAAAANgBAAAAAAAAtwIAAPYAAACtAwAAVAAAAAEEAAAs AAAAbwkAAAIAAABxCQAAAAAAAHEJAAAAAAAAcQkAAAAAAABxCQAAAAAAAHEJ AAAAAAAAcQkAACQAAACmCgAAIAIAAMYMAABkAAAAlQkAABUAAAAAAAAAAAAA AAAAAAAAAAAA4gAAAAAAAAAtBAAAAAAAAAAAAAAAAAAAAAAAAAAAAACzAgAA BAAAALcCAAAAAAAALQQAAAAAAAAtBAAAAAAAAJUJAAAAAAAATQQAAAAAAADi AAAAAAAAAOIAAAAAAAAA2AEAAAAAAAAAAAAAAAAAANgBAADbAAAAqgkAABYA AABNBAAAAAAAAE0EAAAAAAAATQQAAAAAAAAtBAAAFgAAAOIAAAAAAAAA2AEA AAAAAADiAAAAAAAAANgBAAAAAAAAbwkAAAAAAAAAAAAAAAAAAE0EAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAALQQAAAAAAABvCQAAAAAAAE0EAAAiBQAATQQAAAAAAAAAAAAAAAAAAG8J AAAAAAAA4gAAAAAAAADiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwkAAAAAAADYAQAA AAAAAIABAAAMAAAAIODyghCFwAH2AAAAcgAAAGgBAAAAAAAAQwQAAAoAAABv CQAAAAAAAAAAAAAAAAAAbwkAAAAAAADACQAAMAAAAPAJAAAAAAAAbwkAAAAA AAAqDQAAAAAAAE0EAAAAAAAAKg0AAAAAAABvCQAAAAAAAE0EAAAAAAAA9gAA AAAAAAD2AAAAAAAAAOIAAAAAAAAA4gAAAAAAAADiAAAAAAAAAOIAAAAAAAAA AgDZAAAAEyBFTUJFRCBXb3JkLlBpY3R1cmUuOCAgFAEVDUZpZ3VyZSATIFNF USBGaWd1cmUgXCogQVJBQklDIBQxFSBIaWRkZW4gTWFya292IE1vZGVscyBv ZiBoaWdoZXIgb3JkZXIgaW50ZXJhY3Rpb25zIGNhbiBiZSBtb2RlbGxlZCB1 c2luZyBhIHNlcmllcyBvZiBkaXNjcmV0ZSBzdGF0ZSBjbHVzdGVycy4gVGhl c2UgY2x1c3RlcnMgY2FuIHRoZW4gYmUgcmVwcmVzZW50ZWQgYXMgbW9kZWxz LWluLXN0YXRlcyBpZiByZXF1aXJlZC4gVGhlIHN0YXIgc2hhcGVkIJNiZWdp bpQgc3RhdGUgaXMgYSCTTWFnaWNhbCBTdGF0ZZQuIFRoZSBjcm9zc2VkIGNp cmNsZSByZXByZXNlbnRzIGEgZG90IHN0YXRlLCAobnVsbCBzdGF0ZSksIHdo aWNoIGNhbiBiZSB1c2VkIHRvIHNpbXBsaWZ5IHRoZSB3aXJpbmcgb2YgdGhl IHN0YXRlIGNsdXN0ZXJzLiBBcnJvd3MgcmVwcmVzZW50IHRyYW5zaXRpb25z LiBDaXJjbGVzIHdpdGggbGV0dGVycyBpbiB0aGVtIHJlcHJlc2VudCBlbWlz c2lvbiBzdGF0ZXMsIHRoZSBsZXR0ZXIgYmVpbmcgdGhlIGVtaXNzaW9uIG9m IHRoZSBzdGF0ZS4NDRMgRU1CRUQgV29yZC5QaWN0dXJlLjggIBQBFQ1GaWd1 cmUgEyBTRVEgRmlndXJlIFwqIEFSQUJJQyAUMhUgQnkgYWRkaW5nIGEgbG9v cCBiYWNrIHRvIHRoZSBkb3Qgc3RhdGUgcHJpb3IgdG8gdGhlIHRyaXBsZXQg Y2x1c3RlciBhIHNlcXVlbmNlIG9mIGJpYXNlZCB0cmlwbGV0cyBjYW4gYmUg cHJvZHVjZWQgd2l0aCB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIHNlcXVlbmNl IGRlY3JlYXNpbmcgZXhwb25lbnRpYWxseSB3aXRoIGluY3JlYXNpbmcgbGVu Z3RoLg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAQQAABgEAAAZBAAA GwQAACMEAAAkBAAAOgQAADsEAAA8BAAAPQQAAD4EAAAiBgAAIwYAACQGAAA7 BgAAPAYAAD0GAAA+BgAARgYAAEcGAABdBgAAXgYAAF8GAABgBgAAYQYAACkH AAD6AOr6APoA+uT6AOAA+gDQy/oA+gD65PoA4AAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQNq/RkAAFUIAR8Daqhl GD4KCAFDShQAVQgBVggBYUoUAG1ICQRzSAkEBjUIgVwIgQALbUgABG5IAAR1 CAEfA2q0MRg+CggBQ0oUAFUIAVYIAWFKFABtSAkEc0gJBAkDagAAAABVCAEA GgAEAAAcBAAAIgYAACMGAAA/BgAAKQcAAPwAAAAAAAAAAAAAAAD6AAAAAAAA AAAAAAAA+AAAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAQAAAAEPAAMAAAYkAQAFAAQAACkHAAD+AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAQEkACZQCQAxkGgB H7CFLiCwwkEhsAgHIrAIByOQoAUkkKAFJbAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 LAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3 AAAAOAAAAP7///86AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIA AABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAA AE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAA WQAAAFoAAABbAAAAXAAAAP7////+////BAEAAHQAAABhAAAAYgAAAGMAAABk AAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAP7///9tAAAAbgAAAG8A AABwAAAAcQAAAHIAAABzAAAA/v///9EAAAB2AAAAdwAAAHgAAAB5AAAAegAA AHsAAAB8AAAA/v////3///9/AAAAgAAAAFIAbwBvAHQAIABFAG4AdAByAHkA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW AAUB//////////8XAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAAAAAAACDg 8oIQhcABXgAAAEASAAAAAAAARABhAHQAYQAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgH///// //////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK AAAAkjcAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBlAG4AdAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACARYAAAD///////// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmEgAA AAAAAE8AYgBqAGUAYwB0AFAAbwBvAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAEBGQAAAP////8EAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAgdtqCEIXAASDg8oIQhcABAAAAAAAAAAAAAAAAXwAx ADAANAAxADcANwAyADkAOAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 WiynosoixCHV7wRaJ9sfV9NYJ3/RWLqyRIqysv9WVm5GWfG/0zX2m6qcOagq PwdVFSLtuKmqclNUtcFkf+KqjqlGeneivfCNiTB5uajLtuoyM/ca8ZlwfkbU 2gQ+AY0sl7PzAQAARABkAAAAAAAAAAIAAAAAAAAAAAAAAAAA4AHDAZABjwEA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ABPAwAAAAsgQK8AgA AAAGBAAAAAoAACMAC/AMAAAABEEGAAAA/wEAAAgAAAAQ8AQAAAAGAADAMgAH 8G8BAAADBGtscfOn5huJiyXGMnKFiNL/AEsBAAADAAAA9hoAAAAA0wBgIRvw QwEAAGtscfOn5huJiyXGMnKFiNLcAQAAAAAAAAAAAADIAAAAvAAAABinBABg XwQAEQEAAAD+eNpVUbtOAzEQHPt8hxICRDzSJTIpoEpDRZEiEaKEAiFRR+SQ TiJYcoKo6UHiA8if3AfwNRE1QQq7e8HglWzvenZ2bs4KNSBZAMhwAI59WkfZ DjpYURipb5wfb+OiuPVu6u5mluuU7jc1Mzhr6BIf2KNsKXdRqDP36Ivc28v8 iUpDq6eqUyslukv9vqqa3xTvZoDd62KST5ljr9xk9BCYShRrrKO3aDupi4ig oK8oYdHDBuXf1EMmAlOzW3zpVDoZ6a6RJOpoZ4f4BDvCP24848/e7wyDhM6O KLfMHK+U94PLZuSy1GuX3aEvRvdBJUXlyBKTHfVpxgvmGOI8IM8RYnEq3GPF r1X92UQ0fgC7mzwQgAIAAEQAZAAAAAAAAAACAAAAAAAAAAAAAAAAAOABwwGQ AY8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwMAAAALIE CvAIAAAAMwUAAAAKAAAjAAvwDAAAAARBBAAAAP8BAAAIAAAAEPAEAAAADQAA wDIAB/D8AQAAAwRSVwpNXahW9md3ZeGxaXJj/wDYAQAAlwAAAOkcAAAAANQA YCEb8NABAABSVwpNXahW9md3ZeGxaXJjpAQAAAAAAAAAAAAAyAAAALwAAAAY pwQAYF8EAJ4BAAAA/njarVLBTgIxEH3tloUFVILKDbJy0BMe9GIiB4nxZDSG mHgmiskacZNF49k7JH6AXP0FL/sBfg5nMeK0XbusyWo0NGk77cz09c08Bgew 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 CgABAGkADwADAAAAAAAAAAAAOAAAQPH/AgA4AAwABgBOAG8AcgBtAGEAbAAA AAIAAAAYAENKGABfSAEEYUoYAG1ICRRzSAkUdEgJBAAAAAAAAAAAAAAAAAAA AAAAADwAQUDy/6EAPAAMABYARABlAGYAYQB1AGwAdAAgAFAAYQByAGEAZwBy AGEAcABoACAARgBvAG4AdAAAAAAAAAAAAAAAAAA4ACIAAQACADgADAAHAEMA YQBwAHQAaQBvAG4AAAAKAA8AE6R4ABSkeAAOADUIgUNKFABcCIFhShQAAAAA AAcAAAAOAAAAFQAAABwAAAAjAAAAKgAAADEAAAA4AAAAPwAAAEYAAABNAAAA VAAAAFsAAABiAAAAaQAAAHAAAAB3AAAAjgAAAKkAAAABAAAAAAAAAAAA//// /woEAAAAAAAAAQAAAAAAAAAAAP////8OBAAAAAAAAAEAAAAAAAAAAAD///// EQQAAAAAAAABAAAAAAAAAAAA/////xQEAAAAAAAAAQAAAAAAAAAAAP////8i BAAAAAAAAAEAAAAAAAAAAAD/////HwQAAAAAAAABAAAAAAAAAAAA/////xwE AAAAAAAAAQAAAAAAAAAAAP////8ZBAAAAAAAAAEAAAAAAAAAAAD/////LwQA AAAAAAABAAAAAAAAAAAA/////ywEAAAAAAAAAQAAAAAAAAAAAP////8pBAAA AAAAAAEAAAAAAAAAAAD/////JgQAAAAAAAABAAAAAAAAAAAA/////24EAAAA AAAAAQAAAAAAAAAAAP////9rBAAAAAAAAAEAAAAAAAAAAAD/////aAQAAAAA AAABAAAAAAAAAAAA/////2UEAAAAAAAAAQAAAAAAAAAAAP////+FBAAAAAAA AAEAAAAAAAAAAAD/////igQAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAcAAAAOAAAAFQAAABwAAAAjAAAAKgAAADEAAAA4AAAAPwAAAEYAAABN AAAAVAAAAFsAAABiAAAAaQAAAHAAAAB3AAAAjgAAAJEAAAAAAAAAABABAAAA ABACAAAAABADAAAAABAEAAAAABAFAAAAABAGAAAAABAHAAAAABAIAAAAABAJ AAAAABAKAAAAABALAAAAABAMAAAAABANAAAAABAOAAAAABAPAAAAABAQAAAA AAARAAAAAAD//wAAAAAAAAAAqQAAAAcAABYAAAgA/////wEAAAAEIP//AQBA VsMAAAAAAAAAAACpAAAAAAAAAAAAAAAAABkAAAAbAAAAHQAAAB8AAAAgAAAA IgAAACQAAAAmAAAAJwAAACkAAAArAAAALQAAAC4AAAAwAAAAMgAAADQAAAA1 AAAANwAAADkAAAA7AAAAPAAAAD4AAABAAAAAQgAAAEMAAABFAAAARwAAAEkA AABKAAAATAAAAE4AAABQAAAAUQAAAFMAAABVAAAAVwAAAFgAAABaAAAAXAAA AF4AAABfAAAAYQAAAGMAAABlAAAAZgAAAGgAAABqAAAAbAAAAG0AAABvAAAA cQAAAHMAAAB0AAAAdgAAAHgAAAB6AAAAewAAAH0AAAB/AAAAgQAAAIIAAACE AAAAhgAAAIgAAACJAAAAjwAAAJAAAACmAAAAqgAAAJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACA AAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACAAAAAgJgAAAAA MAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJgAAAAAMAAAAAAAAACA AAAAgJoAAAAAMAAAAAAAAACAAAAAgJoAAAAAMAAAAAAAAACAAAAAgJoAAAAA MAAAAAAAAACAAAAAgAAEAAA+BAAAYwQAAIkEAACpBAAAAwAAAAYAAAAIAAAA CgAAAAAEAABKBAAAfQQAAKkEAAAEAAAABwAAAAkAAAAABAAAqAQAAAUAAACR AAAADwAA8NYCAAAAAAbwGAAAAAIIAAACAAAAigAAAAEAAAABAAAAiwAAAIMG C/BwAgAAgQAwZQEAggCYsgAAgwAwZQEAhACYsgAAhQAAAAAAhwAAAAAAiAAA AAAAiQAAAAAAvwAAAA8ADAH0AAAQDQEAAAAgDgEAAAAgwAEAAAAAwQEAAAEA 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 AAAAAAAAAPQXeAEBAAEAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAAKkAAABw AAAIAEAAAP//AQAAAAcAVQBuAGsAbgBvAHcAbgD//wEACAAAAAAAAAAAAAAA //8BAAAAAAD//wAAAgD//wAAAAD//wAAAgD//wAAAAADAAAARxaQAQAAAgIG AwUEBQIDBIc6AAAAAAAAAAAAAAAAAAD/AAAAAAAAAFQAaQBtAGUAcwAgAE4A ZQB3ACAAUgBvAG0AYQBuAAAANRaQAQIABQUBAgEHBgIFBwAAAAAAAAAQAAAA AAAAAAAAAACAAAAAAFMAeQBtAGIAbwBsAAAAMyaQAQAAAgsGBAICAgICBIc6 AAAAAAAAAAAAAAAAAAD/AAAAAAAAAEEAcgBpAGEAbAAAACIABADxCIgYAPDQ AgAAaAEAAAAAJ7xRRii8UUYAAAAAAgABAAAAAAAAAAAAAAABAAEAAAAEAAMQ AQAAAAAAAAAAAAAAAQABAAAAAQAAAAAAAABBBgDwEAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlIhMpNwC0AIKCfjAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAJ8BAAAAAAgy g1EA8BAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//xIAAAAA AAAAAAAAAAAAAAAOAE0AYQByAGsAIABTAGMAaAByAGUAaQBiAGUAcgAOAE0A YQByAGsAIABTAGMAaAByAGUAaQBiAGUAcgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA/v////7///8EAAAA/v////7/ //8HAAAACAAAAAkAAAAKAAAACwAAAAwAAAD+////DgAAAA8AAAAQAAAAEQAA AP7///8TAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAA HQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAo AAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMA AAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAA AD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAA/v///0gAAAD+//// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////////////////////////wEA/v8D CgAA/////wcJAgAAAAAAwAAAAAAAAEYXAAAATWljcm9zb2Z0IFdvcmQgUGlj dHVyZQAKAAAATVNXb3JkRG9jAA8AAABXb3JkLlBpY3R1cmUuOAD0ObJxAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAEA/v8DCgAA/////wcJAgAAAAAAwAAAAAAAAEYXAAAATWljcm9z b2Z0IFdvcmQgUGljdHVyZQAKAAAATVNXb3JkRG9jAA8AAABXb3JkLlBpY3R1 cmUuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAECgIAAAAAAAAAAAAAAAAAAAAAAAEA AADghZ/y+U9oEKuRCAArJ7PZMAAAAIgBAAASAAAAAQAAAJgAAAACAAAAoAAA AAMAAACsAAAABAAAALgAAAAFAAAA0AAAAAYAAADcAAAABwAAAOgAAAAIAAAA +AAAAAkAAAAQAQAAAwBPAGIAagBJAG4AZgBvAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgEGAAAACgAAAP// //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAA AAAAAABPAGIAagBlAGMAdABQAG8AbwBsAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgABAf///////////////wAAAAAA AAAAAAAAAAAAAAAAAAAAQBfighCFwAFAF+KCEIXAAQAAAAAAAAAAAAAAAFcA bwByAGQARABvAGMAdQBtAGUAbgB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAaAAIACQAAAAsAAAD/////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACYWAAAAAAAABQBTAHUAbQBt AGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAACgAAgH/////DAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABsAAAAABAAAAAAAADspcEANyAJBAAA+BK/AAAA AAAAEAAAAAAABAAAqQQAAA4AYmpialUWVRYAAAAAAAAAAAAAAAAAAAAAAAAJ BBYAJhYAADd8AAA3fAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAAAA AAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAA AGwAAAAAAOIAAAAAAAAA4gAAAOIAAAAAAAAA4gAAAAAAAACWAwAAAAAAAJYD AAAAAAAAlgMAABQAAAAAAAAAAAAAAMoDAAAAAAAAvAkAAAAAAAC8CQAAAAAA ALwJAAAAAAAAvAkAACQAAADgCQAAHAAAAMoDAAAAAAAASkMAALYAAAAICgAA AAAAAAgKAAAAAAAACAoAAAAAAAAICgAAAAAAAAwKAAAAAAAAqUIAAAAAAACp QgAAAAAAAKlCAAAAAAAAyUIAAAIAAADLQgAAAAAAAMtCAAAAAAAAy0IAAAAA AADLQgAAAAAAAMtCAAAAAAAAy0IAACQAAAAARAAAIAIAACBGAABiAAAA70IA ABUAAAAAAAAAAAAAAAAAAAAAAAAAlgMAAAAAAACpQgAAAAAAAAAAAAAAAAAA AAAAAAAAAADVPwAA1AIAAKlCAAAAAAAAqUIAAAAAAACpQgAAAAAAAO9CAAAA AAAAyUIAAAAAAADiAAAAAAAAAOIAAAAAAAAACAoAAAAAAAAAAAAAAAAAAAwK AADJNQAABEMAABYAAADJQgAAAAAAAMlCAAAAAAAAyUIAAAAAAACpQgAAEAAA AOIAAADyAQAACAoAAAQAAACWAwAAAAAAAAwKAAAAAAAAyUIAAAAAAAAAAAAA AAAAAMlCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAqUIAAAAAAADJQgAAAAAAAMlCAAAAAAAAyUIAAAAA AAAAAAAAAAAAAMlCAAAAAAAA1AIAAMIAAACWAwAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA yUIAAAAAAAAMCgAAAAAAAPwJAAAMAAAAAP6gNe6EwAHKAwAA8gUAALwJAAAA AAAAuUIAABAAAADJQgAAAAAAAAAAAAAAAAAAyUIAAAAAAAAaQwAAMAAAAEpD AAAAAAAAyUIAAAAAAACCRgAAAAAAAMlCAAAAAAAAgkYAAAAAAADJQgAAAAAA AMlCAAAAAAAAqgMAABIAAAC8AwAADgAAAOIAAAAAAAAA4gAAAAAAAADiAAAA AAAAAOIAAAAAAAAAAgDZAAAACAgICAgICAgICAgICAgICAgICAgICAgIDUEN AQ0BDQ1DDQENAQ0NRw0BDQENDVQNAQ0BDQ1UDQENAQ0NRw0BDQENDUMNAQ0B DQ1BDQENAQ0NVA0BDQENDUcNAQ0BDQ1DDQENAQ0NQQ0BDQENDVQNAQ0BDQ1H DQENAQ0NQw0BDQENDUENAQ0BDQ1CZWdpbg0NMm5kIE9yZGVyIEludGVyYWN0 aW9uDQ0NDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAGAQAABkE AAAbBAAAHAQAAB0EAAAeBAAAHwQAACAEAAAiBAAAIwQAACQEAAAlBAAAJgQA ACcEAAApBAAAKgQAACsEAAAsBAAALQQAAC4EAAAwBAAAMQQAADIEAAAzBAAA NAQAADUEAAA3BAAAOAQAADkEAAA6BAAAOwQAADwEAAA+BAAA8QDn2efL5wDn veev5wDnoeeT5wDnhed35wDnaedb5wDnAAAAAAAAAAAAAAAAABsDar8TAAA1 CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2rMEQAANQiBT0oCAFFKAgBVCAFcCIFe SgIAGwNqTA8AADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDalkNAAA1CIFPSgIA UUoCAFUIAVwIgV5KAgAbA2rZCgAANQiBT0oCAFFKAgBVCAFcCIFeSgIAGwNq 5ggAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDamYGAAA1CIFPSgIAUUoCAFUI AVwIgV5KAgAbA2pzBAAANQiBT0oCAFFKAgBVCAFcCIFeSgIAGwNq8wEAADUI gU9KAgBRSgIAVQgBXAiBXkoCABsDagAAAAA1CIFPSgIAUUoCAFUIAVwIgV5K AgASNQiBT0oCAFFKAgBcCIFeSgIAABwDagAAAABDShQAVQgBbUgABG5IAARz SAkEdQgBIQAEAAAZBAAAGwQAAB0EAAAfBAAAIAQAACIEAAAkBAAAJgQAACcE AAApBAAAKwQAAC0EAAAuBAAAMAQAADIEAAA0BAAANQQAADcEAAA5BAAAOwQA ADwEAAA+BAAAQAQAAEIEAABDBAAARQQAAEcEAABJBAAASgQAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAA AAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA /QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAA AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAA AP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAdAAQAABkEAACoBAAA/f0AAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAABAQI+BAAA PwQAAEAEAABBBAAAQgQAAEMEAABFBAAARgQAAEcEAABIBAAASQQAAEoEAABM BAAATQQAAE4EAABPBAAAUAQAAFEEAABTBAAAVAQAAFUEAABWBAAAVwQAAFgE AABaBAAAWwQAAFwEAABdBAAAXgQAAF8EAABhBAAAYgQAAGMEAADx59nnAOfL 573nAOev56HnAOeT54XnAOd352nnAOdb5wAAAAAAAAAAAAAAAAAAAAAAABsD an4sAAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2r+KQAANQiBT0oCAFFKAgBV CAFcCIFeSgIAGwNqCygAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDaoslAAA1 CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2qYIwAANQiBT0oCAFFKAgBVCAFcCIFe SgIAGwNqGCEAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDaiUfAAA1CIFPSgIA UUoCAFUIAVwIgV5KAgAbA2qlHAAANQiBT0oCAFFKAgBVCAFcCIFeSgIAGwNq shoAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDajIYAAA1CIFPSgIAUUoCAFUI AVwIgV5KAgASNQiBT0oCAFFKAgBcCIFeSgIAABsDaj8WAAA1CIFPSgIAUUoC AFUIAVwIgV5KAgAAIEoEAABMBAAATgQAAFAEAABRBAAAUwQAAFUEAABXBAAA WAQAAFoEAABcBAAAXgQAAF8EAABhBAAAYwQAAGUEAABmBAAAaAQAAGoEAABs BAAAbQQAAG8EAABxBAAAcwQAAHQEAAB2BAAAeAQAAHoEAAB7BAAAfQQAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAA AAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA /QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAA AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAA AP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAdYwQAAGQEAABlBAAAZgQA AGgEAABpBAAAagQAAGsEAABsBAAAbQQAAG8EAABwBAAAcQQAAHIEAABzBAAA dAQAAHYEAAB3BAAAeAQAAHkEAAB6BAAAewQAAH0EAAB+BAAAfwQAAIAEAACB BAAAggQAAIQEAACFBAAAhgQAAIcEAACIBAAAiQQAAPHnAOfZ58vnAOe956/n AOeh55PnAOeF53fnAOdp51vnAAAAAAAAAAAAAAAAAAAbA2qwRAAANQiBT0oC AFFKAgBVCAFcCIFeSgIAGwNqvUIAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsD aj1AAAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2pKPgAANQiBT0oCAFFKAgBV CAFcCIFeSgIAGwNqyjsAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDatc5AAA1 CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2pXNwAANQiBT0oCAFFKAgBVCAFcCIFe SgIAGwNqZDUAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDauQyAAA1CIFPSgIA UUoCAFUIAVwIgV5KAgAbA2rxMAAANQiBT0oCAFFKAgBVCAFcCIFeSgIAEjUI gU9KAgBRSgIAXAiBXkoCAAAbA2pxLgAANQiBT0oCAFFKAgBVCAFcCIFeSgIA ACF9BAAAfwQAAIEEAACCBAAAhAQAAIYEAACIBAAAiQQAAI8EAACQBAAApgQA AKcEAACoBAAAqQQAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAA AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAA AP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAABAAAADYkEAACPBAAAkAQAAKYEAACpBAAA+QD5AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxPSgIAUUoCAF5KAgAEJAAmUAkAMZBo AR+wzk4gsMBOIbBlIiKw3BMjkBMpJJBvGCWwAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAD+/wAABAoCAAAAAAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCr kQgAKyez2TAAAAB0AQAAEQAAAAEAAACQAAAAAgAAAJgAAAADAAAApAAAAAQA AACwAAAABQAAAMgAAAAGAAAA1AAAAAcAAADgAAAACAAAAPAAAAAJAAAACAEA ABIAAAAUAQAACgAAADABAAAMAAAAPAEAAA0AAABIAQAADgAAAFQBAAAPAAAA XAEAABAAAABkAQAAEwAAAGwBAAACAAAA5AQAAB4AAAABAAAAAABzAB4AAAAB AAAAAABzAB4AAAAPAAAATWFyayBTY2hyZWliZXIAAB4AAAABAAAAAGFyax4A AAABAAAAAGFyax4AAAAHAAAATm9ybWFsAGgeAAAADwAAAE1hcmsgU2NocmVp YmVyAAAeAAAAAgAAADIAcmseAAAAEwAAAE1pY3Jvc29mdCBXb3JkIDkuMAAA QAAAAABGwyMAAAAAQAAAAAAiwQXuhMABQAAAAABohCnuhMABAwAAAAEAAAAD AAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4A ZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAADgAAgD///////////////8A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1AAAAABAAAAAA AABfADEAMAA0ADEANwA4ADYAMgA4ADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAGAABAP//////////EQAAAAcJAgAAAAAA wAAAAAAAAEYAAAAAQBfighCFwAEg4PKCEIXAAQAAAAAAAAAAAAAAAEQAYQB0 AGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAKAAIB////////////////AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAPxYAAAAAAAAMQBUAGEAYgBsAGUA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAA4AAgAOAAAAEAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAACrAAAAykoAAAAAAAD+/wAABAoCAAAAAAAAAAAAAAAA AAAAAAABAAAAAtXN1ZwuGxCTlwgAKyz5rjAAAADoAAAADAAAAAEAAABoAAAA DwAAAHAAAAAFAAAAfAAAAAYAAACEAAAAEQAAAIwAAAAXAAAAlAAAAAsAAACc AAAAEAAAAKQAAAATAAAArAAAABYAAAC0AAAADQAAALwAAAAMAAAAyQAAAAIA AADkBAAAHgAAAAEAAAAAAAAAAwAAAAEAAAADAAAAAQAAAAMAAAAAAAAAAwAA AKAKCQALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAABAAAA AQAAAAAMEAAAAgAAAB4AAAAGAAAAVGl0bGUAAwAAAAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAIIAAACDAAAAhAAAAIUA AACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAA AJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAA nAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACn AAAAqAAAAKkAAACqAAAA/v///6wAAACtAAAArgAAAK8AAACwAAAAsQAAALIA AACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAA AL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAA yQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAAD+////3gAAANMAAADU AAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA/v///wUB AADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA/v///+gAAADpAAAA6gAA AOsAAADsAAAA7QAAAO4AAAD+/////f////EAAADyAAAA8wAAAPQAAAD1AAAA 9gAAAPcAAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAADz AQAARABkAAAAAAAAAAIAAAAAAAAAAAAAAAAA4AHDAZABjwEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ABPAwAAAAsgQK8AgAAAAcBAAAAAoA ACMAC/AMAAAABEEQAAAA/wEAAAgAAAAQ8AQAAAAAAADAMgAH8G8BAAADBGts cfOn5huJiyXGMnKFiNL/AEsBAAABAAAARAAAAAAACAFgIRvwQwEAAGtscfOn 5huJiyXGMnKFiNLcAQAAAAAAAAAAAADIAAAAvAAAABinBABgXwQAEQEAAAD+ eNpVUbtOAzEQHPt8hxICRDzSJTIpoEpDRZEiEaKEAiFRR+SQTiJYcoKo6UHi A8if3AfwNRE1QQq7e8HglWzvenZ2bs4KNSBZAMhwAI59WkfZDjpYURipb5wf b+OiuPVu6u5mluuU7jc1Mzhr6BIf2KNsKXdRqDP36Ivc28v8iUpDq6eqUysl ukv9vqqa3xTvZoDd62KST5ljr9xk9BCYShRrrKO3aDupi4igoK8oYdHDBuXf 1EMmAlOzW3zpVDoZ6a6RJOpoZ4f4BDvCP24848/e7wyDhM6OKLfMHK+U94PL ZuSy1GuX3aEvRvdBJUXlyBKTHfVpxgvmGOI8IM8RYnEq3GPFr1X92UQ0fgC7 mzwQgAIAAEQAZAAAAAAAAAACAAAAAAAAAAAAAAAAAOABwwGQAY8BAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwMAAAALIECvAIAAAATwUA AAAKAAAjAAvwDAAAAARBBAAAAP8BAAAIAAAAEPAEAAAAEQAAwDIAB/D8AQAA AwRSVwpNXahW9md3ZeGxaXJj/wDYAQAAlwAAAM8lAAAAANQAYCEb8NABAABS VwpNXahW9md3ZeGxaXJjpAQAAAAAAAAAAAAAyAAAALwAAAAYpwQAYF8EAJ4B AAAA/njarVLBTgIxEH3tloUFVILKDbJy0BMe9GIiB4nxZDSGmHgmiskacZNF 49k7JH6AXP0FL/sBfg5nMeK0XbusyWo0NGk77cz09c08Bgew2hwoYhVyrNBc t5dQw5SGUOczP7hYxJF3Hvh9//LWlecM3Re4zJBWkYd4xTJZE3WXGGzfvwu8 buAed+/pKGg2mN45Ywp3wp+mOviRyVXsoXzq9bp9meO2/V7nxmQyhehIHL5A y1ZegSgv6BchXDSQJfudYoiEyeSSLd54RkVKTz3yWImIqr2GMSQjzOQm34jp fb0hYNFeU8gVMcKQ7KZhWUqwDHnEst4KvM61QclAM6pSpmTUpDcGGKGFA+N5 SHhc7BiMJP5A4ZeiflZUP4FdOr/QHEpMqrXOkS9sMt3LvOmqYyzGZbKuKYt4 6x/biQpaLKeiyiLEIdXvBFon2x9X01gnf9FYurJEirKy/1ZWbkZZ8b/TNfab qpw5qCo/B1UVIu24qapyU1S1wWR/4qqOqUZ6d6K98I2JMHm5qMu26jIz9xrx mXB+RtTaBD4BjSyXs/MBAABEAGQAAAAAAAAAAgAAAAAAAAAAAAAAAADgAcMB kAGPAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAE8DAAAACy BArwCAAAABsEAAAACgAAIwAL8AwAAAAEQQ8AAAD/AQAACAAAABDwBAAAAAEA AMAyAAfwbwEAAAMEa2xx86fmG4mLJcYycoWI0v8ASwEAAAEAAAC3BAAAAAAI AWAhG/BDAQAAa2xx86fmG4mLJcYycoWI0twBAAAAAAAAAAAAAMgAAAC8AAAA GKcEAGBfBAARAQAAAP542lVRu04DMRAc+3yHEgJEPNIlMimgSkNFkSIRooQC IVFH5JBOIlhygqjpQeIDyJ/cB/A1ETVBCrt7weCVbO96dnZuzgo1IFkAyHAA jn1aR9kOOlhRGKlvnB9v46K49W7q7maW65TuNzUzOGvoEh/Yo2wpd1GoM/fo i9zby/yJSkOrp6pTKyW6S/2+qprfFO9mgN3rYpJPmWOv3GT0EJhKFGuso7do O6mLiKCgryhh0cMG5d/UQyYCU7NbfOlUOhnprpEk6mhnh/gEO8I/bjzjz97v DIOEzo4ot8wcr5T3g8tm5LLUa5fdoS9G90ElReXIEpMd9WnGC+YY4jwgzxFi cSrcY8WvVf3ZRDR+ALubPBCAAgAARABkAAAAAAAAAAIAAAAAAAAAAAAAAAAA 4AHDAZABjwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ABPAw AAAAsgQK8AgAAABNBQAAAAoAACMAC/AMAAAABEEEAAAA/wEAAAgAAAAQ8AQA AAATAADAMgAH8PwBAAADBFJXCk1dqFb2Z3dl4bFpcmP/ANgBAACXAAAAQioA AAAA1ABgIRvw0AEAAFJXCk1dqFb2Z3dl4bFpcmOkBAAAAAAAAAAAAADIAAAA vAAAABinBABgXwQAngEAAAD+eNqtUsFOAjEQfe2WhQVUgsoNsnLQEx70YiIH ifFkNIaYeCaKyRpxk0Xj2TskfoBc/QUv+wF+Dmcx4rRdu6zJajQ0aTvtzPT1 zTwGB7DaHChiFXKs0Fy3l1DDlIZQ5zM/uFjEkXce+H3/8taV5wzdF7jMkFaR h3jFMlkTdZcYbN+/C7xu4B537+koaDaY3jljCnfCn6Y6+JHJVeyhfOr1un2Z 47b9XufGZDKF6EgcvkDLVl6BKC/oFyFcNJAl+51iiITJ5JIt3nhGRUpPPfJY iYiqvYYxJCPM5CbfiOl9vSFg0V5TyBUxwpDspmFZSrAMecSy3gq8zrVByUAz qlKmZNSkNwYYoYUD43lIeFzsGIwk/kDhl6J+VlQ/gV06v9AcSkyqtc6RL2wy 3cu86apjLMZlsq4pi3jrH9uJClosp6LKIsQh1e8EWifbH1fTWCd/0Vi6skSK srL/VlZuRlnxv9M19puqnDmoKj8HVRUi7bipqnJTVLXBZH/iqo6pRnp3or3w jYkwebmoy7bqMjP3GvGZcH5G1NoEPgGNLJez8wEAAEQAZAAAAAAAAAACAAAA AAAAAAAAAAAAAOABwwGQAY8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAPAATwMAAAALIECvAIAAAAGgQAAAAKAAAjAAvwDAAAAARBDgAAAP8B AAAIAAAAEPAEAAAAAgAAwDIAB/BvAQAAAwRrbHHzp+YbiYslxjJyhYjS/wBL AQAAAQAAACoJAAAAAAgBYCEb8EMBAABrbHHzp+YbiYslxjJyhYjS3AEAAAAA AAAAAAAAyAAAALwAAAAYpwQAYF8EABEBAAAA/njaVVG7TgMxEBz7fIcSAkQ8 0iUyKaBKQ0WRIhGihAIhUUfkkE4iWHKCqOlB4gPIn9wH8DURNUEKu3vB4JVs 73p2dm7OCjUgWQDIcACOfVpH2Q46WFEYqW+cH2/jorj1buruZpbrlO43NTM4 a+gSH9ijbCl3Uagz9+iL3NvL/IlKQ6unqlMrJbpL/b6qmt8U72aA3etikk+Z Y6/cZPQQmEoUa6yjt2g7qYuIoKCvKGHRwwbl39RDJgJTs1t86VQ6GemukSTq aGeH+AQ7wj9uPOPP3u8Mg4TOjii3zByvlPeDy2bkstRrl92hL0b3QSVF5cgS kx31acYL5hjiPCDPEWJxKtxjxa9V/dlENH4Au5s8EIACAABEAGQAAAAAAAAA AgAAAAAAAAAAAAAAAADgAcMBkAGPAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAADwAE8DAAAACyBArwCAAAAEsFAAAACgAAIwAL8AwAAAAEQQQA AAD/AQAACAAAABDwBAAAABUAAMAyAAfw/AEAAAMEUlcKTV2oVvZnd2XhsWly Y/8A2AEAAJcAAAC1LgAAAADUAGAhG/DQAQAAUlcKTV2oVvZnd2XhsWlyY6QE AAAAAAAAAAAAAMgAAAC8AAAAGKcEAGBfBACeAQAAAP542q1SwU4CMRB97ZaF BVSCyg2yctATHvRiIgeJ8WQ0hph4JorJGnGTRePZOyR+gFz9BS/7AX4OZzHi tF27rMlqNDRpO+3M9PXNPAYHsNocKGIVcqzQXLeXUMOUhlDnMz+4WMSRdx74 ff/y1pXnDN0XuMyQVpGHeMUyWRN1lxhs378LvG7gHnfv6ShoNpjeOWMKd8Kf pjr4kclV7KF86vW6fZnjtv1e58ZkMoXoSBy+QMtWXoEoL+gXIVw0kCX7nWKI hMnkki3eeEZFSk898liJiKq9hjEkI8zkJt+I6X29IWDRXlPIFTHCkOymYVlK sAx5xLLeCrzOtUHJQDOqUqZk1KQ3BhihhQPjeUh4XOwYjCT+QOGXon5WVD+B XTq/0BxKTKq1zpEvbDLdy7zpqmMsxmWyrimLeOsf24kKWiynosoixCHV7wRa J9sfV9NYJ3/RWLqyRIqysv9WVm5GWfG/0zX2m6qcOagqPwdVFSLtuKmqclNU tcFkf+KqjqlGeneivfCNiTB5uajLtuoyM/ca8ZlwfkbU2gQ+AY0sl7PzAQAA RABkAAAAAAAAAAIAAAAAAAAAAAAAAAAA4AHDAZABjwEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAA8ABPAwAAAAsgQK8AgAAAAZBAAAAAoAACMA C/AMAAAABEENAAAA/wEAAAgAAAAQ8AQAAAADAADAMgAH8G8BAAADBGtscfOn 5huJiyXGMnKFiNL/AEsBAAABAAAAnQ0AAAAACAFgIRvwQwEAAGtscfOn5huJ iyXGMnKFiNLcAQAAAAAAAAAAAADIAAAAvAAAABinBABgXwQAEQEAAAD+eNpV UbtOAzEQHPt8hxICRDzSJTIpoEpDRZEiEaKEAiFRR+SQTiJYcoKo6UHiA8if 3AfwNRE1QQq7e8HglWzvenZ2bs4KNSBZAMhwAI59WkfZDjpYURipb5wfb+Oi uPVu6u5mluuU7jc1Mzhr6BIf2KNsKXdRqDP36Ivc28v8iUpDq6eqUyslukv9 vqqa3xTvZoDd62KST5ljr9xk9BCYShRrrKO3aDupi4igoK8oYdHDBuXf1EMm AlOzW3zpVDoZ6a6RJOpoZ4f4BDvCP24848/e7wyDhM6OKLfMHK+U94PLZuSy 1GuX3aEvRvdBJUXlyBKTHfVpxgvmGOI8IM8RYnEq3GPFr1X92UQ0fgC7mzwQ gAIAAEQAZAAAAAAAAAACAAAAAAAAAAAAAAAAAOABwwGQAY8BAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAATwMAAAALIECvAIAAAASQUAAAAK AAAjAAvwDAAAAARBBAAAAP8BAAAIAAAAEPAEAAAAFwAAwDIAB/D8AQAAAwRS VwpNXahW9md3ZeGxaXJj/wDYAQAAlwAAACgzAAAAANQAYCEb8NABAABSVwpN XahW9md3ZeGxaXJjpAQAAAAAAAAAAAAAyAAAALwAAAAYpwQAYF8EAJ4BAAAA /njarVLBTgIxEH3tloUFVILKDbJy0BMe9GIiB4nxZDSGmHgmiskacZNF49k7 JH6AXP0FL/sBfg5nMeK0XbusyWo0NGk77cz09c08Bgew2hwoYhVyrNBct5dQ w5SGUOczP7hYxJF3Hvh9//LWlecM3Re4zJBWkYd4xTJZE3WXGGzfvwu8buAe d+/pKGg2mN45Ywp3wp+mOviRyVXsoXzq9bp9meO2/V7nxmQyhehIHL5Ay1Ze gSgv6BchXDSQJfudYoiEyeSSLd54RkVKTz3yWImIqr2GMSQjzOQm34jpfb0h YNFeU8gVMcKQ7KZhWUqwDHnEst4KvM61QclAM6pSpmTUpDcGGKGFA+N5SHhc 7BiMJP5A4ZeiflZUP4FdOr/QHEpMqrXOkS9sMt3LvOmqYyzGZbKuKYt46x/b iQpaLKeiyiLEIdXvBFon2x9X01gnf9FYurJEirKy/1ZWbkZZ8b/TNfabqpw5 qCo/B1UVIu24qapyU1S1wWR/4qqOqUZ6d6K98I2JMHm5qMu26jIz9xrxmXB+ RtTaBD4BjSyXs/MBAABEAGQAAAAAAAAAAgAAAAAAAAAAAAAAAADgAcMBkAGP AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAE8DAAAACyBArw CAAAAAgEAAAACgAAIwAL8AwAAAAEQQgAAAD/AQAACAAAABDwBAAAAAQAAMAy AAfwbwEAAAMEa2xx86fmG4mLJcYycoWI0v8ASwEAAAIAAAAQEgAAAAAIAWAh G/BDAQAAa2xx86fmG4mLJcYycoWI0twBAAAAAAAAAAAAAMgAAAC8AAAAGKcE AGBfBAARAQAAAP542lVRu04DMRAc+3yHEgJEPNIlMimgSkNFkSIRooQCIVFH 5JBOIlhygqjpQeIDyJ/cB/A1ETVBCrt7weCVbO96dnZuzgo1IFkAyHAAjn1a R9kOOlhRGKlvnB9v46K49W7q7maW65TuNzUzOGvoEh/Yo2wpd1GoM/foi9zb y/yJSkOrp6pTKyW6S/2+qprfFO9mgN3rYpJPmWOv3GT0EJhKFGuso7doO6mL iKCgryhh0cMG5d/UQyYCU7NbfOlUOhnprpEk6mhnh/gEO8I/bjzjz97vDIOE zo4ot8wcr5T3g8tm5LLUa5fdoS9G90ElReXIEpMd9WnGC+YY4jwgzxFicSrc Y8WvVf3ZRDR+ALubPBCAAgAARABkAAAAAAAAAAIAAAAAAAAAAAAAAAAA4AHD AZABjwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8ABPAwAAAA sgQK8AgAAAA3BQAAAAoAACMAC/AMAAAABEEEAAAA/wEAAAgAAAAQ8AQAAAAJ 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 ZwByAGEAcABoACAARgBvAG4AdAAAAAAAAAAAAAAAAAAAAAAABwAAAA4AAAAV AAAAHAAAACMAAAAqAAAAMQAAADgAAAA/AAAARgAAAE0AAABUAAAAWwAAAGIA AABpAAAAcAAAAHcAAAB+AAAAhQAAAIwAAACqAAAAAQAAAAAAAAAAAP////8p BAAAAAAAAAEAAAAAAAAAAAD/////JgQAAAAAAAABAAAAAAAAAAAA/////yME AAAAAAAAAQAAAAAAAAAAAP////8gBAAAAAAAAAEAAAAAAAAAAAD/////HAQA AAAAAAABAAAAAAAAAAAA/////xkEAAAAAAAAAQAAAAAAAAAAAP////8WBAAA AAAAAAEAAAAAAAAAAAD/////EwQAAAAAAAABAAAAAAAAAAAA/////w8EAAAA AAAAAQAAAAAAAAAAAP////8MBAAAAAAAAAEAAAAAAAAAAAD/////CQQAAAAA AAABAAAAAAAAAAAA/////wYEAAAAAAAAAQAAAAAAAAAAAP////9mBAAAAAAA AAEAAAAAAAAAAAD/////YwQAAAAAAAABAAAAAAAAAAAA/////2AEAAAAAAAA AQAAAAAAAAAAAP////9dBAAAAAAAAAEAAAAAAAAAAAD/////dwQAAAAAAAAB AAAAAAAAAAAA/////3QEAAAAAAAAAQAAAAAAAAAAAP////9xBAAAAAAAAAEA AAAAAAAAAAD/////bgQAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAA AAcAAAAOAAAAFQAAABwAAAAjAAAAKgAAADEAAAA4AAAAPwAAAEYAAABNAAAA VAAAAFsAAABiAAAAaQAAAHAAAAB3AAAAfgAAAIUAAACMAAAAjwAAAAAAAAAA EAEAAAAAEAIAAAAAEAMAAAAAEAQAAAAAEAUAAAAAEAYAAAAAEAcAAAAAEAgA AAAAEAkAAAAAEAoAAAAAEAsAAAAAEAwAAAAAEA0AAAAAEA4AAAAAEA8AAAAA EBAAAAAAEBEAAAAAEBIAAAAAEBMAAAAAEP//AAAAAAAAAACqAAAACAAAFgAA AAD/////AQAAAAQg//8BAEBWwwAAAAAAAAAAAKoAAAAAAAAAAAAAAAAAHAAA AB4AAAAgAAAAIgAAACMAAAAlAAAAJwAAACkAAAAqAAAALAAAAC4AAAAwAAAA MQAAADMAAAA1AAAANwAAADgAAAA6AAAAPAAAAD4AAAA/AAAAQQAAAEMAAABF AAAARgAAAEgAAABKAAAATAAAAE0AAABPAAAAUQAAAFMAAABUAAAAVgAAAFgA AABaAAAAWwAAAF0AAABfAAAAYQAAAGIAAABkAAAAZgAAAGgAAABpAAAAawAA AG0AAABvAAAAcAAAAHIAAAB0AAAAdgAAAHcAAAB5AAAAewAAAH0AAAB+AAAA gAAAAIIAAACEAAAAhQAAAIcAAACJAAAAiwAAAIwAAACOAAAAkAAAAJIAAACV AAAAlwAAAJkAAACcAAAAngAAAKAAAACrAAAAmgAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAA AAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmkAAAAAwAAAAAAAAAIAAAACA mEAAAAAwAAAAAAAAAIAAAACAmEAAAAAwAAAAAAAAAIAAAACAmkAAAAAwAAAA AAAAAIAAAACAmEAAAAAwAAAAAAAAAIAAAACAmEAAAAAwAAAAAAAAAIAAAACA mkAAAAAwAAAAAAAAAIAAAACAmEAAAAAwAAAAAAAAAIAAAACAmEAAAAAwAAAA AAAAAIAAAACAmgAAAAAAAAAAAAAAAIAAAACAAAQAAEEEAABmBAAAjgQAAKoE AAADAAAABgAAAAgAAAAKAAAAAAQAAE0EAACABAAAqgQAAAQAAAAHAAAACQAA AAAEAACpBAAABQAAAA8AAPA4AAAAAAAG8BgAAAACCAAAAgAAAIgAAAABAAAA AQAAAIkAAABAAB7xEAAAAP//AAAAAP8AgICAAPcAABAADwAC8OA4AAAQAAjw CAAAAIgAAACIBAAADwAD8GY4AAAPAATwKAAAAAEACfAQAAAAAAAAAAAAAAAA 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 BAAAyBEAANACAAC4EwAAsAQAAHQAAAAAAAAAAAAcAAAAqwAAAAcABwAAAAAA HAAAAKsAAAAHAAcA/0ABAQEAAAAAAAEAAAC8z+IBAQABAAAAAAAAAAAAAAAA AAAAAAACEAAAAAAAAACqAAAAgAAACABAAAD//wEAAAAHAFUAbgBrAG4AbwB3 AG4A//8BAAgAAAAAAAAAAAAAAP//AQAAAAAA//8AAAIA//8AAAAA//8AAAIA //8AAAAAAwAAAEcWkAEAAAICBgMFBAUCAwSHOgAAAAAAAAAAAAAAAAAA/wAA AAAAAABUAGkAbQBlAHMAIABOAGUAdwAgAFIAbwBtAGEAbgAAADUWkAECAAUF AQIBBwYCBQcAAAAAAAAAEAAAAAAAAAAAAAAAgAAAAABTAHkAbQBiAG8AbAAA ADMmkAEAAAILBgQCAgICAgSHOgAAAAAAAAAAAAAAAAAA/wAAAAAAAABBAHIA aQBhAGwAAAAiAAQA8QiIGADw0AIAAGgBAAAAABG9UUYSvVFGAAAAAAMACQAA AAAAAAAAAAAAAQABAAAABAADEAEAAAAAAAAAAAAAAAEAAQAAAAEAAAAAAAAA sQQA8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAPxsJJDcAtACCgn4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAIAAAC5AQAAAAAIMoNRAPAQAAgAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA//8SAAAAAAAAAAAAAAAAAAAADgBNAGEAcgBrACAAUwBj AGgAcgBlAGkAYgBlAHIADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBlAHIA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAQBDAG8AbQBwAE8AYgBqAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAgH///////// //////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAA aAAAAAAAAAADAE8AYgBqAEkAbgBmAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAQ8AAAATAAAA/////wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAEAAAAAAAA AE8AYgBqAGUAYwB0AFAAbwBvAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAWAAEB////////////////AAAAAAAAAAAA AAAAAAAAAAAAAAAg4PKCEIXAASDg8oIQhcABAAAAAAAAAAAAAAAAVwBvAHIA ZABEAG8AYwB1AG0AZQBuAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAABoAAgASAAAAFAAAAP////8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAADSAAAAJhYAAAAAAADspcEANyAJBAAA+BK/ AAAAAAAAEAAAAAAABAAAqgQAAA4AYmpialUWVRYAAAAAAAAAAAAAAAAAAAAA AAAJBBYAJhYAADd8AAA3fAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjQAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAA AAAAAGwAAAAAAKgAAAAAAAAAqAAAAKgAAAAAAAAAqAAAAAAAAACkAwAAAAAA AKQDAAAAAAAApAMAABQAAAAAAAAAAAAAANgDAAAAAAAATgoAAAAAAABOCgAA AAAAAE4KAAAAAAAATgoAACQAAAByCgAAHAAAANgDAAAAAAAAkkcAALYAAACa CgAAAAAAAJoKAAAAAAAAmgoAAAAAAACaCgAAAAAAAJoKAAAAAAAA8UYAAAAA AADxRgAAAAAAAPFGAAAAAAAAEUcAAAIAAAATRwAAAAAAABNHAAAAAAAAE0cA AAAAAAATRwAAAAAAABNHAAAAAAAAE0cAACQAAABISAAAIAIAAGhKAABiAAAA N0cAABUAAAAAAAAAAAAAAAAAAAAAAAAApAMAAAAAAADxRgAAAAAAAAAAAAAA AAAAAAAAAAAAAADDQwAALgMAAPFGAAAAAAAA8UYAAAAAAADxRgAAAAAAADdH AAAAAAAAEUcAAAAAAACoAAAAAAAAAKgAAAAAAAAAmgoAAAAAAAAAAAAAAAAA AJoKAAApOQAATEcAABYAAAARRwAAAAAAABFHAAAAAAAAEUcAAAAAAADxRgAA EAAAAKgAAAAmAgAAmgoAAAAAAACkAwAAAAAAAJoKAAAAAAAAEUcAAAAAAAAA AAAAAAAAABFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAA8UYAAAAAAAARRwAAAAAAABFHAAAAAAAAEUcA AAAAAAAAAAAAAAAAABFHAAAAAAAAzgIAANYAAACkAwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAEUcAAAAAAACaCgAAAAAAAI4KAAAMAAAAQI4WxQ6FwAHYAwAAdgYAAE4K AAAAAAAAAUcAABAAAAARRwAAAAAAAAAAAAAAAAAAEUcAAAAAAABiRwAAMAAA AJJHAAAAAAAAEUcAAAAAAADKSgAAAAAAABFHAAAAAAAAykoAAAAAAAARRwAA AAAAABFHAAAAAAAAuAMAABIAAADKAwAADgAAAKgAAAAAAAAAqAAAAAAAAACo AAAAAAAAAKgAAAAAAAAAAgDZAAAACAgICAgICAgICAgICAgICAgICAgICAgI CAgIDVQNAQ0BDQ1HDQENAQ0NQw0BDQENDUENAQ0BDQ1UDQENAQ0NRw0BDQEN DUMNAQ0BDQ1BDQENAQ0NVA0BDQENDUcNAQ0BDQ1DDQENAQ0NQQ0BDQENDVQN AQ0BDQ1HDQENAQ0NQw0BDQENDUENAQ0BDQ1UDQENAQ0NRw0BDQENDUMNAQ0B DQ1BDQENAQ0NDQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAGwQA ABwEAAAeBAAAHwQAACAEAAAhBAAAIgQAACMEAAAlBAAAJgQAACcEAAAoBAAA KQQAACoEAAAsBAAALQQAAC4EAAAvBAAAMAQAADEEAAAzBAAANAQAADUEAAA2 BAAANwQAADgEAAA6BAAAOwQAADwEAAA9BAAAPgQAAD8EAABBBAAA8QDn2efL 5wDnveev5wDnoeeT5wDnhed35wDnaedb5wDnAAAAAAAAAAAAAAAAABsDar8T AAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2rMEQAANQiBT0oCAFFKAgBVCAFc CIFeSgIAGwNqTA8AADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDalkNAAA1CIFP SgIAUUoCAFUIAVwIgV5KAgAbA2rZCgAANQiBT0oCAFFKAgBVCAFcCIFeSgIA GwNq5ggAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDamYGAAA1CIFPSgIAUUoC AFUIAVwIgV5KAgAbA2pzBAAANQiBT0oCAFFKAgBVCAFcCIFeSgIAGwNq8wEA ADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDagAAAAA1CIFPSgIAUUoCAFUIAVwI gV5KAgASNQiBT0oCAFFKAgBcCIFeSgIAABwDagAAAABDShQAVQgBbUgABG5I AARzSAkEdQgBIQAEAAAcBAAAHgQAACAEAAAiBAAAIwQAACUEAAAnBAAAKQQA ACoEAAAsBAAALgQAADAEAAAxBAAAMwQAADUEAAA3BAAAOAQAADoEAAA8BAAA PgQAAD8EAABBBAAAQwQAAEUEAABGBAAASAQAAEoEAABMBAAATQQAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAdAAQAABwEAACpBAAA/v4AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAQJB BAAAQgQAAEMEAABEBAAARQQAAEYEAABIBAAASQQAAEoEAABLBAAATAQAAE0E AABPBAAAUAQAAFEEAABSBAAAUwQAAFQEAABWBAAAVwQAAFgEAABZBAAAWgQA AFsEAABdBAAAXgQAAF8EAABgBAAAYQQAAGIEAABkBAAAZQQAAGYEAADx59nn AOfL573nAOev56HnAOeT54XnAOd352nnAOdb5wAAAAAAAAAAAAAAAAAAAAAA ABsDan4sAAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2r+KQAANQiBT0oCAFFK AgBVCAFcCIFeSgIAGwNqCygAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDaosl AAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2qYIwAANQiBT0oCAFFKAgBVCAFc CIFeSgIAGwNqGCEAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDaiUfAAA1CIFP SgIAUUoCAFUIAVwIgV5KAgAbA2qlHAAANQiBT0oCAFFKAgBVCAFcCIFeSgIA GwNqshoAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDajIYAAA1CIFPSgIAUUoC AFUIAVwIgV5KAgASNQiBT0oCAFFKAgBcCIFeSgIAABsDaj8WAAA1CIFPSgIA UUoCAFUIAVwIgV5KAgAAIE0EAABPBAAAUQQAAFMEAABUBAAAVgQAAFgEAABa BAAAWwQAAF0EAABfBAAAYQQAAGIEAABkBAAAZgQAAGgEAABpBAAAawQAAG0E AABvBAAAcAQAAHIEAAB0BAAAdgQAAHcEAAB5BAAAewQAAH0EAAB+BAAAgAQA AP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAA AAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAA AAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0A AAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAdZgQAAGcEAABoBAAA aQQAAGsEAABsBAAAbQQAAG4EAABvBAAAcAQAAHIEAABzBAAAdAQAAHUEAAB2 BAAAdwQAAHkEAAB6BAAAewQAAHwEAAB9BAAAfgQAAIAEAACBBAAAggQAAIME AACEBAAAhQQAAIcEAACIBAAAiQQAAIoEAACLBAAAjAQAAI4EAADx5wDn2efL 5wDnveev5wDnoeeT5wDnhed35wDnaedb5wDnAAAAAAAAAAAbA2qwRAAANQiB T0oCAFFKAgBVCAFcCIFeSgIAGwNqvUIAADUIgU9KAgBRSgIAVQgBXAiBXkoC ABsDaj1AAAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2pKPgAANQiBT0oCAFFK AgBVCAFcCIFeSgIAGwNqyjsAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDatc5 AAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2pXNwAANQiBT0oCAFFKAgBVCAFc CIFeSgIAGwNqZDUAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDauQyAAA1CIFP SgIAUUoCAFUIAVwIgV5KAgAbA2rxMAAANQiBT0oCAFFKAgBVCAFcCIFeSgIA EjUIgU9KAgBRSgIAXAiBXkoCAAAbA2pxLgAANQiBT0oCAFFKAgBVCAFcCIFe SgIAACKABAAAggQAAIQEAACFBAAAhwQAAIkEAACLBAAAjAQAAI4EAACQBAAA kgQAAJMEAACVBAAAlwQAAJkEAACaBAAAnAQAAJ4EAACgBAAAoQQAAKMEAACl BAAApwQAAKgEAACpBAAAqgQAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA /QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAA AAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAA AP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAA AAAAAAAAAAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAA AAD9AAAAAAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAA AAAAAAAAAAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD9AAAAAAAAAAAA AAAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAABAAAAGY4EAACPBAAAkAQAAJEEAACSBAAAkwQA AJUEAACWBAAAlwQAAJgEAACZBAAAmgQAAJwEAACdBAAAngQAAJ8EAACgBAAA oQQAAKMEAACkBAAApQQAAKYEAACnBAAAqgQAAPHn2ecA58vnvecA56/noecA 55PnhecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAGwNqfFYAADUIgU9KAgBRSgIAVQgBXAiBXkoC ABsDaolUAAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2oJUgAANQiBT0oCAFFK AgBVCAFcCIFeSgIAGwNqFlAAADUIgU9KAgBRSgIAVQgBXAiBXkoCABsDapZN AAA1CIFPSgIAUUoCAFUIAVwIgV5KAgAbA2qjSwAANQiBT0oCAFFKAgBVCAFc CIFeSgIAGwNqI0kAADUIgU9KAgBRSgIAVQgBXAiBXkoCABI1CIFPSgIAUUoC AFwIgV5KAgAAGwNqMEcAADUIgU9KAgBRSgIAVQgBXAiBXkoCAAAXJAAmUAkA MZBoAR+wzk4gsMBOIbA/GyKwMBojkAkkJJDuICWwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAFAFMAdQBtAG0AYQByAHkASQBuAGYAbwByAG0AYQB0AGkA bwBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAACAf////8VAAAA//// /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAAAEAAA AAAAAAUARABvAGMAdQBtAGUAbgB0AFMAdQBtAG0AYQByAHkASQBuAGYAbwBy AG0AYQB0AGkAbwBuAAAAAAAAAAAAAAA4AAIA////////////////AAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wAAAAAQAAAAAAAAMQBU AGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAA4AAgABAAAAAwAAAP////8AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAKg0AAAAAAAAFAFMAdQBtAG0A YQByAHkASQBuAGYAbwByAG0AYQB0AGkAbwBuAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAKAACAQIAAAAYAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAYAAAC4AQAAAAAAAP7/AAAECgIAAAAAAAAAAAAA AAAAAAAAAAEAAADghZ/y+U9oEKuRCAArJ7PZMAAAAHQBAAARAAAAAQAAAJAA AAACAAAAmAAAAAMAAACkAAAABAAAALAAAAAFAAAAyAAAAAYAAADUAAAABwAA AOAAAAAIAAAA8AAAAAkAAAAIAQAAEgAAABQBAAAKAAAAMAEAAAwAAAA8AQAA DQAAAEgBAAAOAAAAVAEAAA8AAABcAQAAEAAAAGQBAAATAAAAbAEAAAIAAADk BAAAHgAAAAEAAAAAAHMAHgAAAAEAAAAAAHMAHgAAAA8AAABNYXJrIFNjaHJl aWJlcgAAHgAAAAEAAAAAYXJrHgAAAAEAAAAAYXJrHgAAAAcAAABOb3JtYWwA aB4AAAAPAAAATWFyayBTY2hyZWliZXIAAB4AAAACAAAAMwByax4AAAATAAAA TWljcm9zb2Z0IFdvcmQgOS4wAABAAAAAAHbdQQEAAABAAAAAAL4KegyFwAFA AAAAAATOnQyFwAEDAAAAAQAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABAoCAAAAAAAAAAAA AAAAAAAAAAABAAAAAtXN1ZwuGxCTlwgAKyz5rjAAAADoAAAADAAAAAEAAABo AAAADwAAAHAAAAAFAAAAfAAAAAYAAACEAAAAEQAAAIwAAAAXAAAAlAAAAAsA AACcAAAAEAAAAKQAAAATAAAArAAAABYAAAC0AAAADQAAALwAAAAMAAAAyQAA AAIAAADkBAAAHgAAAAEAAAAAAAAAAwAAAAEAAAADAAAAAQAAAAMAAAAAAAAA AwAAAKAKCQALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAALAAAAAAAAAB4QAAAB AAAAAQAAAAAMEAAAAgAAAB4AAAAGAAAAVGl0bGUAAwAAAAEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAIBAAADAQAA/v// /wYBAAD+////BwEAAAgBAAAJAQAACgEAAAsBAAAMAQAADQEAAP7///////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //8uZ8VaQrR3HEe2vbYX7o83oqP0P6VGdgMJqqhs6k5FPU3W0A70CP3UcXTr 6A+kpfYm+Yy+73p02a7dFDi2H26M2wp0IMtndbwF+X9wpQNPaUvQdD0FrdXL HPv4IX0a2qVfgZ7XByKZFqQBPz/Ug3762BlwSuuJN+gFjvxcp4/B7+u98Dq9 LZZBtwdQfQDodOIO3bd4rf6dI7o1Oibv6IfxGv1j1+iOw4nsmcz/ALosV31X p92EXtKRI7qNeiv8D709fl0/jGTQ3QzHDgC6nS7R3Yp266sd0f1FX48/1Xfg j/SVWBbdR4BuJXGLboc+y3Feb9KvgZG9k7yvX+J6Xp+AE38Hx14HdPmu+u60 louf0G92nLPP6g9AKyrRffpC1yPLvim8G5+z+1yh+1nrgTfrrziO7JP6OzBn P8bb9RrXI3tMC6rU/9CDvysRO7oTWi/8nH6L48g+DKO6U19LXtMXSY3s94Du VUD3KnE3srX4Mf0RR3T36pvINn0beUZf6RodeyxYDOj+DugOuxpZqn8NIzvN cWR36Ffjd/WRwNGJUtF4CQqO7GGXa8XXMLKPO86K1/Rn0E59KYzwKqmV7DSf FRtcrhVryGY9w3Fkt+t9IJog8qTucz2yp+HEi3BQKbh7Uon0VeQNfYnjyP5d vwPWikvw83q165GtY+oUjkHr0DpX6M5oT5CX9LccR/Zt/UP0pr4W9MwuqZFd S4IqKpO6U1EbyXS9LV2r73Mc3ef1I2SXvos8pL/jenQXeYN7j8sBWqpAB17v DaKeYsa297g4vPd4kpkCtYvdCcU27oSPUKmZiW70Nr732GMWo61e573HW70s d6u3GBmmde/xKUuO/Q5OI3ClyD550Rvce+wxE733eNih//8Op2GCvcfDDsl/ LjdcwedyIxR8LjdSocMp8lOxkdJ7jw0zXuayeyXG3MTuPU4ec4dJM3e4YO9x PMwdqYC5oxQwd3SzcyeMsfRg07kTxkpzaZxg7/GJN+W5VKKAS6UKuDReQRQc y6PeOJ6W8HR8REtGKXMniONtyIUQ8kX4w8hKpfcei+OxyJ3AlNS/cyUVy97j 4eG9x5PM3bZKarjt3uNSc4+DkqrGHtMfg5I6GlZSfmhldYO9x0fRL5YcuzhS Df3kt1mP7uLr0ccJXI/ykrgeDVfocMqLaz0arSCGjFEQQ8YqiCF2M3ms5Mxd Ep658sw9zZlbkcC9Xtqp5DF3pDRzR0cxl+GWZ+5YBcwdp4C5Jc1OSZVaerDp lNR4aS6VRXHpldp4lNQEBVyaqIBL5Qqi4Hge9cp4OoGn5REtGadMSYnjbb2G K7VoOT/0lKTv3iYe2ykptveYKamLY9h7PJorqWlkkrkM2ymp0bZ7j0vNe3Dj SqqAeMwa7KykNuGQkqqB9lr3Hmtmwxz7HZxG4ErCO3vC7+wTuvc4eevRaOkY Mlaw9zie9ehcuhuzm8njpfceG3EzdytnbmL3HiePufLPEUoEe4/jYe54Bcwt U8DcCc1OSU209GDTKalyaS5VCPYex6OkJing0mQFXJqiIAqW86hXwdNJPJ0S 0ZIyZUpKHG/rNdxEi5bzQ0/J7j0Wx2M7JTWEBJVULHuPS8J7jyeZQ4mdkiqx UVKYlpplpHEldQCU1GzirKRmkZCSmg3tPdBg7/Es8qMlxy6OHIBcdiXhnT1f jxK79zh561GJdAwZL9h7HM96dC7djdnN5HLpvcehmSvPXLb3mDE3sXuPk8dc +ecIEwR7j+NhbrkC5lYoYO6kZqekJlt6sOmU1BRpLp0n2Hscj5I6XwGXLlDA pakKouAUHvXO4+n5PJ0a0ZIKZUpKHG/rNdxki5bzQ0/J7j0Wx2ORkmK7PgvZ bgkYjnmNOAwnCHZ9DsBnjQsjXHITolxex4yrcJ7nKuzxjHHtktsCMF4EVP09 wb1EsaN70TiMDc9/O6JL8XyO+3hexaeNba7R1QAMjalQT+P+x2h0zxlrSG9P HnFCN9RTRMo9XtLRk+HaITfRDCIqhMpaCxxyLJ/VlQn5N6JY0Ic8fpPNxWiD 6UXHzBLk1IIvzd+gtr7L0FmzH5JpQQqMeh5UNsbV6E828/HP8HJCd9wcgXN9 3fFxMw3LoHsXUHXxsTXEHbov8THza0d0teYZnO37Bv9g7nGNrgzgLIJjfaCy DFd9V2EuQR7fGceRPWGm4J6+tri171skg+5Gvgq94hLdzai9b5Vj31HfU7iv 728433cXlkWXD5XdSdyiS/Fd6Tiv68xKku37I8n1TXM9r5nj9XI41hoq6+qq 76aYOdhv3uQ4smfMe6EVM9BnZrXrkS0FOLl8zu51hW6imYeRb1sMs+ItmLN7 cAvfBtcjO94M7uNo72vcdR2NrtyE1dP8g+PIHjJXkDa+J0ia73qpkT0E6FpC ZduJu5E9go+YDzui22+uJz7fVnLavMs1ugsAziBA1w0q+8bVyF5kHoSRneq8 Fvtm406+ocDRUqlozOJdO9foJgO6X8zVjrOilW8jSvMtQd+aD0qtZHV8Vjzl cq14jCBfW8eR9fl6QjT5BdeahuuRZU/RpuKgUnjYFbqp5oMk3bfYcWS7+f4I a8U0mEFVrke2gvnO4FguVLbGFbrzzEeJx7fbcWSzfB+gDN8a0DOvS40s22XM VFR76k5FrSUbzNb0mLnXcXTPmt+Rtr6d5EvzLdejexOg6QPI7gJIvbRYEM4K IOyHlpH+dDmpoLeTGfRfyGK6itxB15KH6NNkNf0LeZJuJ+voG2QjfZtsoh+S Gtpbq6GDtafpKO1ZWqZtpudpf6XTtJfp5dpr9BrtXbpQ+196o3acLtNStOVa nnYbpHfC+/vh+L9B/gY47zk4/0Uo9wqU3w31vAv17YV6C40aWmRsomOMjXSi sY5eYDxJLzZW098aD9F5xh10kbGYLjVm0OVGBb3N6E+tT3Yn2PaW+InvCfwq Lmvwa2KiJ76f4OV4Np5jc+cavjeP+jyp/o48PaCA5kAdOuTOQbPxLfgTXDLn 6rnXoVK4ZyuGMRzK72fhrMBT5dBZuajI9p7uWwAIERfNhcbe3ciMKY+aMd97 vsbneSO/8aM8+luQvAtIpfd2coX3Ytd8/ArQ3Q/Hqr2Nfw9ONLpDnnH4Iu9f kRO6Wd5daJ73QTTWW+N6PtcBugGAagGcONsVujOeK3GZtwI7oavwXomrvKPx SO8Q17HwLKDbCKiu8ja+DzUaHfU+A1d83RHdQO9HeJb3fTzO6/x9JE6fupTz 2XSz/rw+UbuYij91KbfMqsv1Bfo12p+o9XOUhrOmY2A+zINzfJD7J4gs1frl +sDrKnMvWFg5Z2HuUMT+y0bnoy6Bv7rA36HasgNl90PZFg3KVly3aM7CmbMX za2+Ds4YGnixsgPhr/aBOlJ5uWt13KBcwzkYxBl85ojQ/wFRpYdklR0AAEQA ZAAAAAAAAAACAAAAAAAAAAAAAAAAAF8ZyQnoA+gDAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAPAATwSgAAALIECvAIAAAAAgQAAAAKAABDAAvw GAAAAARBAgAAAD8BAAAHAL8BDAAfAP8BAAAIABMAIvEGAAAAvwMAAIABAAAQ 8AQAAAABAACAMgAH8PccAAADBFl8dGNaaXoQp3hFJIWF2TH/ANMcAAABAAAA QRoAAAAACAFgIRvwyxwAAFl8dGNaaXoQp3hFJIWF2TFS6QAAAAAAAAAAAACS CgAAFAQAAADuPgA4RhgAmRwAAAD+eNrtXQt4VEWarar76O6rPEJ4QyAJjxgg kJBAEp4hvF8hIIQIAUFhMCIgICgPHUVA4RsdHiOjKIhEkBkcZV1XmRFnGV/r qIPuyKgzG11GxAFWoHEVERjYv7qru3O76+b2ra7ubPjg+5qib93Hqb9OnTp1 81PByIOQ8qu7EJqJ1iP6pyl8OuuNUDt0Bf6ovu+TFyya1RCNrbx10YLFC35y Vyr9rsHx6wi9gv7retJU3WQkw78u+o6Z/uDBC5Ysqpy9KLVk9t3wVYVPFvaX BGPUzHfVU1f8J2/A9G+1CDWZWDlv9mJ6TeqEBfNmzg9eiX1P9NDnkAbwV0/D 9xBfLUKbjKZqKspCjVk7mvvagdBsF0I3wL0HuBG6ACW0G10gmu8aekI6uztB cCK6RPxHA89UUBmUHZVM9JGrG37blYVfc3XHe1x5eIurP37INRKvcJXjha5K PNe1Et/uWosrXRug3Arfn4Xjr0L9u3Dep3D+UbjuG7j+W7jPd/gj+PwXfI7B 9/Nw3HAfxa3cn+LO7ndxtvtV3Nv9LM53b8UF7g1QroXvK+F4JdSXw3kj4fz+ cF0eXN8d7pOFKT5/20IdEGibGmxN4Aw97AyNtR6z4/6jer1qPXQw6qQQRHG1 cn9S4/snvmtqxsILLQ7ExM0Yo/sYgyMYtJvFa7mCkAs+4fU7oR4Oo3vhry9q MCcs1sQc65ZqNVqh6HD3wPl8fLqJn23UD9ESJRk9H3EVRdDOd05zdR8qVHLQ cRIYaY1NI+0AYSMtfdCiypl3BBFryD+qsuFKOqqOkxxUoOxDg9DQYE2WUrMm FRUER7P5+QW+54dH6h/w5D/CsUI4uTlG7Bp6h+7YrydGUFk8wX9hQi8OjwYt Fehj+sQmalN1NChAKfKrk375wHm/Oh1A7zpSNv8VPD1TLfTMJaxn7hp6FsId qWzvogOIKpuZV5EK5jGdkaKnIS+irUE1OBnOzXClMEz9uA09Av/uh5zx6DrG llS4krahH9zjZ2hbDR6logdMNQEeZWDaP6GoeiFG/tLDyusQb7TQ68JHceC4 /4n7gZGxMrcf9jN3XRyZe+xS4pjrFmauJ4K5FLc4c6+TwNzrJTC3AeNniiVz UyyYG86jbVBLnx/Oo77w/VX4PEKf6ZBHvBm6oSmCIVYdQKMhfqUoUVxqJMyl xhFcuvNc0SlxLiVJ4FITCVxKlqCCjZjqNWZlEiuTw1pyfZQquBueU/sT+Xrr hZHhLxuyMoCsiaAed8V8PaZn8PzV68xf/RLb+ysP81eP4RXKQUt/5bHwV+vw EuUDG39ViQuVkzX8VcA/ha9PTgSd1EloZSUejEagQE22UrPGSkcqIU4nLeaj B9l89FEc56PcBM5HHmENuS5CQ3Jjmo8aSNCQhhI0pJEEDbEayY0ER+6i4MgV Z+45xtzBJH7MTb6YOOZeJ8zcBhHMpbjFmdtIAnMbS2BuUr1zUk1MEaw7J5Us zKWmEVw6ejYWJ9VMApeaS+BSCwkqmMxUrykrm7GyRVhLGktzUny9DXm4JiYv 54VIienxMQs9tnJSS7HfSY0n9k6qAXNS48gKZRm2clINLJxUMVmirMW1O6l0 UqhUYXsntRMHnFQVtDedDEclKFDTW6lZY6Uj6aTA9yTuyp6wlX0c56NZFxI3 HzUQ1pBGERpCcV9bjYWiGjmSk0XXQKQgZua+yJh7KY7MHfxj4pgr/h4hKYK5 FLc4c5MlMLepBOY2q3dOqrkpgnXnpFoIc6llBJcqTsXipFpJ4FJrCVxqI0EF WzDVa8nKVqxsE9aSptKcFF9vQx6uucnLeSFSYnq83UKPrZxUD+J3UoZi76SS mJNyKyuUXGLlpJIsnNQlcFIDSe1Oqhqc1DRi76QqSMBJTYP2VpOJqD8K1HRS atZY6Ug11NIncVf2bD4arMRvPtp4PnHzUZKwhiRHaAjFfW01Fopq5EhuIboG Co5cceZWKn7mvhJH5i78IXHMFX+P0CyCuRS3OHNbSGBuSwnMbVXvnFRrUwTr zkm1EeZS2wguHToei5NKkcCldhK41F6CCrZhqteWlSmsbB/WkpbSnBRfb0Me rrXJy3lxO0E9Llf4esxzUtNVv1vqqfGzq6ao/nHUS4suu6pZMLsqV9Ph7nyn 1cwyuypLS0az1Nqzq86qOWiHaue0suEcWrsDzvaq5jyqY6Ya62wUr+9J4TF5 WvXnUZ1V451Hded3idKYZsIa04KTR3Xnd9dWa6GoRo70NsJ5VN6YmUvzqChz 45tHlTjmir9naMXJo4qFuW0kMLetBOam1Dun1c4UwbpzWu2FuZTKyaNa9aU4 l9IkcCldApc6SFDB9kz1UlmZxsoOYS1pK81p8fU25PHambyeF6cL51Hx9Zjn tKiTep05qWjyqFoF86hytYOWTqqVZR5VlvaBjZOqxGfVk1E4qRNBJ3USWmnO ozpuqrHORvH6nsSbjx5k81F886gSNx+1EtaQNpw8qljmo6tptWY1ktsL51F5 Y2buOcbc+OZRJY654u8ZUjh5VLEwt70E5qZKYG5avXNS5gjWnZPqIMyljpw8 qlicVCcJXOosgUsZElSwA1O9jqzsxMqMsJakSnNSfL0Nebh0k5fzQqRE86j4 emzlpGgeFXVS0eRRpQTzqHK1ZdjKSaVY5lFlaWtx7U4qnZxVq7C9k9qJA06q CtprzqM6baqxzkbx+p7EXdkTtrKPax5V4uajFGENac/Jo4plPrqaVmNWI7mD cB6VN2bmvsiYG988qsQxV/w9QhonjyoW5naQwNyOEpjbqd45qc6mCNadk8oQ 5tINnDyqWJxUpgQudZHApa4SVDCDqd4NrMxkZdewlnSU5qT4ehvycJ1NXs4L kRLNo+LrsZWTonlU1ElFk0eVFsyjytVyiZWTSrPMo8rSBpLanVQ1OKlpxN5J VZCAk5oG7TXnUX1uqrHORvH6nsRd2bP5KL55VImbj9KENaQDJ48qlvnoalqN WY3kDOE8Km/MzKV5VJS58c2jShxzxd8jdOLkUcXC3AwJzL1BAnMz652T6mKK YN05qa7CXOrGyaOKxUllSeBSdwlc6iFBBbsy1evGyixW9ghryQ3SnBRfb0Me rovJy3khUqJ5VHw95jmpVrrfLZ3W+XlUzXX/OPLq0eVRdQrmUZ3Wdbg732l1 ssyjOq4no/Z67XlUz+s5aKpun0c1Vae1U+Hsvbo5j2qHqcY6G2Wv70kR7lP3 51E9r8c7j6qtN1Ea00lYYzI4eVRtvddWa6GoRo70rsJ5VHtjZi7No6LMjW8e VeKYK/6eIZOTRxULc7tKYG43CczNqndOq7spgnXntHoIcymbk0f1L5+KcylH Apd6SuBSrgQV7MFUL5uVOazMDWtJN2lOi6+3IY/X3eT1vBAp0Twqvh7znBZ1 Uq8zJxVNHlVmMI/qtH7Q0kllWuZRHdc/sHFSlfh5/WQUTupE0EmdhFaa86iq TDXW2Sh7fU/izUcPsvkovnlUiZuPMoU1pCsnjyqW+ehqWq1ZjeQewnlUe2Nm 7jnG3PjmUSWOueLvGbI4eVSxMLeHBOZmS2BuTr1zUj1NEaw7J5UrzKU8Th5V LE6qlwQu9ZbApXwJKpjLVC+Plb1YmR/WkmxpToqvtyEP19Pk5bwQKdE8Kr4e WzkpmkdFnVQ0eVRZwTyq0/oybOWksizzqI7ra3HtTiqdPK9XYXsntRMHnFQV tNecR/UrU411Nspe35O4K3vCVvZxzaNK3HyUJawhPTh5VLHMR1fTasxqJOcK 51HtjZm5LzLmxjePKnHMFX+PkMPJo4qFubkSmJsngbm96p2T6m2KYN05qXxh LhVw8qhicVKFErjURwKX+kpQwXymegWsLGRl37CW5ElzUny9DXm43iYv54VI ieZR8fXYyknRPCrqpKLJo8oJ5lGd1nOJlZPKscyjOq4PJLU7qWpwUtOIvZOq IAEnNQ3aa86jetxUY52Nstf3JO7Kns1H8c2jStx8lCOsIbmcPKpY5qOraTVm NZLzhfOo9sbMXJpHRZkb3zyqxDFX/D1CL04eVSzMzZfA3AIJzC2sd06qjymC deek+gpzqR8njyoWJ9VfApcGSODSQAkq2JepXj9W9mflwLCWFEhzUny9DXm4 PiYv54VIieZR8fWY56R+AM2dA8d+Dt3RNfj7IiN/Y2KvoNIGfs/gRX0uWuRy 4ZrKS9sW+L2SNUdSL0Tp1lFR0M2uJni9qzN+wHU+4rc12v1mwgeAOPScOXBB Eifn637FP6InQP1yZN2W/GBbDF9bFLRaWYKOKB6UpRYjc3vyI1rQTh2PStQp qEDt4bgFFGEDiPI0uKAIR4MwEO3VSiecrXbGdui6q/1wOZzXXU3CIug+xP7/ pUCIM3Rf4yz1uC26ruplXAbndVU/dozuPkB3FxybDRe0dBS7Vco9qEj9p23P 5qjX4xlqUzxKPYFE0K2AY3PpriMO0f0UjVMft41dP7UK/0Tdj6er67Aouuns f6s6QzdUvZnYoeupziZl6mpykzqJiIzrCjg2Ci5IdxS7NUoKzlRX2PZsb/VR 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 ygAAAAIAAADkBAAAHgAAAAEAAAAAAAAAAwAAAAUAAAADAAAAAQAAAAMAAAAF AEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEA dABpAG8AbgAAAAAAAAAAAAAAOAACAf///////////////wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAYAQAAAAAAAAEAQwBvAG0A cABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAASAAIA////////////////AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAARwAAAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAADMDAAADAAAAoAoJAAsAAAAAAAAACwAAAAAAAAAL AAAAAAAAAAsAAAAAAAAAHhAAAAEAAAACAAAAIAAMEAAAAgAAAB4AAAAGAAAA VGl0bGUAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAFAAQAAoAAQBpAA8AAwAAAAAAAAAAADgAAEDx/wIAOAAMAAYA TgBvAHIAbQBhAGwAAAACAAAAGABDShgAX0gBBGFKGABtSAkUc0gJFHRICQQA AAAAAAAAAAAAAAAAAAAAAAA8AEFA8v+hADwADAAWAEQAZQBmAGEAdQBsAHQA IABQAGEAcgBhAGcAcgBhAHAAaAAgAEYAbwBuAHQAAAAAAAAAAAAAAAAAOAAi QAEAAgA4AAwABwBDAGEAcAB0AGkAbwBuAAAACgAPABOkeAAUpHgADgA1CIFD ShQAXAiBYUoUAAAAAAApAwAABQAAEgAACQD/////AAAAABwAAAAiAgAAIwIA AD8CAAArAwAAmAAAAAAwAAAAAAAAAIAAAACAmAAAAA8wAAAAAAAAAIAAAACA mAAAAAAwAAAAAAAAAIAAAACAmAAAAAAwAAAAAAAAAIAAAACAmAAAAA8wAAAA AAAAAIAAAACAAAQAACkHAAAGAAAAAAQAACkHAAAHAAAAAAQAACkHAAAIAAAA AAAAABgAAAAaAAAAIwAAADoAAAA8AAAAIwIAADsCAAA9AgAARgIAAF0CAABf AgAAKQMAABM6lP+VjBMMdP+VgBM6lP+VgBMMdP+VgA8AAPA4AAAAAAAG8BgA AAACCAAAAgAAAAIAAAABAAAAAQAAAAMAAABAAB7xEAAAAP//AAAAAP8AgICA APcAABAADwAC8JIAAAAQAAjwCAAAAAEAAAACBAAADwAD8DAAAAAPAATwKAAA AAEACfAQAAAAAAAAAAAAAAAAAAAAAAAAAAIACvAIAAAAAAQAAAUAAAAPAATw QgAAABIACvAIAAAAAQQAAAAOAABTAAvwHgAAAL8BAAAQAMsBAAAAAP8BAAAI AAQDCQAAAD8DAQABAAAAEfAEAAAAAQAAACkDAAD//woAAAALAF8AMQAwADQA MQA3ADYANgAzADAANQALAF8AMQAwADQAMQA3ADYANwA4ADgAOQALAF8AMQAw ADQAMQA3ADYANwA5ADMAMwALAF8AMQAwADQAMQA3ADcAMgA2ADUAOQALAF8A MQAwADQAMQA3ADcAMgA5ADgAMAALAF8AMQAwADQAMQA3ADcANQAyADQAMgAL AF8AMQAwADQAMQA3ADcANQAyADMAMAALAF8AMQAwADQAMQA3ADcANQAzADAA NAALAF8AMQAwADQAMQA3ADgANgAxADgAOAALAF8AMQAwADQAMQA3ADgANgAy ADgAMAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA7AgAAOwIAADsCAAA7AgAA KwMAAAAAAEABAABAAgAAQAMAAEAEAABABQAAQAYAAEAHAABACAAAQAkAAEAY AAAAGAAAABgAAAAYAAAAGAAAABgAAAA7AgAAOwIAADsCAAA7AgAAKwMAAAAA AAAbAgAAIAIAACsDAAAHAAQABwAAAAAAKwMAAAcA//8UAAAADgBNAGEAcgBr ACAAUwBjAGgAcgBlAGkAYgBlAHIAUwBDADoAXABXAEkATgBEAE8AVwBTAFwA QQBwAHAAbABpAGMAYQB0AGkAbwBuACAARABhAHQAYQBcAE0AaQBjAHIAbwBz AG8AZgB0AFwAVwBvAHIAZABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAA cwBhAHYAZQAgAG8AZgAgAEgATQBNAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBl AC4AYQBzAGQADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBlAHIAIwBDADoA XABNAHkAIABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBNAEEAcgBjAGgAaQB0 AGUAYwB0AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkA YgBlAHIAIwBDADoAXABNAHkAIABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBN AEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAA UwBjAGgAcgBlAGkAYgBlAHIAUwBDADoAXABXAEkATgBEAE8AVwBTAFwAQQBw AHAAbABpAGMAYQB0AGkAbwBuACAARABhAHQAYQBcAE0AaQBjAHIAbwBzAG8A ZgB0AFwAVwBvAHIAZABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBh AHYAZQAgAG8AZgAgAEgATQBNAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAC4A YQBzAGQADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBlAHIAIwBDADoAXABN AHkAIABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBNAEEAcgBjAGgAaQB0AGUA YwB0AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBl AHIAIwBDADoAXABNAHkAIABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBNAEEA cgBjAGgAaQB0AGUAYwB0AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAAUwBj AGgAcgBlAGkAYgBlAHIAUwBDADoAXABXAEkATgBEAE8AVwBTAFwAQQBwAHAA bABpAGMAYQB0AGkAbwBuACAARABhAHQAYQBcAE0AaQBjAHIAbwBzAG8AZgB0 AFwAVwBvAHIAZABcAEEAdQB0AG8AUgBlAGMAbwB2AGUAcgB5ACAAcwBhAHYA ZQAgAG8AZgAgAEgATQBNAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAC4AYQBz AGQADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBlAHIAIwBDADoAXABNAHkA IABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBNAEEAcgBjAGgAaQB0AGUAYwB0 AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAAUwBjAGgAcgBlAGkAYgBlAHIA IwBDADoAXABNAHkAIABEAG8AYwB1AG0AZQBuAHQAcwBcAEgATQBNAEEAcgBj AGgAaQB0AGUAYwB0AHUAcgBlAC4AZABvAGMADgBNAGEAcgBrACAAUwBjAGgA cgBlAGkAYgBlAHIAIwBDADoAXABNAHkAIABEAG8AYwB1AG0AZQBuAHQAcwBc AEgATQBNAEEAcgBjAGgAaQB0AGUAYwB0AHUAcgBlAC4AZABvAGMA/0ABgAEA IQIAACECAACYv2QAggGCASECAAAAAAAAIAIAAAAAAAACEAAAAAAAAAApAwAA UAAACABAAAD//wEAAAAHAFUAbgBrAG4AbwB3AG4A//8BAAgAAAAAAAAAAAAA AP//AQAAAAAA//8AAAIA//8AAAAA//8AAAIA//8AAAAAAwAAAEcWkAEAAAIC BgMFBAUCAwSHOgAAAAAAAAAAAAAAAAAA/wAAAAAAAABUAGkAbQBlAHMAIABO AGUAdwAgAFIAbwBtAGEAbgAAADUWkAECAAUFAQIBBwYCBQcAAAAAAAAAEAAA AAAAAAAAAAAAgAAAAABTAHkAbQBiAG8AbAAAADMmkAEAAAILBgQCAgICAgSH OgAAAAAAAAAAAAAAAAAA/wAAAAAAAABBAHIAaQBhAGwAAAAiAAQA8QiIGADw 0AIAAGgBAAAAAKq7UUYtvVFGLrxRRgcANAAAAHUAAACbAgAAAQABAAAABAAD EAUAAAAAAAAAAAAAAAEAAQAAAAEAAAAAAAAAIQMA8BAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAegBTcAtACCgnIwAAAA AAAAAAAAAAAAAAAzAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAI MoNRAPAQAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8SAAAA AAAAAAEAIAAAAAAAAAAOAE0AYQByAGsAIABTAGMAaAByAGUAaQBiAGUAcgAO AE0AYQByAGsAIABTAGMAaAByAGUAaQBiAGUAcgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAP7/AwoAAP////8GCQIAAAAA AMAAAAAAAABGGAAAAE1pY3Jvc29mdCBXb3JkIERvY3VtZW50AAoAAABNU1dv cmREb2MAEAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAA= --0-1961032256-980286582=:14781-- From gcox@netgenics.com Wed Jan 24 13:47:27 2001 From: gcox@netgenics.com (Cox, Greg) Date: Wed, 24 Jan 2001 08:47:27 -0500 Subject: [Biojava-l] Newbie build question Message-ID: I checked biojava out of cvs, and I'm having problems getting the build tool to work. I've added xml.jar to my classpath, but when I run build.Builder all it fails on references to com.sun.xml.tree.* and parser.* However, when I run javac directly on a class that fails with build, it compiles without errors. The build tool works when "|xml.jar" is added to Builder.props. More generally, it seems that Builder doesn't work off of the current classpath, but creates a new one for biojava. Is this accurate? Thanks, Greg Cox From td2@sanger.ac.uk Wed Jan 24 14:03:53 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Wed, 24 Jan 2001 14:03:53 +0000 Subject: [Biojava-l] Newbie build question In-Reply-To: ; from gcox@netgenics.com on Wed, Jan 24, 2001 at 08:47:27AM -0500 References: Message-ID: <20010124140353.B8284@jabba.sanger.ac.uk> On Wed, Jan 24, 2001 at 08:47:27AM -0500, Cox, Greg wrote: > I checked biojava out of cvs, and I'm having problems getting the build tool > to work. I've added xml.jar to my classpath, but when I run build.Builder > all it fails on references to com.sun.xml.tree.* and parser.* However, when > I run javac directly on a class that fails with build, it compiles without > errors. This is just bad luck -- there was some code checked in a couple of days ago which used xml.jar, and you seem to have picked that up. In the latest revision, it's been fixed to use xerces.jar instead. If you do a `cvs update' you should be fine. > The build tool works when "|xml.jar" is added to Builder.props. > More generally, it seems that Builder doesn't work off of the current > classpath, but creates a new one for biojava. Is this accurate? Specifically, the builder invokes javac with the -classpath option, and it then ignores the CLASSPATH environment variable. The biojava build tools isn't a particularly wonderful piece of software, but it served a need when it was written. I'm now using `ant' for day-to-day builds, and I suspect we'll be switching wholesale to ant after the 1.1 release. Let me know if you have any more trouble, Thomas. From msterman@exceloncorp.com Wed Jan 24 14:27:54 2001 From: msterman@exceloncorp.com (Martin Sterman) Date: Wed, 24 Jan 2001 09:27:54 -0500 Subject: [Biojava-l] (no subject) References: Message-ID: <00a101c08611$d783d0c0$171103c6@exceloncorp.com> Hello, I am new to the BioJava list, so not sure what the current state of microarray expression data is, but assuming there are possibilities here, I have interest in contributing. A bit about myself, I have an MS in Biochemical Engineering and worked several years for Genzyme Corp. I have since migrated toward software development, finishing a Certificate in Computer Science from U Mass (a compressed BS in Comp Sc) and am now working for a software company called eXcelon Corp. I am particularly interested in utilizing XML data format and tools. eXcelon makes a proprietary XML data server ("Portal Server") but we adhere to all W3C standards. I may utilize our products during development, but all code will adhere to vendor neutral standards. Is there publically available data? What is the current format? What is your thinking of the needs in this area? Martin Sterman eXcelon Corp. 781-674-5324 ----- Original Message ----- From: "ZHOU, YIHUA [FND/1000]" To: Sent: Tuesday, January 23, 2001 10:02 AM Subject: [Biojava-l] (no subject) > BioJava is doing a great job in representing and processing sequence data. > How about microarray expression data? Is there anyone actively involved in > this area? Who should I talk to for potential contribution in this > sub-project? > > Thanks. > > Yihua Zhou, Ph.D. > Sr. Bioinformatics Scientist > Monsanto Company > 314-694-5053 > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > From dorsch@netgenics.com Wed Jan 24 16:16:29 2001 From: dorsch@netgenics.com (Forsch, Dan) Date: Wed, 24 Jan 2001 11:16:29 -0500 Subject: [Biojava-l] Newbie build question Message-ID: Perhaps xml.jar could be removed from CVS so people aren't tempted to use it in the future? Dan Forsch, Principal Software Engineer NetGenics, Inc. > -----Original Message----- > From: Thomas Down [mailto:td2@sanger.ac.uk] > Sent: Wednesday, January 24, 2001 6:04 AM > To: Cox, Greg > Cc: 'biojava-l@biojava.org' > Subject: Re: [Biojava-l] Newbie build question > > > On Wed, Jan 24, 2001 at 08:47:27AM -0500, Cox, Greg wrote: > > I checked biojava out of cvs, and I'm having problems > getting the build tool > > to work. I've added xml.jar to my classpath, but when I > run build.Builder > > all it fails on references to com.sun.xml.tree.* and > parser.* However, when > > I run javac directly on a class that fails with build, it > compiles without > > errors. > > This is just bad luck -- there was some code checked in > a couple of days ago which used xml.jar, and you seem to have > picked that up. In the latest revision, it's been fixed > to use xerces.jar instead. > > If you do a `cvs update' you should be fine. > > > The build tool works when "|xml.jar" is added to Builder.props. > > More generally, it seems that Builder doesn't work off of > the current > > classpath, but creates a new one for biojava. Is this accurate? > > Specifically, the builder invokes javac with the -classpath > option, and it then ignores the CLASSPATH environment variable. > > The biojava build tools isn't a particularly wonderful piece > of software, but it served a need when it was written. I'm > now using `ant' for day-to-day builds, and I suspect we'll be > switching wholesale to ant after the 1.1 release. > > > Let me know if you have any more trouble, > > Thomas. > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > From td2@sanger.ac.uk Wed Jan 24 16:14:16 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Wed, 24 Jan 2001 16:14:16 +0000 Subject: [Biojava-l] Newbie build question In-Reply-To: ; from dorsch@netgenics.com on Wed, Jan 24, 2001 at 11:16:29AM -0500 References: Message-ID: <20010124161416.C8284@jabba.sanger.ac.uk> On Wed, Jan 24, 2001 at 11:16:29AM -0500, Forsch, Dan wrote: > Perhaps xml.jar could be removed from CVS so people aren't tempted to use it > in the future? Good point... I we convinced I'd removed it a couple of months ago (it's certainly been gone from my copy), but it does indeed still seem to be in the CVS repository. It's gone now. Thomas. From birney@ebi.ac.uk Wed Jan 24 18:00:46 2001 From: birney@ebi.ac.uk (Ewan Birney) Date: Wed, 24 Jan 2001 18:00:46 +0000 (GMT) Subject: [Biojava-l] BOSC 2001 [Bioinformatics Open Source Conference] Message-ID: [PLEASE do not reply to this mail as it is cross-posted to many lists. PLEASE reply to bosc@bubbles.sonsorol.org. I am assumming that people KNOW HOW TO DRIVE THEIR MAIL CLIENTS. Think before hitting reply! This is an experiment to see how smart the general bioinformatics hacker is] We will be attempting to run another Bioinformatics Open Source Conference just before ISMB 2001. We have recieved information that this is likely to be able to occur and will possibly have extensive computer support, therefore allowing development to occur as well as talks. At the moment we are gathering our thoughts and generally mapping out the form of the conference. We would like input from the wider open source bioinformatics community for ideas about the conference. The practical aims of this is to (a) come up with a format for the day(s) (b) appoint a committee to run the conference. It is likely that myself and Chris Dadigidan will be the core of the committee as we've done this before and we know what is going on. (Frankly if someone wants to take over my cheer-leading role, you are more than welcome! Endless patience and good email-discipline is a must...) I would suggest the following committee membership: Each of the major groups nominate one person on the committee. I would suggest: bioperl (possibly me or chris), biojava, biopython, emboss, acedb, ensembl (possibly me) each has one person assigned to be on the committee. Then I would like to see if we can reach out into the smaller projects, including ones I haven't listed here, such as the nascent bioLISPers, I believe there is an open source Bio PathWays group, the Apollo/Gadfly people might want to make sure they are represented. (biocorba and bioxml - you are smaller projects at the moment) Ideally one or two people can come from the smaller projects. Total committee should be 8 or less. [PS - if you know of people who "have a project" but they are in the primordial soup stage of the project, please forward this mail onto them] Comments should be addressed to bosc@bubbles.sonsorol.org - like I said, I expect the major projects to assign their own representitive or say they are not interested. Ewan Birney ----------------------------------------------------------------- Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420 . ----------------------------------------------------------------- From Robin.Emig@maxygen.com Wed Jan 24 22:52:25 2001 From: Robin.Emig@maxygen.com (Emig, Robin) Date: Wed, 24 Jan 2001 14:52:25 -0800 Subject: [Biojava-l] ANT & Message Message-ID: Anyone having problems with ant. It compiles things I think, but then fails on the build with "Message should have been provided". Also, it cannnot compile two of the files(DASSequenceDB) because it can't import org.biojava.utils.cache. -Robin From jason@chg.mc.duke.edu Wed Jan 24 23:17:14 2001 From: jason@chg.mc.duke.edu (Jason Stajich) Date: Wed, 24 Jan 2001 18:17:14 -0500 (EST) Subject: [Biojava-l] ANT & Message In-Reply-To: Message-ID: I am able to do % ant -f build/biojava.ant without problems, build a plain ant in the dir was getting error messages. 146 genemap ../bio/biojava/biojava-live> ant Buildfile: build.xml BUILD FAILED Could not create task of type: copy because I can't find it in the list of task class definitions Total time: 4 seconds On Wed, 24 Jan 2001, Emig, Robin wrote: > Anyone having problems with ant. It compiles things I think, but > then fails on the build with "Message should have been provided". Also, it > cannnot compile two of the files(DASSequenceDB) because it can't import > org.biojava.utils.cache. > -Robin > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > Jason Stajich jason@chg.mc.duke.edu Center for Human Genetics Duke University Medical Center http://www.chg.duke.edu/ From kdj@sanger.ac.uk Thu Jan 25 09:29:11 2001 From: kdj@sanger.ac.uk (Keith James) Date: 25 Jan 2001 09:29:11 +0000 Subject: [Biojava-l] ANT & Message In-Reply-To: References: Message-ID: >>>>> "Robin" == Emig, Robin writes: Robin> Anyone having problems with ant. It compiles things I Robin> think, but then fails on the build with "Message should Robin> have been provided". Also, it cannnot compile two of the Robin> files(DASSequenceDB) because it can't import Robin> org.biojava.utils.cache. The import should be fixable by doing 'cvs update -d' as it's in a new directory. I know nothing about ant, though. -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From td2@sanger.ac.uk Thu Jan 25 10:47:18 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Thu, 25 Jan 2001 10:47:18 +0000 Subject: [Biojava-l] ANT & Message In-Reply-To: ; from jason@chg.mc.duke.edu on Wed, Jan 24, 2001 at 06:17:14PM -0500 References: Message-ID: <20010125104718.A15149@adnah.sanger.ac.uk> On Wed, Jan 24, 2001 at 06:17:14PM -0500, Jason Stajich wrote: > > 146 genemap ../bio/biojava/biojava-live> ant > Buildfile: build.xml > > BUILD FAILED > > Could not create task of type: copy because I can't find it in the list of > task class definitions > > Total time: 4 seconds What version of ANT are you using? The build.xml file is designed to work with ANT1.2 -- the available standard tasks do seem to change somewhat between versions. biojava.ant probably works with earlier versions. Thomas. From td2@sanger.ac.uk Thu Jan 25 10:49:11 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Thu, 25 Jan 2001 10:49:11 +0000 Subject: [Biojava-l] Pluggable-heuristics cache package. In-Reply-To: ; from Robin.Emig@maxygen.com on Wed, Jan 24, 2001 at 03:02:44PM -0800 References: Message-ID: <20010125104911.B15149@adnah.sanger.ac.uk> On Wed, Jan 24, 2001 at 03:02:44PM -0800, Emig, Robin wrote: > I think they may not have made it into the cvs, I keep getting > compile errors for this package I'm sure they're checked in. However, CVS has an annoying habit of not creating newly added directories when you do a CVS update. Try: cvs update -dP Let me know if there's still a problem with this. Thomas. From mrp@sanger.ac.uk Thu Jan 25 14:07:44 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Thu, 25 Jan 2001 14:07:44 +0000 Subject: [Biojava-l] (no subject) References: <00a101c08611$d783d0c0$171103c6@exceloncorp.com> Message-ID: <3A703330.9020508@sanger.ac.uk> Hi Martin, Martin Sterman wrote: > Hello, > > I am new to the BioJava list, so not sure what the current state > of microarray expression data is, but assuming there are possibilities > here, I have interest in contributing. The current state is that we have no BioJava code that deals with micr-arrays at all. I would be very keen to see some checked in. Neither Thomas nor I have enough hours in the day to work on this personaly, so I would be delighted for you to become actively involved in development. Come on - I know that there are more of you out there that do microarray stuff as bread-and-butter. Let's get the ball rolling. Matthew >> BioJava is doing a great job in representing and processing sequence data. >> How about microarray expression data? Is there anyone actively involved in >> this area? Who should I talk to for potential contribution in this >> sub-project? >> >> Thanks. >> >> Yihua Zhou, Ph.D. >> Sr. Bioinformatics Scientist >> Monsanto Company >> 314-694-5053 >> >> _______________________________________________ >> Biojava-l mailing list - Biojava-l@biojava.org >> http://biojava.org/mailman/listinfo/biojava-l >> > > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From mjones@mpi.com Thu Jan 25 16:50:23 2001 From: mjones@mpi.com (Mike Jones) Date: Thu, 25 Jan 2001 11:50:23 -0500 Subject: [Biojava-l] (no subject) References: <00a101c08611$d783d0c0$171103c6@exceloncorp.com> Message-ID: <3A70594F.D545FD5D@mpi.com> Someone should make a parser and possibly viewers/clustering tools using one of the XML gene expression standards. MGED preferably. Their are some Java clustering tools so maybe those could be ported. Martin Sterman wrote: > Hello, > > I am new to the BioJava list, so not sure what the current state > of microarray expression data is, but assuming there are possibilities > here, I have interest in contributing. > > A bit about myself, I have an MS in Biochemical Engineering and worked > several years for Genzyme Corp. I have since migrated toward > software development, finishing a Certificate in Computer Science > from U Mass (a compressed BS in Comp Sc) and am now working > for a software company called eXcelon Corp. > > I am particularly interested in utilizing XML data format and tools. > eXcelon makes a proprietary XML data server ("Portal Server") > but we adhere to all W3C standards. I may utilize our products > during development, but all code will adhere to vendor neutral > standards. > > Is there publically available data? What is the current format? > What is your thinking of the needs in this area? > > Martin Sterman > eXcelon Corp. > 781-674-5324 > > ----- Original Message ----- > From: "ZHOU, YIHUA [FND/1000]" > To: > Sent: Tuesday, January 23, 2001 10:02 AM > Subject: [Biojava-l] (no subject) > > > BioJava is doing a great job in representing and processing sequence data. > > How about microarray expression data? Is there anyone actively involved in > > this area? Who should I talk to for potential contribution in this > > sub-project? > > > > Thanks. > > > > Yihua Zhou, Ph.D. > > Sr. Bioinformatics Scientist > > Monsanto Company > > 314-694-5053 > > > > _______________________________________________ > > Biojava-l mailing list - Biojava-l@biojava.org > > http://biojava.org/mailman/listinfo/biojava-l > > > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From heuermh@shore.net Thu Jan 25 19:29:40 2001 From: heuermh@shore.net (Michael L. Heuer) Date: Thu, 25 Jan 2001 14:29:40 -0500 (EST) Subject: [Biojava-l] Re: problems with ANT In-Reply-To: <200101251701.f0PH1Up11952@pw600a.bioperl.org> Message-ID: > BUILD FAILED > > Could not create task of type: copy because I can't find it in the list of > task class definitions Apply the following diffs to biojava.ant (apologies if the line numbers don't exactly line up -- I build biojava as part of a larger project, with a larger build.xml file) > 72,77c70 < < < < < < --- > 80,85c73 < < < < < < --- > 88,93c76 < < < < < < michael From ling@ling.ipc.net Thu Jan 25 21:19:05 2001 From: ling@ling.ipc.net (Xuefeng Bruce Ling) Date: Thu, 25 Jan 2001 13:19:05 -0800 Subject: [Biojava-l] biojava-live build problems, please help Message-ID: <4.1.20010125131017.009e9c40@mail.ling.ipc.net> --=====================_19812548==_.ALT Content-Type: text/plain; charset="us-ascii" Hi, I am using the biojava-live. I did the cvs update -d before I run the "java build.Builder all" and I get a lot of error messages as following. I have put the root of the package in the CLASSPATH. Actually I have checked some of the mistakes. The problems come where the some of the files are missing: Can you help? BTW, the document at the website is not updated yet. Running complete build... Deleting old build tree... Compiling... Note: /bcreek7/ling/biojava-live/src/GNOME/_UnknownImplBase.java uses or overrides a deprecated API. Recompile with "-deprecation" for details. 1 warning Note: 8 files use or override a deprecated API. Recompile with "-deprecation" for details. 1 warning src/org/biojava/bio/seq/DNATools.java:248: Interface org.biojava.bio.seq.ReversibleTranslationTable of nested class org.biojava.bio.seq.DNATools. DNAComplementTranslationTable not found. implements ReversibleTranslationTable { ^ /bcreek7/ling/biojava-live/src/org/acedb/seq/AceSequence.java:148: Ambiguous class: org.biojava.bio.symbol.SymbolParser and org.biojava.bio.seq.io.SymbolParser SymbolParser rParser = getAlphabet().getParser("token"); ^ /bcreek7/ling/biojava-live/src/org/acedb/seq/AceSequence.java:226: Class org.acedb.seq.Edit not found. public void edit(Edit edit) throws ChangeVetoException { ^ src/org/biojava/bio/symbol/Alphabet.java:105: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet is an abstract class. It can't be instantiated. static final Alphabet EMPTY_ALPHABET = new EmptyAlphabet(); ^ src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class EmptyAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class EmptyAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class EmptyAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class EmptyAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/AlphabetManager.java:30: Package com.sun.xml.parser not found in import. import com.sun.xml.parser.*; ^ src/org/biojava/bio/symbol/AlphabetManager.java:31: Package com.sun.xml.tree not found in import. import com.sun.xml.tree.*; ^ src/org/biojava/bio/seq/DNATools.java:37: Class org.biojava.bio.seq.ReversibleTranslationTable not found. private static final ReversibleTranslationTable complementTable; ^ src/org/biojava/bio/seq/DNATools.java:70: Method getAmbiguity(java.util.Set) not found in interface org.biojava.bio.symbol.FiniteAlphabet. symbolToComplement.put(as, dna.getAmbiguity(l)); ^ src/org/biojava/bio/seq/DNATools.java:72: Class org.biojava.bio.seq.ReversibleTranslationTable not found in =. complementTable = new DNAComplementTranslationTable(); ^ src/org/biojava/bio/seq/DNATools.java:72: Incompatible type for =. Can't convert org.biojava.bio.seq.DNATools.DNAComplementTranslationTable to org.biojava.bio.seq.ReversibleTranslationTable. complementTable = new DNAComplementTranslationTable(); ^ src/org/biojava/bio/seq/DNATools.java:105: Ambiguous class: org.biojava.bio.seq.io.SymbolParser and org.biojava.bio.symbol.SymbolParser SymbolParser p = getDNA().getParser("token"); ^ src/org/biojava/bio/seq/DNATools.java:218: Undefined variable or class name: SymbolListViews return SymbolListViews.translate(list, complementTable()); ^ src/org/biojava/bio/seq/DNATools.java:230: Undefined variable or class name: SymbolListViews return SymbolListViews.translate(SymbolListViews.reverse(list), complementTable()); ^ src/org/biojava/bio/seq/DNATools.java:239: Class org.biojava.bio.seq.ReversibleTranslationTable not found. public static ReversibleTranslationTable complementTable() { ^ src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class WellKnownAlphabet ^ src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class WellKnownAlphabet ^ src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class WellKnownAlphabet ^ src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class WellKnownAlphabet ^ src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class WellKnownSymbol extends SimpleAtomicSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class WellKnownSymbol extends SimpleAtomicSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class WellKnownSymbol extends SimpleAtomicSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class WellKnownSymbol extends SimpleAtomicSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class GapSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class GapSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. private static class GapSymbol ^ src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. private static class GapSymbol ^ src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleAlphabet extends AbstractAlphabet implements Serializable { ^ src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleAlphabet extends AbstractAlphabet implements Serializable { ^ src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleAlphabet extends AbstractAlphabet implements Serializable { ^ src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleAlphabet extends AbstractAlphabet implements Serializable { ^ src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleAtomicSymbol implements AtomicSymbol { ^ src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleAtomicSymbol implements AtomicSymbol { ^ src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleAtomicSymbol implements AtomicSymbol { ^ src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleAtomicSymbol implements AtomicSymbol { ^ src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:36: class org.biojava.bio.symbol.SingletonAlphabet is an abstract class. It can't be instantiated. delegate = new SimpleSymbol(token, name, new SingletonAlphabet(this), annotation); ^ src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleSymbol implements Symbol, Serializable { ^ src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleSymbol implements Symbol, Serializable { ^ src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SimpleSymbol implements Symbol, Serializable { ^ src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SimpleSymbol implements Symbol, Serializable { ^ src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SingletonAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SingletonAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable. public class SingletonAlphabet implements FiniteAlphabet, Serializable { ^ src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable. public class SingletonAlphabet implements FiniteAlphabet, Serializable { ^ 47 errors --=====================_19812548==_.ALT Content-Type: text/html; charset="us-ascii" Hi,

I am using the biojava-live.  I did the cvs update -d before I run the "java build.Builder all" and I get a lot of error messages as following.
I have put the root of the package in the CLASSPATH.   Actually I have checked some of the mistakes.  The problems come where the some of the files are missing:

Can you help?   BTW, the document at the website is not updated yet.

Running complete build...
Deleting old build tree...
Compiling...
Note: /bcreek7/ling/biojava-live/src/GNOME/_UnknownImplBase.java uses or overrides a deprecated API.  Recompile with "-deprecation" for details.
1 warning
Note: 8 files use or override a deprecated API.  Recompile with "-deprecation" for details.
1 warning
src/org/biojava/bio/seq/DNATools.java:248: Interface org.biojava.bio.seq.ReversibleTranslationTable of nested class org.biojava.bio.seq.DNATools. DNAComplementTranslationTable not found.
  implements ReversibleTranslationTable {
             ^
/bcreek7/ling/biojava-live/src/org/acedb/seq/AceSequence.java:148: Ambiguous class: org.biojava.bio.symbol.SymbolParser and org.biojava.bio.seq.io.SymbolParser
      SymbolParser rParser = getAlphabet().getParser("token");
      ^
/bcreek7/ling/biojava-live/src/org/acedb/seq/AceSequence.java:226: Class org.acedb.seq.Edit not found.
  public void edit(Edit edit) throws ChangeVetoException {
              ^
src/org/biojava/bio/symbol/Alphabet.java:105: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet is an abstract class. It can't be instantiated.
  static final Alphabet EMPTY_ALPHABET = new EmptyAlphabet();
                                         ^
src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
  public class EmptyAlphabet implements FiniteAlphabet, Serializable {
               ^
src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
  public class EmptyAlphabet implements FiniteAlphabet, Serializable {
               ^
src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
  public class EmptyAlphabet implements FiniteAlphabet, Serializable {
               ^
src/org/biojava/bio/symbol/Alphabet.java:110: nested class org.biojava.bio.symbol.Alphabet. EmptyAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
  public class EmptyAlphabet implements FiniteAlphabet, Serializable {
               ^
src/org/biojava/bio/symbol/AlphabetManager.java:30: Package com.sun.xml.parser not found in import.
import com.sun.xml.parser.*;
       ^
src/org/biojava/bio/symbol/AlphabetManager.java:31: Package com.sun.xml.tree not found in import.
import com.sun.xml.tree.*;
       ^
src/org/biojava/bio/seq/DNATools.java:37: Class org.biojava.bio.seq.ReversibleTranslationTable not found.
  private static final ReversibleTranslationTable complementTable;
                                                                 ^
src/org/biojava/bio/seq/DNATools.java:70: Method getAmbiguity(java.util.Set) not found in interface org.biojava.bio.symbol.FiniteAlphabet.
        symbolToComplement.put(as, dna.getAmbiguity(l));
                                                   ^
src/org/biojava/bio/seq/DNATools.java:72: Class org.biojava.bio.seq.ReversibleTranslationTable not found in =.
      complementTable = new DNAComplementTranslationTable();
                      ^
src/org/biojava/bio/seq/DNATools.java:72: Incompatible type for =. Can't convert org.biojava.bio.seq.DNATools.DNAComplementTranslationTable to org.biojava.bio.seq.ReversibleTranslationTable.
      complementTable = new DNAComplementTranslationTable();
                      ^
src/org/biojava/bio/seq/DNATools.java:105: Ambiguous class: org.biojava.bio.seq.io.SymbolParser and org.biojava.bio.symbol.SymbolParser
      SymbolParser p = getDNA().getParser("token");
      ^
src/org/biojava/bio/seq/DNATools.java:218: Undefined variable or class name: SymbolListViews
    return SymbolListViews.translate(list, complementTable());
           ^
src/org/biojava/bio/seq/DNATools.java:230: Undefined variable or class name: SymbolListViews
    return SymbolListViews.translate(SymbolListViews.reverse(list), complementTable());
           ^
src/org/biojava/bio/seq/DNATools.java:239: Class org.biojava.bio.seq.ReversibleTranslationTable not found.
  public static ReversibleTranslationTable complementTable() {
                                           ^
src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
    private static class WellKnownAlphabet
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
    private static class WellKnownAlphabet
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
    private static class WellKnownAlphabet
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:580: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
    private static class WellKnownAlphabet
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
    private static class WellKnownSymbol extends SimpleAtomicSymbol
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
    private static class WellKnownSymbol extends SimpleAtomicSymbol
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
    private static class WellKnownSymbol extends SimpleAtomicSymbol
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:617: nested class org.biojava.bio.symbol.AlphabetManager. WellKnownSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
    private static class WellKnownSymbol extends SimpleAtomicSymbol
                         ^
src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
  private static class GapSymbol
                       ^
src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
  private static class GapSymbol
                       ^
src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
  private static class GapSymbol
                       ^
src/org/biojava/bio/symbol/AlphabetManager.java:728: nested class org.biojava.bio.symbol.AlphabetManager. GapSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
  private static class GapSymbol
                       ^
src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleAlphabet extends AbstractAlphabet implements Serializable {
             ^
src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleAlphabet extends AbstractAlphabet implements Serializable {
             ^
src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleAlphabet extends AbstractAlphabet implements Serializable {
             ^
src/org/biojava/bio/symbol/SimpleAlphabet.java:35: class org.biojava.bio.symbol.SimpleAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleAlphabet extends AbstractAlphabet implements Serializable {
             ^
src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleAtomicSymbol implements AtomicSymbol {
             ^
src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleAtomicSymbol implements AtomicSymbol {
             ^
src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleAtomicSymbol implements AtomicSymbol {
             ^
src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:32: class org.biojava.bio.symbol.SimpleAtomicSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleAtomicSymbol implements AtomicSymbol {
             ^
src/org/biojava/bio/symbol/SimpleAtomicSymbol.java:36: class org.biojava.bio.symbol.SingletonAlphabet is an abstract class. It can't be instantiated.
    delegate = new SimpleSymbol(token, name, new SingletonAlphabet(this), annotation);
                                             ^
src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleSymbol implements Symbol, Serializable {
             ^
src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleSymbol implements Symbol, Serializable {
             ^
src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SimpleSymbol implements Symbol, Serializable {
             ^
src/org/biojava/bio/symbol/SimpleSymbol.java:34: class org.biojava.bio.symbol.SimpleSymbol must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SimpleSymbol implements Symbol, Serializable {
             ^
src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SingletonAlphabet implements FiniteAlphabet, Serializable {
             ^
src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void removeChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SingletonAlphabet implements FiniteAlphabet, Serializable {
             ^
src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener) from interface org.biojava.utils.Changeable.
public class SingletonAlphabet implements FiniteAlphabet, Serializable {
             ^
src/org/biojava/bio/symbol/SingletonAlphabet.java:35: class org.biojava.bio.symbol.SingletonAlphabet must be declared abstract. It does not define void addChangeListener(org.biojava.utils.ChangeListener, org.biojava.utils.ChangeType) from interface org.biojava.utils.Changeable.
public class SingletonAlphabet implements FiniteAlphabet, Serializable {
             ^
47 errors

  --=====================_19812548==_.ALT-- From Robin.Emig@maxygen.com Thu Jan 25 23:09:12 2001 From: Robin.Emig@maxygen.com (Emig, Robin) Date: Thu, 25 Jan 2001 15:09:12 -0800 Subject: [Biojava-l] ANT & Message Fix Message-ID: ahhh this was the problem. I did not have that directory so the compilation was not working. Sorry, I'm a cvs newbie. Also you need to set JAVA_HOME to a java 1.2.2 jdk -Robin -----Original Message----- From: Keith James [mailto:kdj@sanger.ac.uk] Sent: Thursday, January 25, 2001 1:29 AM To: Emig, Robin Cc: biojava-l@biojava.org Subject: Re: [Biojava-l] ANT & Message >>>>> "Robin" == Emig, Robin writes: Robin> Anyone having problems with ant. It compiles things I Robin> think, but then fails on the build with "Message should Robin> have been provided". Also, it cannnot compile two of the Robin> files(DASSequenceDB) because it can't import Robin> org.biojava.utils.cache. The import should be fixable by doing 'cvs update -d' as it's in a new directory. I know nothing about ant, though. -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From ling@ling.ipc.net Thu Jan 25 23:57:55 2001 From: ling@ling.ipc.net (Xuefeng Bruce Ling) Date: Thu, 25 Jan 2001 15:57:55 -0800 Subject: [Biojava-l] biojava demo code Message-ID: <4.1.20010125154926.00a09120@mail.ling.ipc.net> --=====================_29342512==_.ALT Content-Type: text/plain; charset="us-ascii" Hi, Initially I tried to use CVS and biojava-live to build according to the README, it just did not work. See in my previous email. I poked around the biojava FTP site and I found that they have jan 12 and 19 jar file and the source code of jan 19. It turns out that the jan 19 code is with biojava-live directory. Personally I think that is not good software release style. If you want to release the jar file at certain release, then the code has to be in sync with that. Another thing is that for the software release, can you put the win zip version there as well? Not everyone programs on unix especially for JAVA. I tried that and to my disappointment, some of the demon code works and some cannot even be compiled. These are the errors when I tried to compile the code under demos/seq. Some of the domon code works under that directory and the ones show below doesn't work. See the following errors coming: javac *java count = 0, total = 25 count = 0, total = 25 SimpleAssemblyTest.java:19: Class seq.SimpleSequence not found. Sequence seq1 = new SimpleSequence(dna1, "seq1", "seq1", ^ SimpleAssemblyTest.java:23: Class seq.SimpleSequence not found. Sequence seq2 = new SimpleSequence(dna2, "seq2", "seq2", ^ TestGenbank.java:18: Incompatible type for declaration. Explicit cast needed to convert org.biojava.bio.seq.io.GenbankFormat to org.biojava.bio.seq.io.SequenceFormat. SequenceFormat gFormat = new GenbankFormat(); ^ TestGenbank.java:21: Class seq.SimpleSequenceFactory not found. SequenceFactory sFact = new SimpleSequenceFactory(); ^ TestGenbank.java:25: Incompatible type for constructor. Explicit cast needed to convert org.biojava.bio.seq.SequenceFactory to org.biojava.bio.seq.io.SequenceBuilderFactory. new StreamReader(gReader, gFormat, rParser, sFact); ^ TestTranslation.java:11: Can't access class org.biojava.bio.symbol.ReverseSymbolList. Class or interface must be public, in same package, or an accessible member class. SymbolList rev = new ReverseSymbolList(randomSeq); ^ TestTranslation.java:13: Can't access class org.biojava.bio.symbol.WindowedSymbolList. Class or interface must be public, in same package, or an accessible member class. SymbolList codons = new WindowedSymbolList(revComp, 3); ^ TestTranslation.java:14: Can't access class org.biojava.bio.symbol.TranslatedSymbolList. Class or interface must be public, in same package, or an accessible member class. SymbolList translation = new TranslatedSymbolList( ^ TestTranslation.java:16: Undefined variable or class name: GeneticCode GeneticCode.UNIVERSAL ^ 9 errors --=====================_29342512==_.ALT Content-Type: text/html; charset="us-ascii" Hi,

Initially I tried to use CVS and biojava-live to build according to the README, it just did not work.  See in my previous email.

I poked around the biojava FTP site and I found that they have jan 12 and 19 jar file and the source code of jan 19. It turns out that the jan 19 code is with biojava-live directory.  Personally I think that is not good software release style.  If you want to release the jar file at certain release, then the code has to be in sync with that.  Another thing is that for the software release, can you put the win zip version there as well?  Not everyone programs on unix especially for JAVA.

I tried that and to my disappointment, some of the demon code works and some cannot even be compiled.  These are the errors when I tried to compile the code under demos/seq.  Some of the domon code works under that directory and the ones show below doesn't work.

See the following errors coming:

javac *java
count = 0, total = 25
count = 0, total = 25
SimpleAssemblyTest.java:19: Class seq.SimpleSequence not found.
        Sequence seq1 = new SimpleSequence(dna1, "seq1", "seq1",
                            ^
SimpleAssemblyTest.java:23: Class seq.SimpleSequence not found.
        Sequence seq2 = new SimpleSequence(dna2, "seq2", "seq2",
                            ^
TestGenbank.java:18: Incompatible type for declaration. Explicit cast needed to convert org.biojava.bio.seq.io.GenbankFormat to org.biojava.bio.seq.io.SequenceFormat.
      SequenceFormat gFormat = new GenbankFormat();
                     ^
TestGenbank.java:21: Class seq.SimpleSequenceFactory not found.
      SequenceFactory sFact = new SimpleSequenceFactory();
                                  ^
TestGenbank.java:25: Incompatible type for constructor. Explicit cast needed to convert org.biojava.bio.seq.SequenceFactory to org.biojava.bio.seq.io.SequenceBuilderFactory.
        new StreamReader(gReader, gFormat, rParser, sFact);
                                                    ^
TestTranslation.java:11: Can't access class org.biojava.bio.symbol.ReverseSymbolList. Class or interface must be public, in same package, or an accessible member class.
      SymbolList rev = new ReverseSymbolList(randomSeq);
                           ^
TestTranslation.java:13: Can't access class org.biojava.bio.symbol.WindowedSymbolList. Class or interface must be public, in same package, or an accessible member class.
      SymbolList codons = new WindowedSymbolList(revComp, 3);
                              ^
TestTranslation.java:14: Can't access class org.biojava.bio.symbol.TranslatedSymbolList. Class or interface must be public, in same package, or an accessible member class.
      SymbolList translation = new TranslatedSymbolList(
                                   ^
TestTranslation.java:16: Undefined variable or class name: GeneticCode
        GeneticCode.UNIVERSAL
        ^
9 errors

--=====================_29342512==_.ALT-- From nick@mg2.org Fri Jan 26 01:30:53 2001 From: nick@mg2.org (Nick Heudecker) Date: Thu, 25 Jan 2001 20:30:53 -0500 (EST) Subject: [Biojava-l] Question About BioJava Message-ID: Hi, I've noticed that the BioJava news hasn't been updated since August 2000. Is this project still being maintained? If so, I have some questions: -) Where do you see BioJava heading in the next 12/18 months? -) How has the bioinformatics community reacted to the BioJava project? -) How can I contribute? I'm a pretty good developer and I'd like to get involved. I'm interested in doing GUI and 3D development. Thanks for your time and consideration. Regards, Nick Heudecker From mark_s@sanger.otago.ac.nz Fri Jan 26 02:44:24 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Fri, 26 Jan 2001 15:44:24 +1300 (NZDT) Subject: [Biojava-l] circular sequences Message-ID: Hi, I am working on something that requires a circular seqeunce implementation, Has this been done?? If not I think I could probably subclass SimpleSequence and redefine the SubList and SubStr methods. Would others find this useful?? Is there a better way of doing this?? Mark ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From simon.brocklehurst@CambridgeAntibody.com Fri Jan 26 11:48:03 2001 From: simon.brocklehurst@CambridgeAntibody.com (Simon Brocklehurst) Date: Fri, 26 Jan 2001 11:48:03 +0000 Subject: [Biojava-l] Question About BioJava References: Message-ID: <3A7163F3.D838A754@CambridgeAntibody.com> Nick Heudecker wrote: > Hi, > > I've noticed that the BioJava news hasn't been updated since August > 2000. Is this project still being maintained? Yes. There is plenty of active development going on - I would suggest reading the mailing list archives, or subscribe to the biojava mailing list. > If so, I have some > questions: > > -) Where do you see BioJava heading in the next 12/18 months? The current BioJava is somewhat nucleotide/amino acid sequence-centric. In 12-18 months, there will be significant functionality in other Informatics-related areas. One example of a new area for BioJava in the next 12-18 months, is that we (CAT) are preparing to submit a bunch of code relating to dealing with three-dimensional macromolecular structures. There is also some current discussion on the mailing list about contribution of code relating to microarray expression profiling. > -) How has the bioinformatics community reacted to the BioJava project? There is significant interest - I should be surprised if many people in the Bioinformatics community who have done anything vaguely serious with Java aren't aware of the project. > -) How can I contribute? I'm a pretty good developer and I'd like to get > involved. I'm interested in doing GUI and 3D development. Maybe a good place to start the discussion about ways to contribute would be if you let people know a bit about your background. For example, level of knowledge of biology, chemistry, physics. When you say 3-D development, do you mean 3-D graphics? Do you have any particular skills in this area e.g. expert at 3-D graphics in general, expert with the Java 3D API? Simon -- Simon M. Brocklehurst, Ph.D. Head of Bioinformatics & Advanced IS Cambridge Antibody Technology The Science Park, Melbourn, Cambridgeshire, UK http://www.CambridgeAntibody.com/ mailto:simon.brocklehurst@CambridgeAntibody.com From td2@sanger.ac.uk Fri Jan 26 11:21:25 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 11:21:25 +0000 Subject: [Biojava-l] Question About BioJava In-Reply-To: ; from nick@mg2.org on Thu, Jan 25, 2001 at 08:30:53PM -0500 References: Message-ID: <20010126112125.A20880@jabba.sanger.ac.uk> On Thu, Jan 25, 2001 at 08:30:53PM -0500, Nick Heudecker wrote: > Hi, > > I've noticed that the BioJava news hasn't been updated since August > 2000. Is this project still being maintained? If so, I have some > questions: Absolutely. Sorry if the news section's a bit old. There's been lots of development in the CVS repository since the 1.0x releases. For instance: - More recognition of mutability in the core interfaces, and pervasive use of a simple event model for change notification/vetoing - New sequence I/O framework - Parsers for blast and fasta output, and PDB files - Client for the DAS protocol (still developing, but usable) - Enhanced dynamic programming toolkit. - And lots lots more (apologies if I've left out someone's favourite feature). > -) Where do you see BioJava heading in the next 12/18 months? Well, in the next few weeks our priority is to have a final test cycle on the current CVS code, and make a 1.1 release (and update the news section of the website ;). Beyond that, it depends what individual developers want to work on. I'm keen to see pervasive use of some form of naming and directory interface in the next release. I'd guess that we're also going to see a lot more work related to storing sequences in big databases -- purely as a consequence of the amount of data now available. Another area where there's plenty of room for biojava to expand is proteomics and 3D structure. > -) How has the bioinformatics community reacted to the BioJava project? That's hard to answer really but: - Looking at the mailing list archives, we've seen a steady growth in traffic. The number of contributers is also increasing. - We've also been seeing a steady interest in requests to the web site: http://www.biojava.org/stats/www2001/index.html I guess we'd better update it a bit... > -) How can I contribute? I'm a pretty good developer and I'd like to get > involved. I'm interested in doing GUI and 3D development. Check out the latests CVS version and experiment. We're happy to accept contributions of code relating to almost any biocomputing activity. In GUI terms: - We have a (really experimental) start of a sequence viewing GUI in the org.biojava.bio.gui.sequence package. It would be good to see some more development on that. - Right now we don't have an object model for storing 3D structure data. But, of course, it would be good to have one. If you're interested in working on any piece of code, just mail the list and see what people think. If you've got code ready to check in, Matthew Pocock (mrp@sanger.ac.uk) is the person to talk to about read-write access to the CVS repository. Let me know if you've got any more questions, Thomas. From td2@sanger.ac.uk Fri Jan 26 11:24:30 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 11:24:30 +0000 Subject: [Biojava-l] biojava-live build problems, please help In-Reply-To: <4.1.20010125131017.009e9c40@mail.ling.ipc.net>; from ling@ling.ipc.net on Thu, Jan 25, 2001 at 01:19:05PM -0800 References: <4.1.20010125131017.009e9c40@mail.ling.ipc.net> Message-ID: <20010126112430.B20880@jabba.sanger.ac.uk> On Thu, Jan 25, 2001 at 01:19:05PM -0800, Xuefeng Bruce Ling wrote: > Hi, > > I am using the biojava-live. I did the cvs update -d before I run the "java > build.Builder all" and I get a lot of error messages as following. > I have put the root of the package in the CLASSPATH. Actually I have checked > some of the mistakes. The problems come where the some of the files are > missing: This sounds really strange. Could you let me know: - What platform you're running on - Which java implementation and compiler. - What version of CVS you're using. Have you tried making a completely fresh checkout, using the instructions on http://cvs.biojava.org/ ? Thanks, Thomas. From td2@sanger.ac.uk Fri Jan 26 11:47:12 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 11:47:12 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Fri, Jan 26, 2001 at 03:44:24PM +1300 References: Message-ID: <20010126114712.D20880@jabba.sanger.ac.uk> On Fri, Jan 26, 2001 at 03:44:24PM +1300, Mark Schreiber wrote: > Hi, > > I am working on something that requires a circular seqeunce > implementation, Has this been done?? > > If not I think I could probably subclass SimpleSequence and redefine the > SubList and SubStr methods. Would others find this useful?? Well, there's no problem doing a CircularSymbolList which overrides subList and subStr (I'd be tempted to write a class which gives a circularized view onto any underlying SymbolList, rather than subclassing a specific implementation). Point to debate: should symbolAt(1001) for a 1000-symbol circular sequence return the value of symbolAt(1), or is this an error? Circular Sequence objects are slightly more of a pain, since I might want a Feature running from, say, 900 - 100. Not sure what the best way to handle this is -- it's not a case recognized by out current Location objects. I'm not sure what the best way round this would be... Thomas. From mrp@sanger.ac.uk Fri Jan 26 12:05:58 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Fri, 26 Jan 2001 12:05:58 +0000 Subject: [Biojava-l] circular sequences References: <20010126114712.D20880@jabba.sanger.ac.uk> Message-ID: <3A716826.6000807@sanger.ac.uk> Thomas Down wrote: > On Fri, Jan 26, 2001 at 03:44:24PM +1300, Mark Schreiber wrote: > >> Hi, >> >> I am working on something that requires a circular seqeunce >> implementation, Has this been done?? >> >> If not I think I could probably subclass SimpleSequence and redefine the >> SubList and SubStr methods. Would others find this useful?? > > > Well, there's no problem doing a CircularSymbolList which overrides > subList and subStr (I'd be tempted to write a class which gives > a circularized view onto any underlying SymbolList, rather than > subclassing a specific implementation). Point to debate: should > symbolAt(1001) for a 1000-symbol circular sequence return the > value of symbolAt(1), or is this an error? > > Circular Sequence objects are slightly more of a pain, since I > might want a Feature running from, say, 900 - 100. Not sure > what the best way to handle this is -- it's not a case recognized > by out current Location objects. > The circular-view option gets my vote. I think it is prety much as simple as saying ((indx-1) % length) + 1 in apropreate places. Could we make the circular view a Sequence implementor, and leave all SybmolLists linear? We can automagicaly handle the Location issue during the process of instantiating a Feature.Template as a Feature instance. I think the Location objects will need wrapping in a CircularLocation object that knows the sequence length, and makes the wrapped location appear to repeat for ever - e.g. If we have a Range 20..30 and a sequence length 100 then CircularLocation wraps this and makes it behave as if it contains 20+n100..30+n100 (n is any integer, positive or negative). Anybody keen to write this code? > I'm not sure what the best way round this would be... > > Thomas. > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From td2@sanger.ac.uk Fri Jan 26 16:17:55 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 16:17:55 +0000 Subject: [Biojava-l] New snapshot release (dated 20010126) Message-ID: <20010126161755.I20880@jabba.sanger.ac.uk> Hi.. I've just created a new snapshot release for people to try. This includes Keith James' new FASTA parsing code, and an improved DAS client. There are also a number of improvements and bug fixes -- even the demos all seem to compile now (wheee!) As with other recent snapshots, if you are just downloading the binary (biojava.jar), you will also need to grab xerces.jar (for XML parsing), and bytecode.jar (for dynamically generated classes, used deep in the guts of BioJava). You can get all of this from: http://biojava.org/download/ There's a special significance to this release since, as I proposed a few days ago, I'm about to move the ACeDB and BioCorba support into separate CVS modules. I'm just repackaging these at the moment, and they're likely to be removed from the biojava-live module within the next few hours. I'll post another announcement when this is complete. Thomas. From msterman@exceloncorp.com Fri Jan 26 17:35:23 2001 From: msterman@exceloncorp.com (Martin Sterman) Date: Fri, 26 Jan 2001 12:35:23 -0500 Subject: [Biojava-l] microarray expression data References: <00a101c08611$d783d0c0$171103c6@exceloncorp.com> <3A70594F.D545FD5D@mpi.com> Message-ID: <028b01c087be$5dcee4f0$171103c6@exceloncorp.com> We have no code, but we now have an email subject! Thank you for the suggestion Mike. I have not seen your name on this list before. Brief intro? I am not sure how much time I will have to devote to this, but if I were to create a plan, it would be useful to know whether expression development priorities that parallel the original sequence priorities would make sense. Martin Sterman ----- Original Message ----- From: "Mike Jones" To: "Martin Sterman" Cc: "ZHOU, YIHUA [FND/1000]" ; ; Sent: Thursday, January 25, 2001 11:50 AM Subject: Re: [Biojava-l] (no subject) > Someone should make a parser and possibly viewers/clustering tools > using one of the XML gene expression standards. MGED preferably. > Their are some Java clustering tools so maybe those could be ported. > > Martin Sterman wrote: > > > Hello, > > > > I am new to the BioJava list, so not sure what the current state > > of microarray expression data is, but assuming there are possibilities > > here, I have interest in contributing. > > > > A bit about myself, I have an MS in Biochemical Engineering and worked > > several years for Genzyme Corp. I have since migrated toward > > software development, finishing a Certificate in Computer Science > > from U Mass (a compressed BS in Comp Sc) and am now working > > for a software company called eXcelon Corp. > > > > I am particularly interested in utilizing XML data format and tools. > > eXcelon makes a proprietary XML data server ("Portal Server") > > but we adhere to all W3C standards. I may utilize our products > > during development, but all code will adhere to vendor neutral > > standards. > > > > Is there publically available data? What is the current format? > > What is your thinking of the needs in this area? > > > > Martin Sterman > > eXcelon Corp. > > 781-674-5324 > > > > ----- Original Message ----- > > From: "ZHOU, YIHUA [FND/1000]" > > To: > > Sent: Tuesday, January 23, 2001 10:02 AM > > Subject: [Biojava-l] (no subject) > > > > > BioJava is doing a great job in representing and processing sequence data. > > > How about microarray expression data? Is there anyone actively involved in > > > this area? Who should I talk to for potential contribution in this > > > sub-project? > > > > > > Thanks. > > > > > > Yihua Zhou, Ph.D. > > > Sr. Bioinformatics Scientist > > > Monsanto Company > > > 314-694-5053 > > > > > > _______________________________________________ > > > Biojava-l mailing list - Biojava-l@biojava.org > > > http://biojava.org/mailman/listinfo/biojava-l > > > > > > > _______________________________________________ > > Biojava-l mailing list - Biojava-l@biojava.org > > http://biojava.org/mailman/listinfo/biojava-l > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > From Robin.Emig@maxygen.com Fri Jan 26 17:35:30 2001 From: Robin.Emig@maxygen.com (Emig, Robin) Date: Fri, 26 Jan 2001 09:35:30 -0800 Subject: [Biojava-l] circular sequences Message-ID: > > Circular Sequence objects are slightly more of a pain, since I > might want a Feature running from, say, 900 - 100. Not sure > what the best way to handle this is -- it's not a case recognized > by out current Location objects. > Maybe we should have a direction value for a feature? From td2@sanger.ac.uk Fri Jan 26 17:49:15 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 17:49:15 +0000 Subject: [Biojava-l] Package moves are done. Message-ID: <20010126174915.K20880@jabba.sanger.ac.uk> Hi... I've just finished moving the CORBA and ACeDB support into their own CVS modules. The next time you do a `cvs update' on biojava-live, the following packages will be removed GNOME org.Biocorba.SeqCore org.biojava.bridge.GNOME org.biojava.bridge.Biocorba.SeqCore (and also the top level idl/ directory) These can now be found in the module biojava-corba. org.acedb org.acedb.seq org.acedb.socket org.acedb.staticobj (and the demos/acedb directory). These can now be found in the module biojava-acedb Next time you do a `cvs update', please use to options -dP to ensure that all the old directories get correctly removed, otherwise build tools might get confused. (Users with full CVS access will see these changes immediately. If you use anonymous CVS, you may need to wait an hour or two for the servers to sync up). Both the new packages are supplied with ANT 1.2 build scripts (build.xml), but /not/ the old biojava build tool. To build them, you should just be able to: cvs -d "" checkout biojava-(corba|acedb) ant ant javadocs Let me know if this causes any trouble, Thomas. From td2@sanger.ac.uk Fri Jan 26 18:07:43 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Fri, 26 Jan 2001 18:07:43 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from Robin.Emig@maxygen.com on Fri, Jan 26, 2001 at 09:35:30AM -0800 References: Message-ID: <20010126180743.L20880@jabba.sanger.ac.uk> On Fri, Jan 26, 2001 at 09:35:30AM -0800, Emig, Robin wrote: > > > Circular Sequence objects are slightly more of a pain, since I > > might want a Feature running from, say, 900 - 100. Not sure > > what the best way to handle this is -- it's not a case recognized > > by out current Location objects. > > > Maybe we should have a direction value for a feature? We already have directional features (well, StrandedFeature). The problem is that, right now, our locations can only cope with cases like 100-900 (which has the same meaning on both linear and circular sequences). On a circular sequence, 900-100 (spanning the `join' in the circle) has a completely different meaning. Matthew has suggested a scheme of special CircularLocations which should solve this problem. The only slight inelegance is that CircularLocations will need to know about the length of sequence they are referring to, while all the current Location implementations are context-independant. This is probably the way to go, though... Thomas. From madavh00" I am trying to use the biojava packages within a servlet. And when I try from code from EmblToGffFasta.java from within the servlet I get the following error java.lang.ClassCastException rethrown as org.biojava.bio.BioError: Unable to initialize AlphabetManager at org.biojava.bio.symbol.AlphabetManager The lines of code follow Alphabet alpha = DNATools.getDNA(); SymbolParser rParser = alpha.getParser("token"); Can you help me resolve this. I am using Biojava 1.01 Java SDK v 1.2.2 Thanks Hannah The opinions expressed in this communication are my own, and do not necessarily reflect those of my employer. From td2@sanger.ac.uk Sat Jan 27 16:05:26 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sat, 27 Jan 2001 16:05:26 +0000 Subject: [Biojava-l] A newbie question In-Reply-To: <000501c087d1$7f280e20$5155888b@um.us.sbphrd.com>; from Hannah_M_Madavaram@sbphrd.com on Fri, Jan 26, 2001 at 02:52:19PM -0500 References: <000501c087d1$7f280e20$5155888b@um.us.sbphrd.com> Message-ID: <20010127160523.A32079@adnah.sanger.ac.uk> On Fri, Jan 26, 2001 at 02:52:19PM -0500, madavh00 wrote: > I am trying to use the biojava packages within a servlet. And when I try > from code from EmblToGffFasta.java from within the servlet I get the > following error > > java.lang.ClassCastException > rethrown as org.biojava.bio.BioError: Unable to initialize AlphabetManager > at org.biojava.bio.symbol.AlphabetManager > > The lines of code follow > Alphabet alpha = DNATools.getDNA(); > SymbolParser rParser = alpha.getParser("token"); > > Can you help me resolve this. I am using Biojava 1.01 Java SDK v 1.2.2 It's hard to be sure what's going wrong without a little more implementation. What platform were you running on? What servlet container? Did you get a full stack trace when the exception occured? My best guess (without a bit more information it has to be a guess), is that you've hit an issue with the AlphabetManager initialization code which makes it rather fussy about the exact behaviour of the XML parser and DOM implementation in use. My suspicion is that your servrlet container is supplying a DOM implmentation which differs from the `xml.jar' file supplied with BioJava, and this is triggering your problems. I fixed a problem of this kind early on in the BioJava 1.1 development cycle. As an experiment, I've backported this fix to the 1.0 branch. Could you try downloading: http://biojava.org/thomasd/biojava-1.0-xmlpatch.jar This should work as a drop-in replacement for biojava-1.01. Let me know if this helps... Thomas. From mark_s@sanger.otago.ac.nz Sun Jan 28 08:40:54 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Sun, 28 Jan 2001 21:40:54 +1300 (NZDT) Subject: [Biojava-l] circular sequences In-Reply-To: <20010126114712.D20880@jabba.sanger.ac.uk> Message-ID: On Fri, 26 Jan 2001, Thomas Down wrote: > > Well, there's no problem doing a CircularSymbolList which overrides > subList and subStr (I'd be tempted to write a class which gives > a circularized view onto any underlying SymbolList, rather than > subclassing a specific implementation). Point to debate: should > symbolAt(1001) for a 1000-symbol circular sequence return the > value of symbolAt(1), or is this an error? > It depends. In some ways it would be nice if iterators etc could just carry on around the sequence although at some point it would get a bit stupid unless a signal is given to signify the end. Might just be best to throw an exception and let the implementing program decide what to do about it. On the other hand you could probably use the standard symbol list in this way. 6 of one .... My gut feeling is that we should allow indexing of residues greater than the length of the sequence and if need be less than one. Zero in this instance should be an invalid argument. > Circular Sequence objects are slightly more of a pain, since I > might want a Feature running from, say, 900 - 100. Not sure > what the best way to handle this is -- it's not a case recognized > by out current Location objects. > Maybe make a subclass of stranded feature since only DNA can be circular, can anyone see a reason why not. Mark ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From mark_s@sanger.otago.ac.nz Sun Jan 28 08:58:08 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Sun, 28 Jan 2001 21:58:08 +1300 (NZDT) Subject: [Biojava-l] circular sequences In-Reply-To: <3A716826.6000807@sanger.ac.uk> Message-ID: On Fri, 26 Jan 2001, Matthew Pocock wrote: > > The circular-view option gets my vote. I think it is prety much as > simple as saying ((indx-1) % length) + 1 in apropreate places. Could we > make the circular view a Sequence implementor, and leave all SybmolLists > linear? We can automagicaly handle the Location issue during the process > of instantiating a Feature.Template as a Feature instance. I think the > Location objects will need wrapping in a CircularLocation object that > knows the sequence length, and makes the wrapped location appear to > repeat for ever - e.g. If we have a Range 20..30 and a sequence length > 100 then CircularLocation wraps this and makes it behave as if it > contains 20+n100..30+n100 (n is any integer, positive or negative). > > Anybody keen to write this code? I don't mind giving it a go, I'm pretty new to biojava but keen to contribute. I think a will go for the circular veiw approach. Again the circularlocation wrapper is probably a good idea. I think it should be a wrapper on a StrandedFeature object as only DNA can be circular and 900..115 in the direct orientation is different to 900..115 in the reverse orientation. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From td2@sanger.ac.uk Sun Jan 28 12:19:02 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sun, 28 Jan 2001 12:19:02 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Sun, Jan 28, 2001 at 09:40:54PM +1300 References: <20010126114712.D20880@jabba.sanger.ac.uk> Message-ID: <20010128121901.B2068@adnah.sanger.ac.uk> On Sun, Jan 28, 2001 at 09:40:54PM +1300, Mark Schreiber wrote: > On Fri, 26 Jan 2001, Thomas Down wrote: > > > > > Well, there's no problem doing a CircularSymbolList which overrides > > subList and subStr (I'd be tempted to write a class which gives > > a circularized view onto any underlying SymbolList, rather than > > subclassing a specific implementation). Point to debate: should > > symbolAt(1001) for a 1000-symbol circular sequence return the > > value of symbolAt(1), or is this an error? > > > > It depends. In some ways it would be nice if iterators etc could just > carry on around the sequence although at some point it would get a bit > stupid unless a signal is given to signify the end. Might just be best to > throw an exception and let the implementing program decide what to do > about it. On the other hand you could probably use the standard symbol > list in this way. 6 of one .... > > My gut feeling is that we should allow indexing of residues greater than > the length of the sequence and if need be less than one. Zero in this > instance should be an invalid argument. Yeah, that sounds about right. /me still wishes sequences were indexed from zero though (the one thing I still miss from my pre-biojava sequence library). > > Circular Sequence objects are slightly more of a pain, since I > > might want a Feature running from, say, 900 - 100. Not sure > > what the best way to handle this is -- it's not a case recognized > > by out current Location objects. > > Maybe make a subclass of stranded feature since only DNA can be circular, > can anyone see a reason why not. Circularity is an issue that's orthogonal to the current system of feature types. Certainly, there's nothing to say that all features on DNA are StrandedFeatures (a CpG island, for instance, is fairly clearly not stranded, at least in an idealized world). Also, we'll probably want to use all the other feature types on circular sequences (Exon, Transcript, whatever). My vote goes for Matthew's solution of having CircularLocations, and keeping the circularity issue out of the feature system itself. It's not a 100% clean solution, but I think it should work out okay. Thomas. From td2@sanger.ac.uk Sun Jan 28 12:28:45 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sun, 28 Jan 2001 12:28:45 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Sun, Jan 28, 2001 at 09:58:08PM +1300 References: <3A716826.6000807@sanger.ac.uk> Message-ID: <20010128122845.C2068@adnah.sanger.ac.uk> On Sun, Jan 28, 2001 at 09:58:08PM +1300, Mark Schreiber wrote: > > I don't mind giving it a go, I'm pretty new to biojava but keen to > contribute. I think a will go for the circular veiw approach. Again the > circularlocation wrapper is probably a good idea. I think it should be a > wrapper on a StrandedFeature object as only DNA can be circular and > 900..115 in the direct orientation is different to 900..115 in the reverse > orientation. Please be careful here -- there are actually four cases of a stranded (directional) feature between those two positions: - 115-900, with the feature running clockwise round the circle (let's call this plus) - 115-900, minus. If we're extending the current feature, this has the same Location property as the case above -- it just differs in the Strand property. - 900-115, plus (i.e. the part of the circle which wasn't covered by the above locations). - 900-115, minus. It's also possible to have non-stranded features on a circle (say, AT-rich tracts). Here, there are just the two cases, 115-900 and 900-115. The neatest way to handle this is to keep the features exactly the same, and just have special location objects which understand that they're on a circle, and that 115-900 is completely different from 900-115. Am I making sense here? Good luck if you do want to have a go at an implementation -- it would be great to have this in the project, Thomas. From kdj@sanger.ac.uk Sun Jan 28 17:58:36 2001 From: kdj@sanger.ac.uk (Keith James) Date: 28 Jan 2001 17:58:36 +0000 Subject: [Biojava-l] Fasta search parsing checked in Message-ID: Hi, Since the last snapshot I've fixed a couple of problems with vetoing changes to the search results/hits/subhits (which were supposed to be immutable, but weren't). I've added creation of GappedSymbolLists to represent the hit alignments. I think that the basic functionality is complete. I'll add a tutorial/example soon. cheers, -- -= Keith James - kdj@sanger.ac.uk - http://www.sanger.ac.uk/Users/kdj =- The Sanger Centre, Wellcome Trust Genome Campus, Hinxton, Cambs CB10 1SA From ling@ling.ipc.net Sun Jan 28 20:17:55 2001 From: ling@ling.ipc.net (Bruce Ling) Date: Sun, 28 Jan 2001 12:17:55 -0800 Subject: [Biojava-l] some comments and wish list Message-ID: <4.1.20010126102642.00a096c0@mail.ling.ipc.net> Hi, As for the future of biojava, I have some wish list here. I think bioperl has been extremely successful as it has been really tailored for the majority of the bioinformaticians at this time. The task facing the field really focuses on genomic sequence and the annotation manipulation. Unfortunately biojava lags behind and doesn't really provide a lot of tools for that aspect. If I am going to use biojava to process blast, HMMER or some other databases files, basically I have to spend a lot of time to understand the biojava code and reinvent a lot of the wheels. I have to say there is not many building block which can be fetched out of the shelf of biojava. Documentation and demos code are nice but not enough. -Some of the demos code are nice, but it is very crude and really cannot be used for large scale data processing. Is it possible that biojava can spend more efforts on that aspect. I think the most critical issue here is how to provide easy to use API such that details of the implementation can be hidden. I like bioperl because they did a terrific job on that aspect. I guess to transform the functionality of the bioperl (because of its good design and functionality) is a must if you want to have more traffic toward the biojava. I see one good direction of the biojava is its xml parser development, but there is no development in the code which constitutes bio seq objects directly from the parser or from seq objects to xml. One question, are you going to support GAME in biojava in the near future? Any way, just some random thoughts. Hopefully it can help the leaders in biojava to plan for the future projects. Bruce Ling From mark_s@sanger.otago.ac.nz Sun Jan 28 20:29:52 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Mon, 29 Jan 2001 09:29:52 +1300 (NZDT) Subject: [Biojava-l] circular sequences In-Reply-To: <20010128121901.B2068@adnah.sanger.ac.uk> Message-ID: On Sun, 28 Jan 2001, Thomas Down wrote: > On Sun, Jan 28, 2001 at 09:40:54PM +1300, Mark Schreiber wrote: > > On Fri, 26 Jan 2001, Thomas Down wrote: > > > > > > > > Well, there's no problem doing a CircularSymbolList which overrides > > > subList and subStr (I'd be tempted to write a class which gives > > > a circularized view onto any underlying SymbolList, rather than > > > subclassing a specific implementation). Point to debate: should > > > symbolAt(1001) for a 1000-symbol circular sequence return the > > > value of symbolAt(1), or is this an error? > > > > > > > It depends. In some ways it would be nice if iterators etc could just > > carry on around the sequence although at some point it would get a bit > > stupid unless a signal is given to signify the end. Might just be best to > > throw an exception and let the implementing program decide what to do > > about it. On the other hand you could probably use the standard symbol > > list in this way. 6 of one .... > > > > My gut feeling is that we should allow indexing of residues greater than > > the length of the sequence and if need be less than one. Zero in this > > instance should be an invalid argument. > > Yeah, that sounds about right. /me still wishes sequences > were indexed from zero though (the one thing I still miss from > my pre-biojava sequence library). > > > > Circular Sequence objects are slightly more of a pain, since I > > > might want a Feature running from, say, 900 - 100. Not sure > > > what the best way to handle this is -- it's not a case recognized > > > by out current Location objects. > > > > Maybe make a subclass of stranded feature since only DNA can be circular, > > can anyone see a reason why not. > > Circularity is an issue that's orthogonal to the current system > of feature types. Certainly, there's nothing to say that all > features on DNA are StrandedFeatures (a CpG island, for instance, > is fairly clearly not stranded, at least in an idealized world). Also, > we'll probably want to use all the other feature types on circular > sequences (Exon, Transcript, whatever). > Good point > My vote goes for Matthew's solution of having CircularLocations, and > keeping the circularity issue out of the feature system itself. It's > not a 100% clean solution, but I think it should work out okay. > I'll look into making a circular location. So far I have started making a subclass of ViewSequence to act as a view onto a linear SymbolList. Can anyone see problems with this? I am a little uncomfortable with the fact that all added features will not be added to the underlying sequence so the view and sequence must always be kept together (as long as they are circular anyhow). A thought for the parsing experts, what is the easiest way to interpret a circular sequence and features and then build them from say a GenBank file? Mark > Thomas. > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From td2@sanger.ac.uk Sun Jan 28 20:53:48 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sun, 28 Jan 2001 20:53:48 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Mon, Jan 29, 2001 at 09:29:52AM +1300 References: <20010128121901.B2068@adnah.sanger.ac.uk> Message-ID: <20010128205348.A10326@adnah.sanger.ac.uk> On Mon, Jan 29, 2001 at 09:29:52AM +1300, Mark Schreiber wrote: > > I'll look into making a circular location. Great. > So far I have started making a subclass of ViewSequence to act as a view > onto a linear SymbolList. Can anyone see problems with this? > > I am a little uncomfortable with the fact that all added features will not > be added to the underlying sequence so the view and sequence must always > be kept together (as long as they are circular anyhow). What functionality do you want to re-use from ViewSequence (which is a kind-of misleading name, FeatureOverlaySequence would be more descriptive)? As I see it, the functions of CircularSequence are: - Offer a circularized view onto a SymbolList - Act as a holder for Features with CircularLocations - (As with all Sequences) hold an Annotation In Biojava, a sequence is really just the intersection of SymbolList, FeatureHolder, and Annotatable (plus a couple of methods for fetching an ID). If you take a look at SimpleSequence, you'll see is implements almost all it's functionality by delegation to: - An arbitrary SymbolList - SimpleAnnotation - SimpleFeatureHolder - The default in-memory FeatureRealizer. There's almost no `real' code in SimpleSequence at all. The only difference in CircularSequence is that you need to circularize the SymbolList. I'd be inclined to implment this without any subclassing at all -- my recent experience in Java has almost always been that subclassing is something of a blunt instrument, and delegation is a neater way to get the job done. Anyway, end-of-hand-waving-design-philosophy-thingumybob... It'll be good to see this working -- I'm looking forward to a really pretty java2d plasmid-drawing program :). Thomas. From mark_s@sanger.otago.ac.nz Sun Jan 28 21:10:12 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Mon, 29 Jan 2001 10:10:12 +1300 (NZDT) Subject: [Biojava-l] circular sequences In-Reply-To: <20010128205348.A10326@adnah.sanger.ac.uk> Message-ID: On Sun, 28 Jan 2001, Thomas Down wrote: > On Mon, Jan 29, 2001 at 09:29:52AM +1300, Mark Schreiber wrote: > > > > I'll look into making a circular location. > > Great. > > > So far I have started making a subclass of ViewSequence to act as a view > > onto a linear SymbolList. Can anyone see problems with this? > > > > I am a little uncomfortable with the fact that all added features will not > > be added to the underlying sequence so the view and sequence must always > > be kept together (as long as they are circular anyhow). > > What functionality do you want to re-use from ViewSequence > (which is a kind-of misleading name, FeatureOverlaySequence > would be more descriptive)? > Ok I may have gone a bit astray here but I think it would still work. > As I see it, the functions of CircularSequence are: > > - Offer a circularized view onto a SymbolList > - Act as a holder for Features with CircularLocations > - (As with all Sequences) hold an Annotation > > In Biojava, a sequence is really just the intersection of > SymbolList, FeatureHolder, and Annotatable (plus a couple > of methods for fetching an ID). If you take a look at > SimpleSequence, you'll see is implements almost all it's > functionality by delegation to: > > - An arbitrary SymbolList > - SimpleAnnotation > - SimpleFeatureHolder > - The default in-memory FeatureRealizer. > > There's almost no `real' code in SimpleSequence at all. > > The only difference in CircularSequence is that you need > to circularize the SymbolList. > > I'd be inclined to implment this without any subclassing > at all -- my recent experience in Java has almost always been > that subclassing is something of a blunt instrument, and > delegation is a neater way to get the job done. > OK now i'm confused... why not just subclass simple sequence then since the only thing that needs changing is the view onto the symbol list. All other functionality is the same and doesn't need to be rewritten even if it is minimal? I can't see how the delegation makes the job neater. > Anyway, end-of-hand-waving-design-philosophy-thingumybob... > > It'll be good to see this working -- I'm looking forward > to a really pretty java2d plasmid-drawing program :). > > Thomas. > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From td2@sanger.ac.uk Sun Jan 28 23:14:31 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Sun, 28 Jan 2001 23:14:31 +0000 Subject: [Biojava-l] circular sequences In-Reply-To: ; from mark_s@sanger.otago.ac.nz on Mon, Jan 29, 2001 at 10:10:12AM +1300 References: <20010128205348.A10326@adnah.sanger.ac.uk> Message-ID: <20010128231430.A11104@adnah.sanger.ac.uk> On Mon, Jan 29, 2001 at 10:10:12AM +1300, Mark Schreiber wrote: > > OK now i'm confused... why not just subclass simple sequence then since > the only thing that needs changing is the view onto the symbol list. All > other functionality is the same and doesn't need to be rewritten even if > it is minimal? I can't see how the delegation makes the job neater. Yes, that would work fine too, if you'd prefer to take that approach. Happy hacking, Thomas. From simon.brocklehurst@CambridgeAntibody.com Mon Jan 29 12:07:48 2001 From: simon.brocklehurst@CambridgeAntibody.com (Simon Brocklehurst) Date: Mon, 29 Jan 2001 12:07:48 +0000 Subject: [Biojava-l] some comments and wish list References: <4.1.20010126102642.00a096c0@mail.ling.ipc.net> Message-ID: <3A755D14.DFF2E1F6@CambridgeAntibody.com> Bruce Ling wrote: >I see one good direction of the > biojava is its xml parser development, but there is no development in the > code which constitutes bio seq objects directly from the parser or from seq > objects to xml. One question, are you going to support GAME in biojava in > the near future? > > Any way, just some random thoughts. Hopefully it can help the leaders in > biojava to plan for the future projects. > > Bruce Ling > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l Hi Bruce, Thanks for you comments. In regards of the SAX Parser stuff (is this what you mean by xml parser?), we are certainly planning to address some of what you're looking for in terms of populating biojava objects. You should also know that it is most certainly our aim to build systems that are easy to learn and use (hence the use of facade classes in the sax package). In regard of judging us on ease of use, please do this do on full/point releases, rather than what's in biojava-live. Biojava-live is always a work in progress. In regard of GAME, we are indeed considering ways to support this. I can't promise we will get it in to the 1.1 release, however. Simon -- Simon M. Brocklehurst, Ph.D. Head of Bioinformatics & Advanced IS Cambridge Antibody Technology The Science Park, Melbourn, Cambridgeshire, UK http://www.CambridgeAntibody.com/ mailto:simon.brocklehurst@CambridgeAntibody.com From mrp@sanger.ac.uk Mon Jan 29 18:18:00 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Mon, 29 Jan 2001 18:18:00 +0000 Subject: [Biojava-l] some comments and wish list References: <4.1.20010126102642.00a096c0@mail.ling.ipc.net> Message-ID: <3A75B3D8.2030806@sanger.ac.uk> Hi Bruce, Thanks for your comments. I think that the main reason that BioJava lags behind BioPerl in features is that BioPerl was/is developed while being actively used to implemnet many real-life sequence analysis pipelines, where as much of BioJava was developed by Thomas and I to adress the code-reuse issues that came up while we were working on our PhDs. BioJava will never be as quick to use, robust or as feature-complete as BioPerl untill developers use it daily for genome analysis pipelines. On the other hand, it is not fleshed out enough to do this job at the moment, so the brave pioneres will have a body of code to write - catch 22. The flip side of this, is that we have been able to explore elegant objects without the constraints of it having to work 24/7, so we are now in a position to add lots of functionality to a relatively clean framework (which doesn't have much inherant lava-flow design). I think we trust our sequence object model to work & scale to the genomic and into comparative-genomics without a lot of heart-ache - we have been stress-testing by loading in the human genome this week - my 128mb pc seems to handle this fine. We are not stingey with read/write CVS access, so if you have code to add, or wish to help maintain existing code, we are more than happy to have you. A GAME parser would be great, as would any search program parsers (either using the SAX-based parsers or the search result objects). We realy are just the sum of our contributers. All the best, Matthew From mark_s@sanger.otago.ac.nz Tue Jan 30 02:05:19 2001 From: mark_s@sanger.otago.ac.nz (Mark Schreiber) Date: Tue, 30 Jan 2001 15:05:19 +1300 (NZDT) Subject: [Biojava-l] circular sequences In-Reply-To: <20010128231430.A11104@adnah.sanger.ac.uk> Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-846479053-980820319=:4511 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi Attached are the CircularSequence and CircularView files. The circular view allows for a temporary circular view onto a molecule that may be discovered to be circular during or after parsing. Not sure how useful the view is but it works. Please look and poke and test to make sure It is compatible with other code. The circular locations are still in the development but should be out shortly Mark On Sun, 28 Jan 2001, Thomas Down wrote: > On Mon, Jan 29, 2001 at 10:10:12AM +1300, Mark Schreiber wrote: > > > > OK now i'm confused... why not just subclass simple sequence then since > > the only thing that needs changing is the view onto the symbol list. All > > other functionality is the same and doesn't need to be rewritten even if > > it is minimal? I can't see how the delegation makes the job neater. > > Yes, that would work fine too, if you'd prefer to take that > approach. > > Happy hacking, > > Thomas. > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mark Schreiber Ph: 64 3 4797875 Rm 218 email mark_s@sanger.otago.ac.nz Department of Biochemistry email m.schreiber@clear.net.nz University of Otago PO Box 56 Dunedin New Zealand ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --0-846479053-980820319=:4511 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="CircularView.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: LyoNCiAqICAgICAgICAgICAgICAgICAgICBCaW9KYXZhIGRldmVsb3BtZW50 IGNvZGUNCiAqDQogKiBUaGlzIGNvZGUgbWF5IGJlIGZyZWVseSBkaXN0cmli dXRlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlDQogKiB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlLiAgVGhpcyBzaG91 bGQNCiAqIGJlIGRpc3RyaWJ1dGVkIHdpdGggdGhlIGNvZGUuICBJZiB5b3Ug ZG8gbm90IGhhdmUgYSBjb3B5LA0KICogc2VlOg0KICoNCiAqICAgICAgaHR0 cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci5odG1sDQogKg0KICog Q29weXJpZ2h0IGZvciB0aGlzIGNvZGUgaXMgaGVsZCBqb2ludGx5IGJ5IHRo ZSBpbmRpdmlkdWFsDQogKiBhdXRob3JzLiAgVGhlc2Ugc2hvdWxkIGJlIGxp c3RlZCBpbiBAYXV0aG9yIGRvYyBjb21tZW50cy4NCiAqDQogKiBGb3IgbW9y ZSBpbmZvcm1hdGlvbiBvbiB0aGUgQmlvSmF2YSBwcm9qZWN0IGFuZCBpdHMg YWltcywNCiAqIG9yIHRvIGpvaW4gdGhlIGJpb2phdmEtbCBtYWlsaW5nIGxp c3QsIHZpc2l0IHRoZSBob21lIHBhZ2UNCiAqIGF0Og0KICoNCiAqICAgICAg aHR0cDovL3d3dy5iaW9qYXZhLm9yZy8NCiAqDQogKi8NCg0KDQovKioNCiAq IEEgY2lyY3VsYXIgdmlldyBvbnRvIGFub3RoZXIgU2VxdWVuY2Ugb2JqZWN0 LiAgVGhlIGNsYXNzIGFsbG93cyBmb3INCiAqIHJlaW50ZXJwcmV0YXRpb24g b2YgbG9jYXRpb25zIGFuZCBpbmRpY2VzIG9udG8gdGhlIHNlcXVlbmNlIHRv IGFsbG93IGZvcg0KICogb3ZlcmxhcHBpbmcgb2YgdGhlIG9yaWdpbi4gVGhl IG9yaWdpbiBpcyBhc3N1bWVkIHRvIGJlIHRoZSBmaXJzdCBzeW1ib2wuDQog KiBGdXR1cmUgdmVyc2lvbnMgbWF5IHN1cHBvcnQgY2hhbmdpbmcgdGhlIG9y aWdpbi4NCiAqDQogKiBAYXV0aG9yIE1hcmsgU2NocmVpYmVyDQogKiBAdmVy c2lvbiAxLjANCiAqLw0KcGFja2FnZSBTQ0hSRUlCRVIuYmlvamF2YV9hZGRp dGlvbnMuc2VxOw0KDQppbXBvcnQgb3JnLmJpb2phdmEuYmlvLnNlcS4qOw0K aW1wb3J0IG9yZy5iaW9qYXZhLmJpby5zZXEuaW8uKjsNCmltcG9ydCBvcmcu YmlvamF2YS5iaW8uKjsNCmltcG9ydCBvcmcuYmlvamF2YS5iaW8uc3ltYm9s Lio7DQppbXBvcnQgb3JnLmJpb2phdmEuYmlvLnNlcS5pbXBsLio7DQppbXBv cnQgb3JnLmJpb2phdmEudXRpbHMuKjsNCg0KaW1wb3J0IGphdmEudXRpbC4q Ow0KDQpwdWJsaWMgY2xhc3MgQ2lyY3VsYXJWaWV3IGV4dGVuZHMgVmlld1Nl cXVlbmNlew0KDQogIHB1YmxpYyBDaXJjdWxhclZpZXcoU2VxdWVuY2Ugc2Vx LCBGZWF0dXJlUmVhbGl6ZXIgZnIpew0KICAgIHN1cGVyKHNlcSwgZnIpOw0K ICB9DQogIHB1YmxpYyBDaXJjdWxhclZpZXcoU2VxdWVuY2Ugc2VxKXsNCiAg ICBzdXBlcihzZXEpOw0KICB9DQoNCiAgLyoqDQogICAqIE92ZXIgcmlkZXMg Vmlld1NlcXVlbmNlLiBBbGxvd3MgYW55IGludGVnZXIgaW5kZXgsIHBvc2l0 aXZlIG9yIG5lZ2F0aXZlDQogICAqIHRvIHJldHVybiBhIHN5bWJvbCB2aWEg dGhlIGVxdWF0aW9uDQogICAqIDxDT0RFPmluZGV4ID0gKChpbmRleCAtMSkg JSBsZW5ndGgpKzE8L0NPREU+DQogICAqDQogICAqIE5vdGUgdGhhdCBhbiBp bmRleCBvZiAwIHdpbGwgdGhyb3cgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0 aW9uLg0KICAgKi8NCiAgcHVibGljIFN5bWJvbCBzeW1ib2xBdChpbnQgaW5k ZXgpew0KDQogICAgaWYgKGluZGV4ID09IDApIHRocm93IG5ldyBJbGxlZ2Fs QXJndW1lbnRFeGNlcHRpb24oIk11c3QgdXNlIGEgbm9uIDAgaW50ZWdlciIp Ow0KICAgIGluZGV4ID0gKChpbmRleC0xKSAlIHN1cGVyLmxlbmd0aCgpKSAr IDE7DQogICAgaWYoaW5kZXggPCAwKSBpbmRleCA9IHN1cGVyLmxlbmd0aCgp KzEgKyBpbmRleDsNCiAgICByZXR1cm4gc3VwZXIuc3ltYm9sQXQoaW5kZXgp Ow0KICB9DQoNCiAgLyoqDQogICAqIE92ZXIgcmlkZXMgVmlld1NlcXVlbmNl LiBBbGxvd3MgYW55IGludGVnZXIgaW5kZXgsIHBvc2l0aXZlIG9yIG5lZ2F0 aXZlDQogICAqIHRvIHJldHVybiBhIHN5bWJvbCB2aWEgdGhlIGVxdWF0aW9u DQogICAqIDxDT0RFPmluZGV4ID0gKChpbmRleCAtMSkgJSBsZW5ndGgpKzE8 L0NPREU+DQogICAqDQogICAqIFdpbGwgcmV0dXJuIGEgbGluZWFyIFN0cmlu ZyB3aGljaCBjYW4gLGlmIG5lc2Nlc3NhcnksIHNwYW4gdGhlIG9yaWdpbi4N CiAgICoNCiAgICogTm90ZSB0aGF0IGFuIGluZGV4IG9mIDAgd2lsbCB0aHJv dyBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uDQogICAqLw0KICBwdWJs aWMgU3RyaW5nIHN1YlN0cihpbnQgc3RhcnQsIGludCBlbmQpew0KICAgIGlm KHN0YXJ0ID09IDAgfHwgZW5kID09IDApew0KICAgICAgdGhyb3cgbmV3IEls bGVnYWxBcmd1bWVudEV4Y2VwdGlvbigNCiAgICAgICAgIk11c3QgdXNlIGEg bm9uIDAgaW50ZWdlciINCiAgICAgICk7DQogICAgfQ0KICAgIHN0YXJ0ID0g KChzdGFydC0xKSAlIHN1cGVyLmxlbmd0aCgpKSArIDE7DQogICAgZW5kID0g KChlbmQtMSkgJSBzdXBlci5sZW5ndGgoKSkgKyAxOw0KICAgIGlmKHN0YXJ0 IDwgMCkgc3RhcnQgPSBzdXBlci5sZW5ndGgoKSsxICsgc3RhcnQ7DQogICAg aWYoZW5kIDwgMCkgZW5kID0gc3VwZXIubGVuZ3RoKCkrMSArIGVuZDsNCiAg ICBpZihzdGFydCA8PSBlbmQpew0KICAgICAgcmV0dXJuIHN1cGVyLnN1YlN0 cihzdGFydCwgZW5kKTsNCiAgICB9DQogICAgZWxzZXsNCiAgICAgIFN0cmlu ZyB0b0VuZCA9IHN1cGVyLnN1YlN0cihzdGFydCxzdXBlci5sZW5ndGgoKSk7 DQogICAgICBTdHJpbmcgZnJvbVN0YXJ0ID0gc3VwZXIuc3ViU3RyKDEsZW5k KTsNCiAgICAgIHJldHVybiB0b0VuZCArIGZyb21TdGFydDsNCiAgICB9DQog IH0NCg0KICAvKioNCiAgICogT3ZlciByaWRlcyBWaWV3U2VxdWVuY2UuIEFs bG93cyBhbnkgaW50ZWdlciBpbmRleCwgcG9zaXRpdmUgb3IgbmVnYXRpdmUN CiAgICogdG8gcmV0dXJuIGEgc3ltYm9sIHZpYSB0aGUgZXF1YXRpb24NCiAg ICogPENPREU+aW5kZXggPSAoKGluZGV4IC0xKSAlIGxlbmd0aCkrMTwvQ09E RT4NCiAgICoNCiAgICogV2lsbCByZXR1cm4gYSBsaW5lYXIgU3ltYm9sTGlz dCB3aGljaCBjYW4gLGlmIG5lc2Nlc3NhcnksIHNwYW4gdGhlIG9yaWdpbi4N CiAgICoNCiAgICogTm90ZSB0aGF0IGFuIGluZGV4IG9mIDAgd2lsbCB0aHJv dyBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uDQogICAqLw0KICBwdWJs aWMgU3ltYm9sTGlzdCBzdWJMaXN0KGludCBzdGFydCwgaW50IGVuZCl7DQog ICAgaWYoc3RhcnQgPT0gMCB8fCBlbmQgPT0gMCl7DQogICAgICB0aHJvdyBu ZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKA0KICAgICAgICAiTXVzdCB1 c2UgYSBub24gMCBpbnRlZ2VyIg0KICAgICAgKTsNCiAgICB9DQogICAgc3Rh cnQgPSAoKHN0YXJ0LTEpICUgc3VwZXIubGVuZ3RoKCkpICsgMTsNCiAgICBl bmQgPSAoKGVuZC0xKSAlIHN1cGVyLmxlbmd0aCgpKSArIDE7DQoNCiAgICBp ZihzdGFydCA8IDApIHN0YXJ0ID0gc3VwZXIubGVuZ3RoKCkrMSArIHN0YXJ0 Ow0KICAgIGlmKGVuZCA8IDApIGVuZCA9IHN1cGVyLmxlbmd0aCgpKzEgKyBl bmQ7DQoNCiAgICAgaWYoc3RhcnQgPD0gZW5kKXsNCiAgICAgIHJldHVybiBz dXBlci5zdWJMaXN0KHN0YXJ0LCBlbmQpOw0KICAgIH0NCiAgICBlbHNlew0K ICAgICAgU3RyaW5nIHRvRW5kID0gc3VwZXIuc3ViU3RyKHN0YXJ0LHN1cGVy Lmxlbmd0aCgpKTsNCiAgICAgIFN0cmluZyBmcm9tU3RhcnQgPSBzdXBlci5z dWJTdHIoMSxlbmQpOw0KICAgICAgU3RyaW5nIHMgPSB0b0VuZCArIGZyb21T dGFydDsNCiAgICAgdHJ5ew0KICAgICAgICBBbHBoYWJldCBhbHBoYSA9IHN1 cGVyLmdldEFscGhhYmV0KCk7DQogICAgICAgIFN5bWJvbFBhcnNlciBzcCA9 IGFscGhhLmdldFBhcnNlcigidG9rZW4iKTsNCiAgICAgICAgU3ltYm9sTGlz dCBzZXEgPSBzcC5wYXJzZShzKTsNCiAgICAgICAgcmV0dXJuIHNlcTsNCiAg ICAgfWNhdGNoKEJpb0V4Y2VwdGlvbiBiZSl7DQogICAgICAgIFN5c3RlbS5l cnIucHJpbnRsbigvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4NCiAgICAg ICAgICAiQSBzZXJpb3VzIGVycm9yIGhhcyBvY2N1cmVkIGR1cmluZyB0aGUg cmVjb25zdHJ1Y3Rpb24gb2YgIiArDQogICAgICAgICAgc3VwZXIuZ2V0TmFt ZSgpKTsNCiAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgfQ0KICAgIH0N CiAgfQ0KfQ0K --0-846479053-980820319=:4511 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="CircularSequence.java" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: LyoNCiAqICAgICAgICAgICAgICAgICAgICBCaW9KYXZhIGRldmVsb3BtZW50 IGNvZGUNCiAqDQogKiBUaGlzIGNvZGUgbWF5IGJlIGZyZWVseSBkaXN0cmli dXRlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlDQogKiB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlLiAgVGhpcyBzaG91 bGQNCiAqIGJlIGRpc3RyaWJ1dGVkIHdpdGggdGhlIGNvZGUuICBJZiB5b3Ug ZG8gbm90IGhhdmUgYSBjb3B5LA0KICogc2VlOg0KICoNCiAqICAgICAgaHR0 cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci5odG1sDQogKg0KICog Q29weXJpZ2h0IGZvciB0aGlzIGNvZGUgaXMgaGVsZCBqb2ludGx5IGJ5IHRo ZSBpbmRpdmlkdWFsDQogKiBhdXRob3JzLiAgVGhlc2Ugc2hvdWxkIGJlIGxp c3RlZCBpbiBAYXV0aG9yIGRvYyBjb21tZW50cy4NCiAqDQogKiBGb3IgbW9y ZSBpbmZvcm1hdGlvbiBvbiB0aGUgQmlvSmF2YSBwcm9qZWN0IGFuZCBpdHMg YWltcywNCiAqIG9yIHRvIGpvaW4gdGhlIGJpb2phdmEtbCBtYWlsaW5nIGxp c3QsIHZpc2l0IHRoZSBob21lIHBhZ2UNCiAqIGF0Og0KICoNCiAqICAgICAg aHR0cDovL3d3dy5iaW9qYXZhLm9yZy8NCiAqDQogKi8NCg0KDQovKioNCiAq IEBhdXRob3IgTWFyayBTY2hyZWliZXINCiAqIEB2ZXJzaW9uIDEuMA0KICov DQpwYWNrYWdlIFNDSFJFSUJFUi5iaW9qYXZhX2FkZGl0aW9ucy5zZXE7DQoN CmltcG9ydCBvcmcuYmlvamF2YS5iaW8uKjsNCmltcG9ydCBvcmcuYmlvamF2 YS51dGlscy4qOw0KaW1wb3J0IG9yZy5iaW9qYXZhLmJpby5zeW1ib2wuKjsN CmltcG9ydCBvcmcuYmlvamF2YS5iaW8uc2VxLio7DQppbXBvcnQgb3JnLmJp b2phdmEuYmlvLnNlcS5pbXBsLio7DQppbXBvcnQgb3JnLmJpb2phdmEuYmlv LnNlcS5pby4qOw0KDQppbXBvcnQgamF2YS51dGlsLio7DQoNCnB1YmxpYyBj bGFzcyBDaXJjdWxhclNlcXVlbmNlIGV4dGVuZHMgU2ltcGxlU2VxdWVuY2Ug ew0KICAvKioNCiAgICAgKiBDcmVhdGUgYSBDaXJjdWxhclNlcXVlbmNlIHdp dGggdGhlIHN5bWJvbHMgYW5kIGFscGhhYmV0IG9mIHN5bSwgYW5kIHRoZQ0K ICAgICAqIHNlcXVlbmNlIHByb3BlcnRpZXMgbGlzdGVkLg0KICAgICAqDQog ICAgICogQHBhcmFtIHN5bSB0aGUgU3ltYm9sTGlzdCB0byB3cmFwIGFzIGEg c2VxdWVuY2UNCiAgICAgKiBAcGFyYW0gdXJuIHRoZSBVUk4NCiAgICAgKiBA cGFyYW0gbmFtZSB0aGUgbmFtZSAtIHNob3VsZCBiZSB1bmlxdWUgaWYgcHJh Y3RpY2FsDQogICAgICogQHBhcmFtIGFubm90YXRpb24gdGhlIGFubm90YXRp b24gb2JqZWN0IHRvIHVzZSBvciBudWxsDQogICAgICovDQogICAgcHVibGlj IENpcmN1bGFyU2VxdWVuY2UoU3ltYm9sTGlzdCBzeW0sDQogICAgICAgICAg ICAgICAgICAgICAgICAgIFN0cmluZyB1cm4sDQogICAgICAgICAgICAgICAg ICAgICAgICAgIFN0cmluZyBuYW1lLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICBBbm5vdGF0aW9uIGFubm90YXRpb24pIHsNCiAgICAgIHN1cGVyKHN5 bSwgdXJuLG5hbWUsYW5ub3RhdGlvbik7DQoNCiAgICB9DQoNCiAgICAvKioN CiAgICAgKiBDcmVhdGUgYSBDaXJjdWxhclNlcXVlbmNlIHVzaW5nIGEgc3Bl Y2lmaWVkIEZlYXR1cmVSZWFsaXplci4NCiAgICAgKg0KICAgICAqIEBwYXJh bSBzeW0gdGhlIFN5bWJvbExpc3QgdG8gd3JhcCBhcyBhIHNlcXVlbmNlDQog ICAgICogQHBhcmFtIHVybiB0aGUgVVJODQogICAgICogQHBhcmFtIG5hbWUg dGhlIG5hbWUgLSBzaG91bGQgYmUgdW5pcXVlIGlmIHByYWN0aWNhbA0KICAg ICAqIEBwYXJhbSBhbm5vdGF0aW9uIHRoZSBhbm5vdGF0aW9uIG9iamVjdCB0 byB1c2Ugb3IgbnVsbA0KICAgICAqIEBwYXJhbSByZWFsaXplciB0aGUgRmVh dHVyZVJlYWxpemVyIGltcGxlbWV0YXRpb24gdG8gdXNlIHdoZW4gYWRkaW5n IGZlYXR1cmVzDQogICAgICovDQogICAgcHVibGljIENpcmN1bGFyU2VxdWVu Y2UoU3ltYm9sTGlzdCBzeW0sDQoJCQkgIFN0cmluZyB1cm4sDQoJCQkgIFN0 cmluZyBuYW1lLA0KCQkJICBBbm5vdGF0aW9uIGFubm90YXRpb24sDQoJCQkg IEZlYXR1cmVSZWFsaXplciByZWFsaXplcikNCiAgICB7DQoJc3VwZXIoc3lt LHVybixuYW1lLGFubm90YXRpb24scmVhbGl6ZXIpOw0KICAgIH0NCg0KICAv KioNCiAgICogT3ZlciByaWRlcyBWaWV3U2VxdWVuY2UuIEFsbG93cyBhbnkg aW50ZWdlciBpbmRleCwgcG9zaXRpdmUgb3IgbmVnYXRpdmUNCiAgICogdG8g cmV0dXJuIGEgc3ltYm9sIHZpYSB0aGUgZXF1YXRpb24NCiAgICogPENPREU+ aW5kZXggPSAoKGluZGV4IC0xKSAlIGxlbmd0aCkrMTwvQ09ERT4NCiAgICoN CiAgICogTm90ZSB0aGF0IGFuIGluZGV4IG9mIDAgd2lsbCB0aHJvdyBhbiBJ bGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uDQogICAqLw0KICBwdWJsaWMgU3lt Ym9sIHN5bWJvbEF0KGludCBpbmRleCl7DQoNCiAgICBpZiAoaW5kZXggPT0g MCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTXVzdCB1 c2UgYSBub24gMCBpbnRlZ2VyIik7DQogICAgaW5kZXggPSAoKGluZGV4LTEp ICUgc3VwZXIubGVuZ3RoKCkpICsgMTsNCiAgICBpZihpbmRleCA8IDApIGlu ZGV4ID0gc3VwZXIubGVuZ3RoKCkrMSArIGluZGV4Ow0KICAgIHJldHVybiBz dXBlci5zeW1ib2xBdChpbmRleCk7DQogIH0NCg0KICAvKioNCiAgICogT3Zl ciByaWRlcyBWaWV3U2VxdWVuY2UuIEFsbG93cyBhbnkgaW50ZWdlciBpbmRl eCwgcG9zaXRpdmUgb3IgbmVnYXRpdmUNCiAgICogdG8gcmV0dXJuIGEgc3lt Ym9sIHZpYSB0aGUgZXF1YXRpb24NCiAgICogPENPREU+aW5kZXggPSAoKGlu ZGV4IC0xKSAlIGxlbmd0aCkrMTwvQ09ERT4NCiAgICoNCiAgICogV2lsbCBy ZXR1cm4gYSBsaW5lYXIgU3RyaW5nIHdoaWNoIGNhbiAsaWYgbmVzY2Vzc2Fy eSwgc3BhbiB0aGUgb3JpZ2luLg0KICAgKg0KICAgKiBOb3RlIHRoYXQgYW4g aW5kZXggb2YgMCB3aWxsIHRocm93IGFuIElsbGVnYWxBcmd1bWVudEV4Y2Vw dGlvbi4NCiAgICovDQogIHB1YmxpYyBTdHJpbmcgc3ViU3RyKGludCBzdGFy dCwgaW50IGVuZCl7DQogICAgaWYoc3RhcnQgPT0gMCB8fCBlbmQgPT0gMCl7 DQogICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKA0K ICAgICAgICAiTXVzdCB1c2UgYSBub24gMCBpbnRlZ2VyIg0KICAgICAgKTsN CiAgICB9DQogICAgc3RhcnQgPSAoKHN0YXJ0LTEpICUgc3VwZXIubGVuZ3Ro KCkpICsgMTsNCiAgICBlbmQgPSAoKGVuZC0xKSAlIHN1cGVyLmxlbmd0aCgp KSArIDE7DQogICAgaWYoc3RhcnQgPCAwKSBzdGFydCA9IHN1cGVyLmxlbmd0 aCgpKzEgKyBzdGFydDsNCiAgICBpZihlbmQgPCAwKSBlbmQgPSBzdXBlci5s ZW5ndGgoKSsxICsgZW5kOw0KICAgIGlmKHN0YXJ0IDw9IGVuZCl7DQogICAg ICByZXR1cm4gc3VwZXIuc3ViU3RyKHN0YXJ0LCBlbmQpOw0KICAgIH0NCiAg ICBlbHNlew0KICAgICAgU3RyaW5nIHRvRW5kID0gc3VwZXIuc3ViU3RyKHN0 YXJ0LHN1cGVyLmxlbmd0aCgpKTsNCiAgICAgIFN0cmluZyBmcm9tU3RhcnQg PSBzdXBlci5zdWJTdHIoMSxlbmQpOw0KICAgICAgcmV0dXJuIHRvRW5kICsg ZnJvbVN0YXJ0Ow0KICAgIH0NCiAgfQ0KDQogIC8qKg0KICAgKiBPdmVyIHJp ZGVzIFZpZXdTZXF1ZW5jZS4gQWxsb3dzIGFueSBpbnRlZ2VyIGluZGV4LCBw b3NpdGl2ZSBvciBuZWdhdGl2ZQ0KICAgKiB0byByZXR1cm4gYSBzeW1ib2wg dmlhIHRoZSBlcXVhdGlvbg0KICAgKiA8Q09ERT5pbmRleCA9ICgoaW5kZXgg LTEpICUgbGVuZ3RoKSsxPC9DT0RFPg0KICAgKg0KICAgKiBXaWxsIHJldHVy biBhIGxpbmVhciBTeW1ib2xMaXN0IHdoaWNoIGNhbiAsaWYgbmVzY2Vzc2Fy eSwgc3BhbiB0aGUgb3JpZ2luLg0KICAgKg0KICAgKiBOb3RlIHRoYXQgYW4g aW5kZXggb2YgMCB3aWxsIHRocm93IGFuIElsbGVnYWxBcmd1bWVudEV4Y2Vw dGlvbi4NCiAgICovDQogIHB1YmxpYyBTeW1ib2xMaXN0IHN1Ykxpc3QoaW50 IHN0YXJ0LCBpbnQgZW5kKXsNCiAgICBpZihzdGFydCA9PSAwIHx8IGVuZCA9 PSAwKXsNCiAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRp b24oDQogICAgICAgICJNdXN0IHVzZSBhIG5vbiAwIGludGVnZXIiDQogICAg ICApOw0KICAgIH0NCiAgICBzdGFydCA9ICgoc3RhcnQtMSkgJSBzdXBlci5s ZW5ndGgoKSkgKyAxOw0KICAgIGVuZCA9ICgoZW5kLTEpICUgc3VwZXIubGVu Z3RoKCkpICsgMTsNCg0KICAgIGlmKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdXBl ci5sZW5ndGgoKSsxICsgc3RhcnQ7DQogICAgaWYoZW5kIDwgMCkgZW5kID0g c3VwZXIubGVuZ3RoKCkrMSArIGVuZDsNCg0KICAgICBpZihzdGFydCA8PSBl bmQpew0KICAgICAgcmV0dXJuIHN1cGVyLnN1Ykxpc3Qoc3RhcnQsIGVuZCk7 DQogICAgfQ0KICAgIGVsc2V7DQogICAgICBTdHJpbmcgdG9FbmQgPSBzdXBl ci5zdWJTdHIoc3RhcnQsc3VwZXIubGVuZ3RoKCkpOw0KICAgICAgU3RyaW5n IGZyb21TdGFydCA9IHN1cGVyLnN1YlN0cigxLGVuZCk7DQogICAgICBTdHJp bmcgcyA9IHRvRW5kICsgZnJvbVN0YXJ0Ow0KICAgICB0cnl7DQogICAgICAg IEFscGhhYmV0IGFscGhhID0gc3VwZXIuZ2V0QWxwaGFiZXQoKTsNCiAgICAg ICAgU3ltYm9sUGFyc2VyIHNwID0gYWxwaGEuZ2V0UGFyc2VyKCJ0b2tlbiIp Ow0KICAgICAgICBTeW1ib2xMaXN0IHNlcSA9IHNwLnBhcnNlKHMpOw0KICAg ICAgICByZXR1cm4gc2VxOw0KICAgICB9Y2F0Y2goQmlvRXhjZXB0aW9uIGJl KXsNCiAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKC8vIFRoaXMgc2hvdWxk IG5ldmVyIGhhcHBlbg0KICAgICAgICAgICJBIHNlcmlvdXMgZXJyb3IgaGFz IG9jY3VyZWQgZHVyaW5nIHRoZSByZWNvbnN0cnVjdGlvbiBvZiAiICsNCiAg ICAgICAgICBzdXBlci5nZXROYW1lKCkpOw0KICAgICAgICAgIHJldHVybiBu dWxsOw0KICAgICB9DQogICAgfQ0KICB9DQp9DQo= --0-846479053-980820319=:4511-- From birney@ebi.ac.uk Tue Jan 30 09:10:08 2001 From: birney@ebi.ac.uk (Ewan Birney) Date: Tue, 30 Jan 2001 09:10:08 +0000 (GMT) Subject: [Biojava-l] some comments and wish list In-Reply-To: <3A75B3D8.2030806@sanger.ac.uk> Message-ID: On Mon, 29 Jan 2001, Matthew Pocock wrote: > > The flip side of this, is that we have been able to explore elegant > objects without the constraints of it having to work 24/7, so we are now > in a position to add lots of functionality to a relatively clean > framework (which doesn't have much inherant lava-flow design). I think > we trust our sequence object model to work & scale to the genomic and > into comparative-genomics without a lot of heart-ache - we have been > stress-testing by loading in the human genome this week - my 128mb pc > seems to handle this fine. Is the assumption that Bioperl suffers from bad design and lava-flow? I am actually impressed at the improvements made to the Bioperl design frame work for the next branch, which I notice borrowed a quite a lot from biojava for the location design. Anyway, I *do* think that a more intergrative CORBA approach could allow better leverage between the different projects. We'll have to see with the new 0.2 BioCorba stuff and Bioperl 0.7 coming out whether this actually works in-real-life. > > We are not stingey with read/write CVS access, so if you have code to > add, or wish to help maintain existing code, we are more than happy to > have you. A GAME parser would be great, as would any search program > parsers (either using the SAX-based parsers or the search result > objects). We realy are just the sum of our contributers. > > All the best, > > Matthew > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l > ----------------------------------------------------------------- Ewan Birney. Mobile: +44 (0)7970 151230, Work: +44 1223 494420 . ----------------------------------------------------------------- From td2@sanger.ac.uk Tue Jan 30 15:43:44 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Tue, 30 Jan 2001 15:43:44 +0000 Subject: [Biojava-l] BioJava 1.1x freeze plans Message-ID: <20010130154344.F13274@jabba.sanger.ac.uk> Hi... With all the extra functionality that BioJava has gained over the last few months, I think the time has come to call for a freeze to changes in core packages, and prepare for a 1.1 release. If anyone thinks this is a bad time for a freeze, please let me know. Otherwise: In the next few days, I'll start putting out pre-1.1 releases for testing and general use. If we don't find too many problems with these, I hope we'll be able to get a final release out by the middle of next month. In the mean time, all the standard comments: - Please can we see changes to core packages restricted to fixing bugs. If you make a change, please send e-mail to the list. - The JavaDoc documentation is getting better, but still has gaps. Any contributions to this would be much appreciated by everyone. - The more testing the better! Exemptions to the freeze: Not all parts of the project are at the same stage of development, and there will be packages marked `experimental' in the 1.10 release. - Matthew is actively working on org.biojava.bio.gui.sequence. This package is already labelled as experimental. - I've been making changes to org.biojava.bio.program.das. It seems to be working fairly well now, but it will be labelled as experimental since the protocol might still change. - As a special case, I don't see any problem accepting the circular sequence and location objects (being developed at the moment), so long as we have some test cases to try them out. For anyone else who is actively working on a specific package, could you think about it's current development status, and if it's still at an experimental/subject-to-change stage, check in a package.html file (and mail the list) to indicate this. Happy hacking (and let's make this the best BioJava release ever...), Thomas. From simon.brocklehurst@CambridgeAntibody.com Tue Jan 30 16:35:53 2001 From: simon.brocklehurst@CambridgeAntibody.com (Simon Brocklehurst) Date: Tue, 30 Jan 2001 16:35:53 +0000 Subject: [Biojava-l] BioJava 1.1x freeze plans References: <20010130154344.F13274@jabba.sanger.ac.uk> Message-ID: <3A76ED69.C5BCB3D4@CambridgeAntibody.com> Thomas Down wrote: > Hi... > > With all the extra functionality that BioJava has gained > over the last few months, I think the time has come to call > for a freeze to changes in core packages, and prepare for a > 1.1 release. > > If anyone thinks this is a bad time for a freeze, please > let me know. Otherwise: Thomas, I'd plead for a stay of execution until the end of the week. I want to check a couple more classes into bio.program.sax, which I think will make it more useful. S. -- Simon M. Brocklehurst, Ph.D. Head of Bioinformatics & Advanced IS Cambridge Antibody Technology The Science Park, Melbourn, Cambridgeshire, UK http://www.CambridgeAntibody.com/ mailto:simon.brocklehurst@CambridgeAntibody.com From td2@sanger.ac.uk Tue Jan 30 16:12:00 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Tue, 30 Jan 2001 16:12:00 +0000 Subject: [Biojava-l] BioJava 1.1x freeze plans In-Reply-To: <3A76ED69.C5BCB3D4@CambridgeAntibody.com>; from simon.brocklehurst@CambridgeAntibody.com on Tue, Jan 30, 2001 at 04:35:53PM +0000 References: <20010130154344.F13274@jabba.sanger.ac.uk> <3A76ED69.C5BCB3D4@CambridgeAntibody.com> Message-ID: <20010130161200.G13274@jabba.sanger.ac.uk> On Tue, Jan 30, 2001 at 04:35:53PM +0000, Simon Brocklehurst wrote: > > Thomas, > > I'd plead for a stay of execution until the end of the week. I want to > check a couple more classes into bio.program.sax, which I think will make > it more useful. Yes, that's fine... I'll pencil in a first pre-1.1 release early next week, if everything is going to plan. Thanks, Thomas. From gcox@netgenics.com Tue Jan 30 17:33:45 2001 From: gcox@netgenics.com (Cox, Greg) Date: Tue, 30 Jan 2001 12:33:45 -0500 Subject: [Biojava-l] BioJava 1.1x freeze plans Message-ID: Thomas, I'm in the midst of revising GenbankFormat to handle the new IO style, and I'd like to see that in the 1.1 release. Right now I'm having trouble with features, and hope someone can help. FeatureTableParser's documentation says it is shared between EMBL and GENBANK format, but EMBL is hard coded as the type source. Is there any existing GENBANK feature information? I'm leary about changing FeatureTableParser myself since I don't know what will break. Thanks, Greg From td2@sanger.ac.uk Tue Jan 30 20:47:46 2001 From: td2@sanger.ac.uk (Thomas Down) Date: Tue, 30 Jan 2001 20:47:46 +0000 Subject: [Biojava-l] BioJava 1.1x freeze plans In-Reply-To: ; from gcox@netgenics.com on Tue, Jan 30, 2001 at 12:33:45PM -0500 References: Message-ID: <20010130204746.I13274@jabba.sanger.ac.uk> On Tue, Jan 30, 2001 at 12:33:45PM -0500, Cox, Greg wrote: > Thomas, > I'm in the midst of revising GenbankFormat to handle the new IO > style, and I'd like to see that in the 1.1 release. Right now I'm having > trouble with features, and hope someone can help. FeatureTableParser's > documentation says it is shared between EMBL and GENBANK format, but EMBL is > hard coded as the type source. Is there any existing GENBANK feature > information? I'm leary about changing FeatureTableParser myself since I > don't know what will break. Great -- I think a lot of people will be happy to see that working again... There shouldn't be any problem taking this change before 1.1, so long as there's a working demo program to check that it's all working as expected. Yes, the FeatureTableParser was shared between Embl and Genbank in BioJava 1.0. Unless you know of some subtle differences between Embl and Genbank feature tables (I've always thought they were the same, but that said I've very rarely worked with Genbank files myself), it ought to be possible to do a new GenbankParser which also uses FeatureTableParser. I presume you've seen the lifecycle: - create a FeatureTableParser, pointing it at the appropriate SeqIOListener. - When you see the start of a feature, call startFeature passing in the feature type. - Pass each line of feature table, with the start trimmed off, to featureData - Flush the feature with endFeature(). - You should then get a feature notified to the SeqIOListener. The code isn't as elegant as it could be, mainly because I made the minimum set of changes necessary to make it all work int the `new IO' world. As to the `source' issue, that being hard-coded is a mistake. Feel free to offer a way to change this, either by using a setFeatureSource(String) method, or adding an extra parameter to the constructor. Right now, FeatureTableParsers are only constructed by EmblProcessor -- so long as you keep that in sync with any changes you make. If you do change anything else, the gff.EmblToGFFFasta demo is a good test to make sure everything is still working. You might want to hack up an equivalent GenbankToGFFFasta to test your work. Thanks, Thomas. From gcox@netgenics.com Wed Jan 31 14:53:20 2001 From: gcox@netgenics.com (Cox, Greg) Date: Wed, 31 Jan 2001 09:53:20 -0500 Subject: [Biojava-l] BioJava 1.1x freeze plans Message-ID: This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_000_01C08B95.8D35B8B0 Content-Type: text/plain; charset="iso-8859-1" Thanks for the pointers Thomas, I was able to finish up the parser this morning. I don't have read-write access yet, so I've attached the files. GenbankFormat and GenbankProcessor constitute the parser, and the other two are the demo/test files. I didn't tackle the source issue in FeatureTableParser, so the gff file GenbankToGffFasta generates has embl as the source for all the features. My preference would be to set the source field in the constructor and have a setFeatureSource(String) method so that a listener could be reused with different file formats. I'm not sure there's a good use case for that though so I'd like an opinion from someone who knows the field (unlike me). Greg -----Original Message----- From: Thomas Down [mailto:td2@sanger.ac.uk] Sent: Tuesday, January 30, 2001 3:48 PM To: Cox, Greg Cc: biojava-l@biojava.org Subject: Re: [Biojava-l] BioJava 1.1x freeze plans On Tue, Jan 30, 2001 at 12:33:45PM -0500, Cox, Greg wrote: > Thomas, > I'm in the midst of revising GenbankFormat to handle the new IO > style, and I'd like to see that in the 1.1 release. Right now I'm having > trouble with features, and hope someone can help. FeatureTableParser's > documentation says it is shared between EMBL and GENBANK format, but EMBL is > hard coded as the type source. Is there any existing GENBANK feature > information? I'm leary about changing FeatureTableParser myself since I > don't know what will break. Great -- I think a lot of people will be happy to see that working again... There shouldn't be any problem taking this change before 1.1, so long as there's a working demo program to check that it's all working as expected. Yes, the FeatureTableParser was shared between Embl and Genbank in BioJava 1.0. Unless you know of some subtle differences between Embl and Genbank feature tables (I've always thought they were the same, but that said I've very rarely worked with Genbank files myself), it ought to be possible to do a new GenbankParser which also uses FeatureTableParser. I presume you've seen the lifecycle: - create a FeatureTableParser, pointing it at the appropriate SeqIOListener. - When you see the start of a feature, call startFeature passing in the feature type. - Pass each line of feature table, with the start trimmed off, to featureData - Flush the feature with endFeature(). - You should then get a feature notified to the SeqIOListener. The code isn't as elegant as it could be, mainly because I made the minimum set of changes necessary to make it all work int the `new IO' world. As to the `source' issue, that being hard-coded is a mistake. Feel free to offer a way to change this, either by using a setFeatureSource(String) method, or adding an extra parameter to the constructor. Right now, FeatureTableParsers are only constructed by EmblProcessor -- so long as you keep that in sync with any changes you make. If you do change anything else, the gff.EmblToGFFFasta demo is a good test to make sure everything is still working. You might want to hack up an equivalent GenbankToGFFFasta to test your work. Thanks, Thomas. ------_=_NextPart_000_01C08B95.8D35B8B0 Content-Type: application/octet-stream; name="GenbankParser.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="GenbankParser.zip" UEsDBBQAAAAIAFZMPyoXekjazgQAAJ4LAAAWAAAAR2VuYmFua1RvR2ZmRmFzdGEuamF2YZVWbW/b NhD+7AD5D7d8iR148rp9y0uxpKuDDFlqNC6GoegHSjpJbCRRJSk7xtD/vjuSkqUmaTEjgWTe23N3 zx29ODk8gBN45nMl1Z9iIyDFDZaqqbC2kKgUWd/ZrAtp3AlUYgcxQqYRyx2k0lgt49ZiCqJOoVKp zCR9aesUNdjCuQCLujKgMj6A67sPcIvGkPwaa9SihFUblzKBW5lgnWAEPp4pVFumzgFFHIbaSls4 XwyJ1G8y2KkWUgW1slCIDYIgWbObO2uDeNqn4j6Ftc3pYrHdbqO8biOl8wWrl5jZRemwRYWtyt7o DQm1zAsLmeK0umrQs8Ayhc9K1pbqEe8cLFmnciPTVjgPIFpbKG1cXmgwJMZJlZQU5SNr+N0rUQ4J ua64BSbq4y9JUinNnglAJaxUNdAfB+ua12j1GRPr+iCtASEr4/NnyMphdAaxVJ/J4OeSmilLWecO xhw20kjrNApVITQi990T9uXqBV+ugp0SvTQieSBzyLPs7PDg8EBWjdIWnGprZRmdnI0PpXJH/SH5 633HQfiCyOyqWJXf1cAvPxL/IARrVM13g1D5cy2qiFIOqSxOOvLUG9TcESZ8LOoHyGTJvaSuCMiE scKfeHIRQfBLy5PgeklWy2Uv9/NEOhkK22r0JIHz1ev9oAYoNM6VqmlqhEXiqdoyCzQKx7cxlnkn 3mppsQPlPLrAjGOkQZDGgT8YPD2Ptf9yzsPxmkvTRVmr6yxbukxzf7J0CfHJu9YyUehxvnCGI8dX wtCEFCg2kgZMZRnvkbdVXA5c0tj9JSxVZQsrlajkgXeCha3gWqC1O6japACfUF6qmHaOxqYUVGLy dozk7thvleMA73g/fN1oXmvMqZmPHcf90kpKYczTNA8P/j08mAQd+m7psVEy5Zmrp/e0ymjuPn4C oXMzo4ZqtTXw9jHBhmebTNl8IrMpK0Ql1jmB++kCfpvxuRNOnBXUlHVvOD3iRvy/qh/NztjdV+Ys OdW7fYTFgvA+oCccmRpAoakNxIMcLWAXlrgdK3JobNtQjo4ztajQOC8u6BDAhQPNry69j7988hAm e3jP6r0a6RH6Z7V+dVodfiY817qjO0HMMie8D1O2dBsV8vD07oK6P5uGsFdkihrT9+STrq88PL3F WDh1BhMW3NRNa6njKKog6/AOJNNBfWazEK9DeNXKkuyWIrFK78DwyxjnSquE7i2lo6A0veeFhd94 iJaXb9bv3v8T/F+WTSFiaqTgF/L4x93lWqnSRNRdeu/yvncrdiU0X9o6PC+8Fav6k+mRVQ9YHw2r 75fbizXPRjV3TB1XnOjZl2jP233Hh/JpT5whAmLJID7trb95gWm/x7re9ceDtq1oRG045e/DUIPj JygCLWdPumguDW9yWu7hzccei6dD7LdKNaDo8qCxo/3VXwvhIs8HGzzqbBy08S3yzTXzVLO7S7wm X2F7xQ7eDSUsiFns9gYu9nUaMTuMxLybpnlHl7lnbZ/dtuB5ZV9RIcwdPlLL3WoLm6ePy/GoUk6z JrXuvGPIJHAocg3tpaQ/h76NQ4JQs7rOTPpe8PXNAzS29xwJyl/DkpxMEmGpG9M1r18R0wayw6VM rlxE+gm01mIP9H5Hv/WqCB+lnb7qVy7/u837H1BLAwQUAAAACACzXD4qAKroJf0BAABFBAAAEAAA AFRlc3RHZW5iYW5rLmphdmGFVMGO2kAMPQeJf5hySroo6l6LOLBtU3Ghq4U9VKs9OMEkU5KZMOMs oKr/Xk8yKQGprQTx4Gf7PY8dasj2kGNg8TAbj8YjWdXakPgBbxBLHb8fOrXJ41TqFks9+BfInqtU l/+MwMP/4D/8dZOWMhNZCdaKDVr6iioFtRc/x6PAg5aA2LxpuRUVSBWuyUiVi5dXASa3EUe66IDM 2Zn2HMhd6MC4RJVTId7Ng/uoBTo4oMLoo1B4FF9OGdYktQonzxY/XqnIO5vIEifRrM385WSzdb4h LuZtNXdsmV8+vPqMNR4aVBkm2lRAIve2i/dMnS/0GQ/NbocGt08IWzQi97bLuAbDrp2AkWCp6ob4 chAqD/aKBkg40BxFNxIfGllyXgIZaXMWNnUnMb9w9Hofjc7QWm1iHxuuedwl3hSKk8Wnzben755m UdYFpEgC3IH7+bxabLQubZwj8bnvf93u2CMYy10bb+ddlgvtPOGE9B7V5KaHJaEBliR40ZZD7cHV 1fhLnfbzmPZE06BrO5r5SR8LN1NXLS7ArvDEc7rapZ7ZMbLMNlJxWO/v2+K+LGEV64bimleYSuXK uo5WUHGYuBMTwRz8vHNl4kw3ihIEagxaj+/8z8FC+kcGlBUi3LjVhpRXkqLLC+Ep18R/CxsDF1Ve FJ4khfedz1XjL39+A1BLAwQUAAAACAAySj8qqDaseYYEAACBCwAAFQAAAEdlbmJhbmtQcm9jZXNz b3IuamF2YYVWTVPjRhA9myr+Q68PuzJxZHLJAYpUgAWWLAEKs1XJiRpLbWtgpNHOjGy0Kf57ej4k y1+sy2VLM92v+73uHml0sL8HB7Dlc8blX2zOIMU5ClnmWBhIZIrW3vk8Zly7FchZDROEqUIUNaRc G8UnlcEUWJFCLlM+5XRTFSkqMJmDAIMq1yCndgGubr/BDWpN+1dYoGIC7quJ4Anc8ASLBGPw8XQm K5E6AIrYDbXgJnNYNiUyv55CLStIJRTSQMbmCIz2ynrovDXiUUvFfTJjyqPRaLFYxLOiiqWajay5 wKkZCZdbnJlctE7ntKn4LDMwlZZWowb9ZyhSeJa8MKTHpHZp8SLlc55WzCEAq0wmlXa8UGMgZkkJ IkV8eAF/eiPikBB0bkug4zb+Je3kUllkSiBnhssC6GuDNcUrlXzGxLg6cKOB8Vx7/jZl6XJ0DhMu n8nhV0HF5IIXM5fGEOZcc+MsMpkjlGzmq8fMbvUCllOwMaKL/b2SJS8EQLFnrRH9xxq/x1weWxOe l1IZcFuV4SI+OF5dJPODruU2rI7PxnadT6R4z8Kjjw48tzFZCWptLqhfYZHxJKNeKlJqCNIgNB9p VdD9VMmceowaeMKKF+uzHJamlFcKZ9Q5r0tNfJsngmnduN4rmVDDkTm+GixSDWP8XtkxOKu4oCG6 dOns7/23v9cLANpQAyQUtKDZGVNiVML7h7v7i4fHf5+uLm7PTm+/Pp2en1+Mx9d3t2M4gf7MR3ti iY1G3aP7jnvPke/ZFmOJkaoOvBeKlTSBIRWY+Fy07VS2kboD8Cib3HuO/FrqXoImpNPddfwGeW8x pHXFmeA/2MQK3bNi9ErF54wqst2HDjOBM9oP955uk0dYjHb40hB8Du4D6+Xi9dYQSdeO3bE1eVsJ sgZO4/aCa2tRB16hqVQBBS42FI7WQsdboQZNDiGPRqBLZISMj1a8e6bsyTv1S/q4YxZq84XpbIym MfmKtSamRSVE1/iGjgxYdtNxU5TlknUiKqdKsdpaRy69kJkXaIPmumJrdXARdFUS2e6Oo90wCmE3 OUf22N7MYS55CjR4TehoQFGVXGhwbhevCZb2uG3C8ylES5Kx5j+syx9w2KlkmEkCPoHI3ww6YsUz NNGhT7tH1w2RaEBHmrllOUY83bX97eE66lOfHDXDOQqzfdSHX2CHH0tbfiQ26Wfq6J0TY9hJdtlU a5grmm2XdVvYu4l7Sr0gTXW4njNR4U9kN6pe6mtr0NQ75kWoNZXh40f4EBF0TFGZ0FH/8rE/GLjK BNe2T2z+raPXLEwvwW9idCFCeQPSDT0QqM6ORGyk32wgu6lawzjJmDq11YcPJ/AJPnngBrk3Gvl3 H/qyJoCpS/tUQvsu1FvDXKEfsFqw97iGknaNaP6Vacy6Oetqoj2rwyH89vsgppu8OW5aoBYnXHxm hu2AIYyl5PSLQmNX4J83r2sf3zcdobtVa7u5KV4rS2cQCTpaQXlbZuV+EmboaRjRO1bbkfSg7oy6 a1p34lgbpegQw9ch9C+v//n7or9yIr/9D1BLAwQUAAAACAAYSz8qbhWSZU0MAABsJwAAEgAAAEdl bmJhbmtGb3JtYXQuamF2Yd1abXMbtxH+fJnRf0D0ISZt5hQn0y+RlYaSaYWtIqkSnUyayXTAIyjC uhfmgJPMNPnv3RcAhztSst20mU7lscgDFovFYvfZBzgdPN37SDxN8EeIY139Rd5JsVB3Kq/WhSqt yKqFQhH8L2YrbRJsEYXciLlKlrVS+UYstLG1njdWLYQsF6KoFnqp1SJpyoWqhV2RCmFVXRhRLRNo SE7PXydnyhjoP1WlqmUuLpt5rjNxpjNVZipNcDphVlWTL2j8XHVmutd2hbrJxlSI6VJsqkYsqqSs bLKSd0pI6FtvRjTaKPWlX0mSrKxdf3lwcH9/n96UTVrVNwcomqulPcjJrHRlizws/QQ6a32zsmJZ 4YrAMnIEfK5UvhBvKl1acMV8QybpcqHv9KKRpEHIxq6q2qQJuFAZ5RaFC8phQeAoXYqvWQjsz0B1 gd43aZj/FfQUVa1AEgwopNVVmVQlTeb3bV1Xb1RmaQu0NULqwvDa0eSKbKQBc129gQGf5kkhda7L mwTNGIk7bbSl3VlVhRJrecMbJ+1uzzk95D0vAF/w31pmtzA8ga4gBp+pUT+nujpEEV2sq9oK6oKe p4fdpsbqnBpDc6wLe008pj/RI11mU8yr/FEJsJKnPnga/A9OF7WSGNEYAxC1x7K8FUsN8QI7e1KV d6rGwFzWVUF+rmCPjYWgErrCDfCJUKp7DJT7qr4F57P8CwynrybFPD/Tt4qne3FAjSEIfIjMYHuk ES+r+7LXLhfJ9yrPVtQ8XizAGm/nikyn+AFbaJdhmQ2mGkQMpAzFVIoRKsYnJ5Pr6+nFuRvF6Stv MNxBEsI7yxtQnibXFoISwq0UXll6o+y5LNRgmHaMO63VTXJSvQ1BsuZ0z3JpDFo5Byudm2FbckUZ IK6dWu4ZwXOtZa5/kfMcnPnPvY8S2qIEZroCWyHqgyXtRpi1ygiR/AY2Bh2PXdcUDBDrNUIRpA7r 8tOKVzKDJW4wuSChYcmCPBTmQIW4/KIxFhMavrq1sCLO1pQeuOXrWtmmLsW8qnIlSzGrGxi2RGtq AhQJLobv7RwubTHSDsVS5kaxJhK71+4RnJo4n3rVaJxfyQC6k+S4WS5hmsUV+4HdMaIu9sQlOwJy hL+5PvXz9OIMsQqgmkELvgyxz67q6t6IaZ6rG5mzksnbTK0xnEZietE+JKQyPMNo3L/E+QsSyKq3 UHLsW3FEOdLtGLQ2tRYcooJrqAmwnYBkyj8rWfiVuE9Q2eQ59Xv3rKQZs6/Ddh8JC9tBUn6O1FhZ 2+BGnvJ+BZshBgOcEwaxH1P8OIOWwXAoPuYJyUe0zAT2mORZofke6tdg/+Bgf0gyTgikBt7kWAX0 CyEODsQE0L1aCgYxsZBWcnfiRqVZXhlvZtscrz9JfsMExC/O8ELWt4PP/Rg0NFrRYCiOjsSnz70d TvFO71F0tpPgh+J4jUYG3UbZYGgwKfhdlYue13Eo5c723NzvpoQQSiFhMyjktB3oddbgZqGgpRiL 4nOwf1krSNYG0lCRlxNDkcR4Pzk/Hp//dZ/0sJqAPESMPDZ67EJ4nFqo58oQI7mvtUWo3QB7QPCp GJpoBsaHKIPvKr3gEcEFwcuAC5BKEPKWAz2pTCcTL7YyrF3uVVNaXahozSeyfGIFTYU0xC3T41aa hgX/FtfDSZnJtWlyaXEJ+LsxyMkwLWh/kVVgcDIIy8RBcEajXWITorUc513lDSuIaCtIp3A4jOCK sK71HZiULHUJtBLNA4+Cu8Q3k/HLyVVyJJ4fPib2ajKevb6aXIuj5PNHBa8nf3s9OT+ZgOAXkaDY EvxucoXl9B9nk/PT2TeQJ8+fPyo/G59Gsp8TFQlmgECCso2JjdsN3/EsXViMHmI1CPIOXLrqGWNl hkkFgbOjj7nCDGjCkdjf3xbg2tOKzRDtGeljAc71YPTOynPYzT/YfVhPg5UakgoIhJW3ylB++RHE ircLvqcIrKfDQjo1G8QlCXbc3NUFGQ1JgNXaYY/nGBjmfT1hSeELDAeY0EsghitVwiA8VwDQAatQ QaVatEhRVxboPlO8uE5ixnfDoWf3rpoemTRsYUMbx5aN26hxXcsNCjpEZhEKRpDg/Go7gvOPYv2H HoNZe6hPPStj/VHgHrXBnZLjOawHHUrQw+dL5zwfEiUebtCZuFmOXWWOfkBtXdfqTlewIpQ0res5 IgjtkafhqEIBNC046BDpqRHsyYndozLSjVDViSeH1V1CBJqhteT9B36i6hoCusqypjYUZDsC6lH6 1VEY8UuhWdwlOqvqsEydwpG6HeHpRiTDaw4HgjaJZL5eyblCNoz2Nj5mffCT+2d+HyDqnX93BDZW QREX8ojpxSWv68bRA97wYb2Th3nMd2yMqUoIbN/LLIODUt5hbR7D0WkQuAWzHbFzhour6en0fLd+ X0g+QL8f2xoXKXY+e6WIzWxzoJ16vBHbesCOoGPUKR2Pa2Q82Nb3DZWAHWZt5S0XgTjL1iGXpWB7 ILeaglMDI9K6iHV0iTVRrGmoEnhcg6wEXsK+4Z7KlyV6hDPelSqqO5gDCI1VZi3pkOziOK8yOisD oS7mqjZUWlbwi7M/HNuI/jDN8zhcIczgNQF8ZWXu2sGX3L1tjPh/Se2o+Dl37PAKM2JU7r23y0GM EswtYozwcRrBxKhLe8Lk7z677jm4yFay/vEnwHA+6lGA2OoEWqkYuuRE1ubKEaQ8yH3WbcZjGzdi szs+RgNe8ARprsobu4pShkQHj4iKTz4hwSQZDKjjx1b2J8zCJ+LJUPz6qxMCMbRdAsDWqTYv9Y22 2+OGw+6pFA6eeGWAZdOKnPm9oLzg8HepwMLPnrWaGNH4XIbgEK3jq6PtNfv55rBnt2EsfUZujJQ8 Yy7fnsiDWNdN4CURrRIEfsLzNfqmM7GzHfq7s4MDTiEbEFdu6GYcQITufjrpTqIhxtLMO9qwh0eR 5aM2Lj6Nmt1BtxNKHYveAyZD3jmIbBFS2yemh30AdmNW00FEyP6FgnOJIn1z5VVB9t8rhhxfeOhm 0NFr1sSlDtvdddnx+HoiTi5en8+C9sCqBELRf4ccPYBKsJpddJqdGONJXD/71GM399hzoAHhcrJS 2a0IhBOWjLww3/T8j9J6uU0XBP502MIDtADnepXDFtzJvMG97hc3d1uNRwRHhKsa9uUYLPHjAXNl eYMkWJeZXmA8jwS95VjJ9VqVxrmN8FkWNAt+n3x7fOZ10PT00DkIvprtH3ZbHzr3sQuaOReAwZ+G PXLRegJmu7Du7nMUgh0qPy0+quScS7+PdLwzm7rMYRzuzFve8WAuwdao7VQCj0NQxRX5fyY9OuU2 8uiHZceueD+7OHndZd+wy2gwdQRHSr7MB4KTSYMuzCQdui0d4KQujYMhGg9UrTHAWPUvECdFlaus QXqzWcOjfzGCb+oMHRv8FQEgedAAMJ9jzeN3mkz80kfTkV0xq25VCdNyXNCT6QR9EIiisZM57bi0 hIyhr4O+3GO5tD146OjHg7Z3Mvd6+vfJh+Tu751v9sMlzCci6NTm0L1qFvwq+fLq4tLvTMtHnszX T36vmX/UIl9Ov5viVSAv9Nudi/tDDPn25fiDkPkht8Vnv+2sdhef/bx2zR+S1fPKrmJY8Cr4nsyn 7unUUdH3d4Q38d+rUjQoSdoL21F8efusd/M7TGFUESIOTwdMT/0NFbDbLY1bWqChY6ajuIMQAA6N 8W2GLuGbe3aHl9b43tzOqt4wZ7KzeDnod8fbfTr9svc666Et6O7B6ZTz4bIyRs+BI7V/IfF6+vLP vRG8Nc5PydYObRkY1vuFd/xv/cgVg5V09QwmYEjmkKUyAo/4visJxR7q9PtGWNJz+mdxhAw73u2t EJfWuTvvB1+kZxdXQtNvlVonxOHoyIb8gq45d7A1CiUWBfq5D1H2PtP12ZMM96zRsYDndK+8wgu+ vf88qdmiKp29QZvfQUzE4OPgkBSOdjI3g30PXxiiqDAsDf/Mht87JdGLS7kILy4ht9aqthuPE0H3 qJfCtuKN3q5G4W3Ke4DT/v6DG+P/7IDeR4LPKCw9vIo4sN019w/KjNAhstz4e2x/8I+wqT3iJrJW +CpR8r3A1na4t+5JJ9HY+sTzRtoE/3pet3KQC+2bZXchkz98GYMnngGCq6Y7F/h4EdkMz8+edd7L D/IfdbgO2IvQq2tC+NOA/v2E++U8HA063Gtfnf4LUEsBAhQAFAAAAAgAVkw/Khd6SNrOBAAAngsA ABYAAAAAAAAAAQAgALaBAAAAAEdlbmJhbmtUb0dmZkZhc3RhLmphdmFQSwECFAAUAAAACACzXD4q AKroJf0BAABFBAAAEAAAAAAAAAABACAAtoECBQAAVGVzdEdlbmJhbmsuamF2YVBLAQIUABQAAAAI ADJKPyqoNqx5hgQAAIELAAAVAAAAAAAAAAEAIAC2gS0HAABHZW5iYW5rUHJvY2Vzc29yLmphdmFQ SwECFAAUAAAACAAYSz8qbhWSZU0MAABsJwAAEgAAAAAAAAABACAAtoHmCwAAR2VuYmFua0Zvcm1h dC5qYXZhUEsFBgAAAAAEAAQABQEAAGMYAAAAAA== ------_=_NextPart_000_01C08B95.8D35B8B0-- From gilmanb@genome.wi.mit.edu Wed Jan 31 15:00:37 2001 From: gilmanb@genome.wi.mit.edu (Brian Gilman) Date: Wed, 31 Jan 2001 10:00:37 -0500 (EST) Subject: [Biojava-l] UML diagrams for biojava tools? In-Reply-To: Message-ID: Hello all, Are you guys doing any UML diagramming? It would be nice to have a document showing all the relevent Interfaces and their relationships. Thanks! -Brian Gilman ----------------------- Brian Gilman Software Engineer MIT/Whitehead Inst. Center for Genome Research One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA phone +1 617 252 1069 / fax +1 617 252 1902 From mrp@sanger.ac.uk Wed Jan 31 15:28:21 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Wed, 31 Jan 2001 15:28:21 +0000 Subject: [Biojava-l] UML diagrams for biojava tools? References: Message-ID: <3A782F15.4070003@sanger.ac.uk> Hi Brian, Simon Brocklehurst very kindly ran the BioJava docs through something called 'Together' and posted the result at: http://www.biojava.org/docs/uml/biojava-live/ It hasn't worked perfectly, and is slightly out of date now, but it shows what can be done. If people realy like this kind of display, then I guess we can see about improving it. Matthew Brian Gilman wrote: > Hello all, > > Are you guys doing any UML diagramming? It would be nice to have a > document showing all the relevent Interfaces and their relationships. > > Thanks! > > -Brian Gilman > > ----------------------- > Brian Gilman > Software Engineer MIT/Whitehead Inst. Center for Genome Research > One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA > phone +1 617 252 1069 / fax +1 617 252 1902 > > > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l From mrp@sanger.ac.uk Wed Jan 31 17:00:45 2001 From: mrp@sanger.ac.uk (Matthew Pocock) Date: Wed, 31 Jan 2001 17:00:45 +0000 Subject: [Biojava-l] BioJava 1.1x freeze plans References: Message-ID: <3A7844BD.8080505@sanger.ac.uk> Cheers Greg, I've commited these files to CVS - they built first time for me. You will need to do a cvs update to get the CVS copies out. Matthew From BillB@doubletwist.com Wed Jan 31 16:59:03 2001 From: BillB@doubletwist.com (Bill Bug) Date: Wed, 31 Jan 2001 08:59:03 -0800 Subject: [Biojava-l] UML diagrams for biojava tools? Message-ID: <3D82EFC06BB9D311B0940090277C086C013A0668@exchange.panbio.com> Hi Brian & Matthew, I would definitely put in a vote for UML with BioJava. UML *can* be a significant aid to accumulating requirements from around the world and expediting their incorporation into a large framework like BioJava. I had just suggested an 'open systems' UML CASE tool - ArgoUML (http://argouml.tigris.org/) - to Simon the other day. As he mentioned, there are commercial tools available - Rational being the most 'rational' choice, given their functionality & level of integration with other commonly used, SW engineering tools. Many people may even get by with some of the tools available in the Visio EE. Still, I think the ArgoUML suite is awesome and does quite a 'reasonable' job, reverse-engineering Use Case - and other diagrams - from java source & javadocs. That capability is crucial. If the tool is to be useful in the long run, the implementation & design engineers *must* be able to roll their refactoring back into the requirements diagrams. Without this capability, the critical iterative component of the SW development process can't be easily included in the UML documents. I'm not certain how many bioinformatics folks are using UML, but I'm finding it increasingly useful for complex development projects. UML helps to nurture the lines of communication between the functionality gurus defining marketplace needs & requirements and the engineers designing, implementing & testing the final product. There is a reasonably steep learning curve getting up to speed in *using* UML effectively. However, if all players in the SW engineering & marketing process learn to participate, the savings in time & wasted effort can be great. UML can help to maximize re-usability of all elements in the process - not just classes & components - but all the usage & requirements analysis documented as a part of a project. Just my $0.02. Keep up the great work on BioJava Matthew, Thomas & Simon. Cheers, Bill Bill Bug Ontological Engineer DoubleTwist "Portal to the Code" billb@doubletwist.com -----Original Message----- From: Matthew Pocock [mailto:mrp@sanger.ac.uk] Sent: Wednesday, January 31, 2001 10:28 AM To: Brian Gilman Cc: biojava-l@biojava.org Subject: Re: [Biojava-l] UML diagrams for biojava tools? Hi Brian, Simon Brocklehurst very kindly ran the BioJava docs through something called 'Together' and posted the result at: http://www.biojava.org/docs/uml/biojava-live/ It hasn't worked perfectly, and is slightly out of date now, but it shows what can be done. If people realy like this kind of display, then I guess we can see about improving it. Matthew Brian Gilman wrote: > Hello all, > > Are you guys doing any UML diagramming? It would be nice to have a > document showing all the relevent Interfaces and their relationships. > > Thanks! > > -Brian Gilman > > ----------------------- > Brian Gilman > Software Engineer MIT/Whitehead Inst. Center for Genome Research > One Kendall Square, Bldg. 300 / Cambridge, MA 02139-1561 USA > phone +1 617 252 1069 / fax +1 617 252 1902 > > > > _______________________________________________ > Biojava-l mailing list - Biojava-l@biojava.org > http://biojava.org/mailman/listinfo/biojava-l _______________________________________________ Biojava-l mailing list - Biojava-l@biojava.org http://biojava.org/mailman/listinfo/biojava-l From gcox@netgenics.com Wed Jan 31 19:08:06 2001 From: gcox@netgenics.com (Cox, Greg) Date: Wed, 31 Jan 2001 14:08:06 -0500 Subject: [Biojava-l] WinCVS and SSH Message-ID: I'm having problems convincing WinCVS and SSH to play nicely together. I followed the instructions on WinCVS' page, but I can't log in. I can login with ssh (I'm using ssh-1.2.14-win32bin) without typing a password, but when I try to login to cvs, I get, "Set the password authentication first in the preferences !" Did anyone else run across this, and how did you fix it? Greg