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>
<p>Bruce Ling wrote:
<blockquote TYPE=CITE> <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. 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 </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.
Has biojava thought about converting most of the bioperl functionality
into java?</font></font></span></blockquote>
Bruce,
<p>I'm on to this. Should have tutorial stuff for this later this
week.
<p>Simon
<br>--
<br>Simon M. Brocklehurst, Ph.D.
<br>Head of Bioinformatics & 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> </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, </p>
<p align="left"> 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.</p>
<p align="left">Thank you,</p>
<p align="left">Daniel</p>
<p align="center"><font face="Arial Black" size="5"> <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,
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. 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.</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 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"> </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
"remove" in the subject line. 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> </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; </P>
<P align=3Dleft> It was a pleasure learning about =
your=20
interests in biology from your website. 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> <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, 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. New=20
nutraceuticals and herbal formulas are being discovered, designed, =
and=20
marketed every day! 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 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> </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. 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
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
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"
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
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