From david.huen at ntlworld.com Sat Jan 3 09:32:53 2004 From: david.huen at ntlworld.com (David Huen) Date: Sat Jan 3 09:40:08 2004 Subject: [Biojava-dev] Current Alphabet design and an unintended consequence for training Message-ID: <200401031432.53811.david.huen@ntlworld.com> The current Alphabet system uses the BasisSymbol to represent both ambiguity symbols and symbols from cross product alphabets. This casues unintended consequences for training algorithms. The DistributionTrainerContext has an addCount(Distribution dist, Symbol sym, double times) method. When using cross product alphabets, it works flawlessly when it encounters AtomicSymbols from the cross-product alphabet (and these are also BasisSymbols). In the design of the DistributionTrainer interface, the equivalent method addCount(Distribution dist, AtomicSymbol sym, double times) accepts only an AtomicSymbol, which is reasonable. However, when training two-head distributions, it is not implausible for the DistributionTrainerContext.addCount() to receive Symbols that are not AtomicSymbols. The most common by far would be symbols emitted by gap states of form e.g (gap cytosine). The current implementation of the addCount method assumes that non-atomic symbols are ambiguity symbols and attempts to deal with them in that manner. Evidently it fails in the above case, indeed, it fails silently. This problem currently prevents the training of PairDistributions in which one component Distribution is a GapDistribution. There appears to be no easy way of fixing this problem at the level of DistributionTrainerContext. It is formally possible that the BasisSymbol received by addCount is truly an ambiguity symbol containing a number of symbols from the cross-product alphabet of the two-head HMM model. It is also possible that the BasisSymbol represents a single symbol comprising ambiguity symbol(s) from one or both alphabets that form the cross product alphabet. The two are evidently not equivalent and have to be dealt with differently. And resolving which it is is potentially computationally costly for an operation that is repeated very many times during training. Even if this ambiguity could be resolved at the level of DistributionTrainerContext and you knew the symbol to be one of type (gap ), that symbol cannot be passed to a DistributionTrainer that may be capable of dealing with it as the addCount method in that interface accepts only atomic symbols which something like (gap guanine) is not. Interim solutions could be:- 1) change the DistributionTrainer.addCount() to accept non-atomic symbols. DistributionTrainerContext's addCount method will leave it to the distribution trainers to sort out what to do with non-atomic symbols themselves. OR 2) add a ExtendedDistributionTrainer interface with one method addCount that can accept non-atomic symbols. DistributionTrainerContext's addCount method will check whether the symbol it receives is atomic. If it is, it will use the standard DistributionTrainer.addCount(). If not, it will determine if the trainer for that distribution implements the ExtendedDistributionTrainer interface and if so, call that interface's addCount method to leave it to deal with the symbol. If not, it will assume that the symbol is an ambiguity symbol and deal with it in the manner it does now. (2) is probably less disruptive to existing code and interfaces. It may be that the DistributionTrainer is a better place to deal with non-atomic symbols than DistributionTrainerContext since that the DT knows more about the internals of that Distribution and what it can/should handle while the DTC has to of necessity implement a one-size-fits-all approach. At Biojava 2, it may be worthwhile to revisit the Alphabet design and explicitly distinguish ambiguity symbols and BasisSymbols on the level that the former is a Set of symbols, while the latter is a List of Symbols. Regards, David Huen From markjschreiber at hotmail.com Sat Jan 3 04:13:21 2004 From: markjschreiber at hotmail.com (Mark Schreiber) Date: Sat Jan 3 12:17:31 2004 Subject: [Biojava-dev] DP memory leak Message-ID: An HTML attachment was scrubbed... URL: http://portal.open-bio.org/pipermail/biojava-dev/attachments/20040103/99862e81/attachment.htm From markjschreiber at hotmail.com Sun Jan 4 08:30:48 2004 From: markjschreiber at hotmail.com (mark schreiber) Date: Sun Jan 4 08:37:19 2004 Subject: [Biojava-dev] Current Alphabet design and an unintended consequencefor training In-Reply-To: <200401031432.53811.david.huen@ntlworld.com> Message-ID: David, I think you may be able to use solution 1. As Symbol is a superclass (interface) of AtomicSymbol you won't be breaking any API. - Mark > -----Original Message----- > From: biojava-dev-bounces@portal.open-bio.org > [mailto:biojava-dev-bounces@portal.open-bio.org] On Behalf Of > David Huen > Sent: Saturday, 3 January 2004 10:33 p.m. > To: biojava-dev@biojava.org > Subject: [Biojava-dev] Current Alphabet design and an > unintended consequencefor training > > The current Alphabet system uses the BasisSymbol to represent > both ambiguity symbols and symbols from cross product > alphabets. This casues unintended consequences for training > algorithms. > > The DistributionTrainerContext has an addCount(Distribution > dist, Symbol sym, double times) method. When using cross > product alphabets, it works flawlessly when it encounters > AtomicSymbols from the cross-product alphabet (and these are > also BasisSymbols). In the design of the DistributionTrainer > interface, the equivalent method addCount(Distribution dist, > AtomicSymbol sym, double times) accepts only an AtomicSymbol, > which is reasonable. > > However, when training two-head distributions, it is not > implausible for the > DistributionTrainerContext.addCount() to receive Symbols that > are not AtomicSymbols. The most common by far would be > symbols emitted by gap states of form e.g (gap cytosine). > The current implementation of the addCount method assumes > that non-atomic symbols are ambiguity symbols and attempts to > deal with them in that manner. Evidently it fails in the > above case, indeed, it fails silently. This problem > currently prevents the training of PairDistributions in which > one component Distribution is a GapDistribution. > > There appears to be no easy way of fixing this problem at the > level of > DistributionTrainerContext. It is formally possible that the > BasisSymbol received by addCount is truly an ambiguity symbol > containing a number of symbols from the cross-product > alphabet of the two-head HMM model. It is also possible that > the BasisSymbol represents a single symbol comprising > ambiguity symbol(s) from one or both alphabets that form the > cross product alphabet. The two are evidently not equivalent > and have to be dealt with differently. And resolving which > it is is potentially computationally costly for an operation > that is repeated very many times during training. > > Even if this ambiguity could be resolved at the level of > DistributionTrainerContext and you knew the symbol to be one > of type (gap ), that symbol cannot be passed > to a DistributionTrainer that may be capable of dealing with > it as the addCount method in that interface accepts only > atomic symbols which something like (gap guanine) is not. > > Interim solutions could be:- > 1) change the DistributionTrainer.addCount() to accept > non-atomic symbols. > DistributionTrainerContext's addCount method will leave it to > the distribution trainers to sort out what to do with > non-atomic symbols themselves. > OR > 2) add a ExtendedDistributionTrainer interface with one > method addCount that can accept non-atomic symbols. > DistributionTrainerContext's addCount method will check > whether the symbol it receives is atomic. If it is, it will > use the standard DistributionTrainer.addCount(). If not, it > will determine if the trainer for that distribution > implements the ExtendedDistributionTrainer interface and if > so, call that interface's addCount method to leave it to deal > with the symbol. If not, it will assume that the symbol is > an ambiguity symbol and deal with it in the manner it does now. > > (2) is probably less disruptive to existing code and > interfaces. It may be that the DistributionTrainer is a > better place to deal with non-atomic symbols than > DistributionTrainerContext since that the DT knows more about > the internals of that Distribution and what it can/should > handle while the DTC has to of necessity implement a > one-size-fits-all approach. > > At Biojava 2, it may be worthwhile to revisit the Alphabet > design and explicitly distinguish ambiguity symbols and > BasisSymbols on the level that the former is a Set of > symbols, while the latter is a List of Symbols. > > Regards, > David Huen > > > > > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From david.huen at ntlworld.com Sun Jan 4 16:46:04 2004 From: david.huen at ntlworld.com (David Huen) Date: Sun Jan 4 16:53:14 2004 Subject: [Biojava-dev] In which the Multihead DP traverses MagicalState repeatedly Message-ID: <200401042146.04716.david.huen@ntlworld.com> With some combinations of parameters (rather poor ones for the sequences to aligned by Viterbi), our twohead DP implementation can generate a StatePath that traverses the magicalState on multiple occasions. After investigating it at length, I think it comes about comes about because the EmissionCache treats the MagicalState as an EmissionState with advance (0, 0) and a finite probability. However, traversal through the MagicalState should be explicitly forbidden in the Viterbi statepath. I have implemented fixes in both LightPairDPCursor and EmissionCache to set the probability score of the MagicalState to -infinity at all points in the DP matrix other than at the origin and bottom right corner. This seems to have fixed this problem within my dataset. I have also retrofitted an equivalent fix into AbstractMatrixPairDPCursor but I am insufficiently familiar with that code to be certain of it being correct. I don't know if there are consequences for DPCompiler. Anyway, I have committed the fixes. Incidentally, if you have been running 2-head DPs with the current code and do not usually examine the generated StatePaths, you may wish to repeat some of those runs and compare the results. The ability to traverse the MagicalState does create amazing opportunities for the model to go where no model has ever been before :-) Regards, David Huen From david.huen at ntlworld.com Sun Jan 4 17:13:36 2004 From: david.huen at ntlworld.com (David Huen) Date: Sun Jan 4 17:20:43 2004 Subject: [Biojava-dev] Extensions to DP framework to permit 2-head training Message-ID: <200401042213.36593.david.huen@ntlworld.com> I have written a working Viterbi trainer that is capable of 1 and 2 head training and hope to commit to CVS. The current API does not permit 2-head training and will need changes to accomodate this. I propose the following changes to permit it:- a) introduction of a TrainingSet interface: In 2-head training, pairs of sequences need to be available. I have generalised it into a means of supplying n sequences per case so we can deal with n-head training when 20 gazillion Hz processors with 5 bazillion byte RAM become available. public interface TrainingSet { public interface Iterator { /** * get next group of sequences to train the model on. */ public Sequence[] next(); /** * any further training sequence groups? */ public boolean hasNext(); } /** * get an iterator for the cases supplied by this TrainingSet. */ public Iterator getCases(); } b) changes to TrainingAlgorithm interface:- The current train method takes a SequenceDB which only works for 1-head training. I propose a further method that takes a TrainingSet and deprecating the current method. This change will break code that derives from AbstractTrainer. But I think I can cursorily patch up the AbstractTrainer and current BaumWelch code to add the new call. I do not propose extending the BW code to handling 2-D training at this stage. c) changes to AbstractTrainer class:- AbstractTrainer supplies a protected abstract double singleSequenceIteration(ModelTrainer trainer, SymbolList symList) I propose changing it to:- protected abstract double singleSequenceIteration(ModelTrainer trainer, SymbolList [] symList) Perhaps to avoid breaking too much, I should create a NewAbstractTrainer class with the new method and derive my ViterbiTrainer from it instead Comments are requested. Regards, David Huen From benjamins at Biomax.de Mon Jan 5 08:15:02 2004 From: benjamins at Biomax.de (Benjamin Schuster-Boeckler) Date: Mon Jan 5 08:22:13 2004 Subject: [Biojava-dev] Why isn't SimpleAnnotation in org.biojava.bio.impl ? Message-ID: <3FF96356.5040404@Biomax.de> I wondered because generally I thought all implementing classes should go into a dedicated impl directory... I guess this is only for backward compatibility then?! Greetings, Benjamin Schuster-B?ckler From thomas at derkholm.net Mon Jan 5 09:18:04 2004 From: thomas at derkholm.net (Thomas Down) Date: Mon Jan 5 08:35:08 2004 Subject: [Biojava-dev] Why isn't SimpleAnnotation in org.biojava.bio.impl ? In-Reply-To: <3FF96356.5040404@Biomax.de> References: <3FF96356.5040404@Biomax.de> Message-ID: <20040105141804.GA22554@firechild> Once upon a time, Benjamin Schuster-Boeckler wrote: > I wondered because generally I thought all implementing classes should > go into a dedicated impl directory... I guess this is only for backward > compatibility then?! We like the idea of keeping implementations separate from interfaces using impl packages, but unfortunately we didn't think of this when we first started BioJava. The Annotation interface (and SimpleAnnotation) go right back to pre-1.0 versions of BioJava. There has been a certain amount of discussion about doing some major redesign and refactoring to produce a "BioJava 2.0" -- that's probably the best time to make an interface/implementation split universal. Thomas. From thomas at derkholm.net Tue Jan 6 08:55:05 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 6 08:12:08 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: <3FE6DE38.1090000@yahoo.co.uk> References: <3FE1C160.2040906@nrc-cnrc.gc.ca> <3FE32525.5000002@sanger.ac.uk> <3FE6DE38.1090000@yahoo.co.uk> Message-ID: <20040106135504.GD23174@firechild> Did this problem ever get fixed? I've got a DP application leaking pretty badly right now. If the answer is no, would anyone object to me implementing the weak-reference solution? (which might require a little bit of magic so that the `well known' alphabets don't get unloaded immediately after BJ initializes. *sigh*). Thomas. Once upon a time, Matthew Pocock wrote: > Hi, > > Lachlan James Coin wrote: > > >Hi, > > > >I came across a bit of a memory leak while using the dp code. The > >problem is that AlphabetManager keeps a reference to every alphabet > >created, including StateAlphabetcreated when using the dp package. I > >had extended the EmissionState class in such a way that the instances > >were of a non-trivial size. I am also creating (one after the other) > >a lot of different state alphabets. The result was that I ran out of > >memory farily quickly. > > Hehe. That's an unforseen use-case bug. > > > > >One possible fix I thought of was to add "deregisterAlphabet(name)" > >method to AlphabetManager, and to call this from the finalize mehod of > >SimpleMarkovModel, so that when the garbage collector thinks it can > >clear the markov model the statealphabet is removed from the > >AlphabetManager registry and can then also be garbage collected. > >Also, it would be necessary to make alphabetToIndex a WeakHashMap. > > This may work - but it adds API. > > > > >Any other suggestions? Can I make these changes? > > How transparent can we make this? How easy would it be for alphabets to > be dropped automatically when not needed any more? I guess we don't want > to drop DNA & friends :) > > > > >Thanks, > > > >Lachlan > > > Matthew > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev From lc1 at sanger.ac.uk Tue Jan 6 08:13:27 2004 From: lc1 at sanger.ac.uk (Lachlan James Coin) Date: Tue Jan 6 08:20:31 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: <20040106135504.GD23174@firechild> References: <3FE1C160.2040906@nrc-cnrc.gc.ca> <3FE32525.5000002@sanger.ac.uk> <3FE6DE38.1090000@yahoo.co.uk> <20040106135504.GD23174@firechild> Message-ID: <3FFAB477.4020501@sanger.ac.uk> I wasn't sure if there was enough consensus to commit my changes, so I haven't fixed anything yet: - adding a deregisterAlphabet(name) method to AlphabetManager and calling this from finalize in SimpleMarkovModel - making alphabetToIndex a WeakHashMap (I'm not 100% sure that this is OK with regard to standard alphabets) Lachlan Thomas Down wrote: >Did this problem ever get fixed? I've got a DP application >leaking pretty badly right now. > >If the answer is no, would anyone object to me implementing >the weak-reference solution? (which might require a little >bit of magic so that the `well known' alphabets don't get >unloaded immediately after BJ initializes. *sigh*). > > Thomas. > >Once upon a time, Matthew Pocock wrote: > > >>Hi, >> >>Lachlan James Coin wrote: >> >> >> >>>Hi, >>> >>>I came across a bit of a memory leak while using the dp code. The >>>problem is that AlphabetManager keeps a reference to every alphabet >>>created, including StateAlphabetcreated when using the dp package. I >>>had extended the EmissionState class in such a way that the instances >>>were of a non-trivial size. I am also creating (one after the other) >>>a lot of different state alphabets. The result was that I ran out of >>>memory farily quickly. >>> >>> >>Hehe. That's an unforseen use-case bug. >> >> >> >>>One possible fix I thought of was to add "deregisterAlphabet(name)" >>>method to AlphabetManager, and to call this from the finalize mehod of >>>SimpleMarkovModel, so that when the garbage collector thinks it can >>>clear the markov model the statealphabet is removed from the >>>AlphabetManager registry and can then also be garbage collected. >>>Also, it would be necessary to make alphabetToIndex a WeakHashMap. >>> >>> >>This may work - but it adds API. >> >> >> >>>Any other suggestions? Can I make these changes? >>> >>> >>How transparent can we make this? How easy would it be for alphabets to >>be dropped automatically when not needed any more? I guess we don't want >>to drop DNA & friends :) >> >> >> >>>Thanks, >>> >>>Lachlan >>> >>> >>> >>Matthew >> >>_______________________________________________ >>biojava-dev mailing list >>biojava-dev@biojava.org >>http://biojava.org/mailman/listinfo/biojava-dev >> >> > > > From thomas at derkholm.net Tue Jan 6 09:36:49 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 6 08:53:53 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: <3FFAB477.4020501@sanger.ac.uk> References: <3FE1C160.2040906@nrc-cnrc.gc.ca> <3FE32525.5000002@sanger.ac.uk> <3FE6DE38.1090000@yahoo.co.uk> <20040106135504.GD23174@firechild> <3FFAB477.4020501@sanger.ac.uk> Message-ID: <20040106143649.GE23174@firechild> Once upon a time, Lachlan James Coin wrote: > I wasn't sure if there was enough consensus to commit my changes, so I > haven't fixed anything yet: > - adding a deregisterAlphabet(name) method to AlphabetManager and > calling this from finalize in SimpleMarkovModel I'm not a big finalize fan, but I guess this makes sense. > - making alphabetToIndex a WeakHashMap (I'm not 100% sure that this is > OK with regard to standard alphabets) Does this actually help? The AlphabetIndex implementations keep hard references to their corresponding Alphabets. I thought WeakHashMap still kept hard references to values until their keys are enqueued, so I don't see how an Alphabet can ever be collected. Or am I missing something? Thomas. From lc1 at sanger.ac.uk Tue Jan 6 08:54:57 2004 From: lc1 at sanger.ac.uk (Lachlan James Coin) Date: Tue Jan 6 09:02:00 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: <20040106143649.GE23174@firechild> References: <3FE1C160.2040906@nrc-cnrc.gc.ca> <3FE32525.5000002@sanger.ac.uk> <3FE6DE38.1090000@yahoo.co.uk> <20040106135504.GD23174@firechild> <3FFAB477.4020501@sanger.ac.uk> <20040106143649.GE23174@firechild> Message-ID: <3FFABE31.7000706@sanger.ac.uk> OK - good point. I don't really understand the AlphabetManager code that well. Can we put something in the deregisterAlphabet method that will take care of this? Lachlan Thomas Down wrote: >Once upon a time, Lachlan James Coin wrote: > > >>I wasn't sure if there was enough consensus to commit my changes, so I >>haven't fixed anything yet: >>- adding a deregisterAlphabet(name) method to AlphabetManager and >>calling this from finalize in SimpleMarkovModel >> >> > >I'm not a big finalize fan, but I guess this makes sense. > > > >>- making alphabetToIndex a WeakHashMap (I'm not 100% sure that this is >>OK with regard to standard alphabets) >> >> > >Does this actually help? The AlphabetIndex implementations keep >hard references to their corresponding Alphabets. I thought >WeakHashMap still kept hard references to values until their keys >are enqueued, so I don't see how an Alphabet can ever be collected. > >Or am I missing something? > > Thomas. > > > From thomas at derkholm.net Tue Jan 6 10:29:57 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 6 09:47:00 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: <20040106143649.GE23174@firechild> References: <3FE1C160.2040906@nrc-cnrc.gc.ca> <3FE32525.5000002@sanger.ac.uk> <3FE6DE38.1090000@yahoo.co.uk> <20040106135504.GD23174@firechild> <3FFAB477.4020501@sanger.ac.uk> <20040106143649.GE23174@firechild> Message-ID: <20040106152957.GB23331@firechild> Okay, I've got this working now by making LinearAlphabetIndex keep a WeakReference to its Alphabet. Thomas. Once upon a time, Thomas Down wrote: > Once upon a time, Lachlan James Coin wrote: > > I wasn't sure if there was enough consensus to commit my changes, so I > > haven't fixed anything yet: > > - adding a deregisterAlphabet(name) method to AlphabetManager and > > calling this from finalize in SimpleMarkovModel > > I'm not a big finalize fan, but I guess this makes sense. > > > - making alphabetToIndex a WeakHashMap (I'm not 100% sure that this is > > OK with regard to standard alphabets) > > Does this actually help? The AlphabetIndex implementations keep > hard references to their corresponding Alphabets. I thought > WeakHashMap still kept hard references to values until their keys > are enqueued, so I don't see how an Alphabet can ever be collected. > > Or am I missing something? > > Thomas. From mark.schreiber at group.novartis.com Tue Jan 6 20:19:53 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Tue Jan 6 20:24:02 2004 Subject: [Biojava-dev] DP memory leak Message-ID: Hi - Does this Alphabet unloading do anything to PhredAlphabet that is created and registered by the PhredTools class or does it only deal with DP generated Alphas? General question: Is there any reason why the DP generated Alpha needs to be registered with the AlphabetManager? Presumably not registering would prevent memory leaks? Also, there is currently no way to deregister an Alphabet from AlphabetManager. Adding that functionality may be useful (even if not needed for this case). Might be good to allow exception throwing if people try to unload something that shouldn't be. For BioJava2 it might be good to allow change veto exceptions or similar to the register and deregister methods. The current registerAlphabet method simply overwrites the previous object associated with that name. - Mark Mark Schreiber Principal Scientist (Bioinformatics) Novartis Institute for Tropical Diseases (NITD) 1 Science Park Road #04-14 The Capricorn Singapore 117528 phone +65 6722 2973 fax +65 6722 2910 From thomas at derkholm.net Wed Jan 7 05:57:41 2004 From: thomas at derkholm.net (Thomas Down) Date: Wed Jan 7 05:15:26 2004 Subject: [Biojava-dev] DP memory leak In-Reply-To: References: Message-ID: <20040107105741.GA23814@firechild> Once upon a time, mark.schreiber@group.novartis.com wrote: > > Hi - > > Does this Alphabet unloading do anything to PhredAlphabet that is created > and registered by the PhredTools class or does it only deal with DP > generated Alphas? > > General question: Is there any reason why the DP generated Alpha needs to > be registered with the AlphabetManager? Presumably not registering would > prevent memory leaks? As far as I can tell, MarkovModel alphabets never get registered, so that isn't the cause of the leak. The problem was due to the way AlphabetManager caches AlphabetIndex objects -- that was preventing any alphabet which had ever been used in a Distribution from ever unloading. I've added lots of WeakReferences, and that side of things is working fine now. (Although I think there might also be a second DP-related memory leak. Investigating now). > Also, there is currently no way to deregister an Alphabet from > AlphabetManager. Adding that functionality may be useful (even if not > needed for this case). Might be good to allow exception throwing if people > try to unload something that shouldn't be. For BioJava2 it might be good to > allow change veto exceptions or similar to the register and deregister > methods. The current registerAlphabet method simply overwrites the previous > object associated with that name. Agreed. Actually, for BJ2, I think we should try to eliminate special-purpose registries like AlphabetManager entirely, and have a single API (preferably JNDI) for retriving *any* named resource. That way, we just have one interface for registering resources, too, which should simplify policy issues like this. Thomas. From Rob.Brooksbank at camb-biotech.com Thu Jan 8 06:16:51 2004 From: Rob.Brooksbank at camb-biotech.com (Rob Brooksbank) Date: Thu Jan 8 06:23:56 2004 Subject: [Biojava-dev] biojava-acedb status Message-ID: <6C889540BCB3124381E71F58C67426A20207BB@cam-sbs1.camb-biotech.local> I am trying to get hold of a biojava-acedb.jar file so that I can mount it from the NetBeans IDE. I have downloaded the tarball from the cvs and tried unsuccesfully to build it. I see from a previous thread that others have had the same problem and no resolution for it has been reported to the list. What is the status of biojava-acedb? It is not included in the current release of biojava, has it been superceded by something else? Any help or advice will be gratefully received. Cheers Rob Brooksbank PhD Cambridge Biotechnology Ltd From thomas at derkholm.net Thu Jan 8 07:42:44 2004 From: thomas at derkholm.net (Thomas Down) Date: Thu Jan 8 06:59:56 2004 Subject: [Biojava-dev] biojava-acedb status In-Reply-To: <6C889540BCB3124381E71F58C67426A20207BB@cam-sbs1.camb-biotech.local> References: <6C889540BCB3124381E71F58C67426A20207BB@cam-sbs1.camb-biotech.local> Message-ID: <20040108124244.GA24362@firechild> Once upon a time, Rob Brooksbank wrote: > I am trying to get hold of a biojava-acedb.jar file so that I can mount > it from the NetBeans IDE. I have downloaded the tarball from the cvs and > tried unsuccesfully to build it. I see from a previous thread that > others have had the same problem and no resolution for it has been > reported to the list. > > What is the status of biojava-acedb? It is not included in the current > release of biojava, has it been superceded by something else? I'm afraid biojava-acedb is currently orphanware -- I'm not aware of anyone who's currently using it. The compile errors are due to some changes in the BioJava core APIs. [It was originally developed by Matthew Pocock and myself, mainly for use with human genome data. That's now available in Ensembl format, though, so I always use that now]. It shouldn't be a major job to get the package working. It's a job that's probably best handled by someone who's actively working with Acedb. Let me know if you need any help with the code. I'm not familiar with Netbeans, though -- can anyone else help here? Thomas. From benjamins at Biomax.de Thu Jan 8 09:40:24 2004 From: benjamins at Biomax.de (Benjamin Schuster-Boeckler) Date: Thu Jan 8 09:47:24 2004 Subject: [Biojava-dev] I can't create SimpleSequences any more since I upgraded to the latest CVS version! Message-ID: <3FFD6BD8.4080008@Biomax.de> The following code leads to a strange exception: ------------------------ snip -------------------------- Feature.Template template = new Feature.Template(); template.type = "empty"; template.source = "MyProgram.ContigSequence"; template.annotation = new org.biojava.bio.SimpleAnnotation(); template.location = LocationTools.makeLocation(1, 100000); return new org.biojava.bio.seq.impl.SimpleFeature(this, this, template); ------------------------ snap -------------------------- => ------------------------ snip -------------------------- java.lang.NoClassDefFoundError: org/biojava/ontology/format/triples/node/Node at org.biojava.ontology.OntoTools.(OntoTools.java:71) at org.biojava.bio.seq.impl.SimpleFeature.(SimpleFeature.java:386) at com.biomax.pedant3.das.ContigSequence.filter(ContigSequence.java:140) at org.biojava.servlets.dazzle.DazzleServlet.featuresOutput_dasgff(Unknown Source) at org.biojava.servlets.dazzle.DazzleServlet.featuresCommand(Unknown Source) at org.biojava.servlets.dazzle.DazzleServlet.doGet(Unknown Source) ------------------------ snap -------------------------- How did that happen? Greetings, Benjamin From kalle.naslund at genpat.uu.se Thu Jan 8 09:48:45 2004 From: kalle.naslund at genpat.uu.se (=?ISO-8859-1?Q?Kalle_N=E4slund?=) Date: Thu Jan 8 09:55:54 2004 Subject: [Biojava-dev] biojava-acedb status In-Reply-To: <20040108124244.GA24362@firechild> References: <6C889540BCB3124381E71F58C67426A20207BB@cam-sbs1.camb-biotech.local> <20040108124244.GA24362@firechild> Message-ID: <3FFD6DCD.4090403@genpat.uu.se> Thomas Down wrote: >Once upon a time, Rob Brooksbank wrote: > > >>I am trying to get hold of a biojava-acedb.jar file so that I can mount >>it from the NetBeans IDE. I have downloaded the tarball from the cvs and >>tried unsuccesfully to build it. I see from a previous thread that >>others have had the same problem and no resolution for it has been >>reported to the list. >> >>What is the status of biojava-acedb? It is not included in the current >>release of biojava, has it been superceded by something else? >> >> > >I'm afraid biojava-acedb is currently orphanware -- I'm not >aware of anyone who's currently using it. The compile errors >are due to some changes in the BioJava core APIs. > >[It was originally developed by Matthew Pocock and myself, mainly >for use with human genome data. That's now available in Ensembl >format, though, so I always use that now]. > >It shouldn't be a major job to get the package working. It's >a job that's probably best handled by someone who's actively >working with Acedb. > >Let me know if you need any help with the code. I'm not familiar >with Netbeans, though -- can anyone else help here? > > > I use netbeans, normaly just the basic features it provides ( editor, debugger and so on ) and there are no problems to write biojava applications with netbeans. So if there are any netbeans specific problems, all i can offer is to share my limited experience, hopefully it will be enough. Kalle From benjamins at Biomax.de Thu Jan 8 09:59:55 2004 From: benjamins at Biomax.de (Benjamin Schuster-Boeckler) Date: Thu Jan 8 10:06:53 2004 Subject: [Biojava-dev] I found the solution, sorry I was so quick to post :-) Message-ID: <3FFD706B.2000706@Biomax.de> I added the grammar.jar, now it works fine. Tnx, Ben From pm66 at nyu.edu Thu Jan 8 20:51:14 2004 From: pm66 at nyu.edu (Philip E Macmenamin) Date: Thu Jan 8 20:58:21 2004 Subject: [Biojava-dev] biojava-acedb status Message-ID: <68811c682c47.682c4768811c@homemail.nyu.edu> Hi, As far as I know, BioJava is in a bit of a sorry state wrt ACeDB interface. I had it working away in JSP alright, but I seem to remember that it has no ability to write to the db. Its just really limited... I tried playing with it for a while, and ended up giving up, and using Lincoln Stein's very reasonable perl libs for doing everything with ACeDB. So, yeah, I think some one has to go off and actually write the stuff properly before anyone can do much (NetBeans or other) with it. Philip ----- Original Message ----- From: Kalle N?slund Date: Thursday, January 8, 2004 2:48 pm Subject: Re: [Biojava-dev] biojava-acedb status > Thomas Down wrote: > > >Once upon a time, Rob Brooksbank wrote: > > > > > >>I am trying to get hold of a biojava-acedb.jar file so that I > can mount > >>it from the NetBeans IDE. I have downloaded the tarball from the > cvs and > >>tried unsuccesfully to build it. I see from a previous thread that > >>others have had the same problem and no resolution for it has been > >>reported to the list. > >> > >>What is the status of biojava-acedb? It is not included in the > current>>release of biojava, has it been superceded by something > else? > >> > >> > > > >I'm afraid biojava-acedb is currently orphanware -- I'm not > >aware of anyone who's currently using it. The compile errors > >are due to some changes in the BioJava core APIs. > > > >[It was originally developed by Matthew Pocock and myself, mainly > >for use with human genome data. That's now available in Ensembl > >format, though, so I always use that now]. > > > >It shouldn't be a major job to get the package working. It's > >a job that's probably best handled by someone who's actively > >working with Acedb. > > > >Let me know if you need any help with the code. I'm not familiar > >with Netbeans, though -- can anyone else help here? > > > > > > > I use netbeans, normaly just the basic features it provides ( > editor, > debugger and so on ) > and there are no problems to write biojava applications with > netbeans. > So if there are any > netbeans specific problems, all i can offer is to share my limited > experience, hopefully it > will be enough. > > Kalle > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From len at reeltwo.com Sun Jan 11 17:56:26 2004 From: len at reeltwo.com (Len Trigg) Date: Sun Jan 11 18:03:21 2004 Subject: [Biojava-dev] Annotation conversions In-Reply-To: <3FDEE7AB.9070503@yahoo.co.uk> References: <3FDEE7AB.9070503@yahoo.co.uk> Message-ID: Matthew Pocock wrote: > For now, CC or COMMENT are your best bet. You can decide upon a > canonical key if you want, but currently you would have to do the > work by hand of mapping to/from canonical. Perhaps a useful thing to > do would be to draw up a document with canonicals and what they map > to in different file formats. I just had another look at this. These are the ones I've seen that have simple one to one conversions. There may be more: Embl Genbank CC COMMENT OS SOURCE OC ORGANISM KW KEYWORDS SV VERSION DE DEFINITION DT MDAT There's probably some type of accession field. There's also OrganismParser.PROPERTY_ORGANISM that has bidirectional conversion with BioSQL taxon, and output as Embl OS/OC fields. I'm in favour of having a bunch of static properties (perhaps forming an enum) in the one place corresponding to each of these. That'd serve the immediate purpose of removing the error-prone duplication of checks, and we can get flash later if we want/need to. Shall I make it so? Cheers, Len. From basic at myfunnymail.com Mon Jan 12 05:06:58 2004 From: basic at myfunnymail.com (Commandments H. Council) Date: Mon Jan 12 05:16:13 2004 Subject: [Biojava-dev] =?windows-1251?b?QmlvamF2YSBZbywg7+7m4Ovz6fHy4CBU?= =?windows-1251?b?Wkd4ayDu4eHw4PLo8uUg4u3o7ODt6OUgV3Rad3p6SVQ=?= Message-ID: <6.0.0.22.1.20040112050658.546c25c0@myfunnymail.com> 7 ?????? ????! 8 ????? ?? ???? ?? ??????? ??????????? ?????????? ???????????? ??????????, 0 ?????????, ??????, ????????, ???????, ?????????, ????????? ? ??., ?? ? ????????? ????????. ? ????? ??????? ?????????????????? ?????????, ?????????? ??????, ???????? ????. 2 WTnB eKcIpClop 3 2 6 ?????????: ??????????? ???????, ???????? ?????? ?????????????? ??????? ? ??. vedR ??????? ???????????, ? ???? ?????? ? ?????????? ????????, ????????? ??????? ???????????????? ?????????? ???????? Heidelberrg ? ?????????????????????????? ???????????. 2 LPWRMXqKt 5 ??? ?????????????? ???????????: ?????????, ???????, ?????????, ??-?????????? (? ?.?. ???????????), 8 ???????, ????????????, ??????????, ????????, ???????? ? ?????? ??????. ptAt 2 ?????? ???????? ???????. ???????????? ???????. 5 M 4 3 ???????, ????????? wQbXVMZE eCQtT From matthew_pocock at yahoo.co.uk Mon Jan 12 12:42:31 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Mon Jan 12 12:53:53 2004 Subject: [Biojava-dev] I can't create SimpleSequences any more since I upgraded to the latest CVS version! In-Reply-To: <3FFD6BD8.4080008@Biomax.de> References: <3FFD6BD8.4080008@Biomax.de> Message-ID: <4002DC87.8080807@yahoo.co.uk> Make sure that grammars.jar is explicitly listed in your classpath, or is in the same directory as biojava.jar Benjamin Schuster-Boeckler wrote: > The following code leads to a strange exception: > > ------------------------ snip -------------------------- > Feature.Template template = new Feature.Template(); > template.type = "empty"; > template.source = "MyProgram.ContigSequence"; > template.annotation = new org.biojava.bio.SimpleAnnotation(); > template.location = LocationTools.makeLocation(1, 100000); > return new org.biojava.bio.seq.impl.SimpleFeature(this, this, > template); > ------------------------ snap -------------------------- > > => > > ------------------------ snip -------------------------- > java.lang.NoClassDefFoundError: > org/biojava/ontology/format/triples/node/Node > at org.biojava.ontology.OntoTools.(OntoTools.java:71) > at > org.biojava.bio.seq.impl.SimpleFeature.(SimpleFeature.java:386) > at > com.biomax.pedant3.das.ContigSequence.filter(ContigSequence.java:140) > at > org.biojava.servlets.dazzle.DazzleServlet.featuresOutput_dasgff(Unknown > Source) > at > org.biojava.servlets.dazzle.DazzleServlet.featuresCommand(Unknown Source) > at org.biojava.servlets.dazzle.DazzleServlet.doGet(Unknown Source) > ------------------------ snap -------------------------- > > How did that happen? > > Greetings, > > Benjamin > > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From matthew_pocock at yahoo.co.uk Mon Jan 12 12:50:43 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Mon Jan 12 13:01:53 2004 Subject: [Biojava-dev] In which the Multihead DP traverses MagicalState repeatedly In-Reply-To: <200401042146.04716.david.huen@ntlworld.com> References: <200401042146.04716.david.huen@ntlworld.com> Message-ID: <4002DE73.8050100@yahoo.co.uk> :) This would have been caught by a source-code level assertion mechanism in Java - movement through magic was meant to be excluded by the intersection of 2 boundary conditions - I guess one or both of these boundaries have been since moved. Thanks for spotting this. Matthew David Huen wrote: >With some combinations of parameters (rather poor ones for the sequences to >aligned by Viterbi), our twohead DP implementation can generate a StatePath >that traverses the magicalState on multiple occasions. > >After investigating it at length, I think it comes about comes about because >the EmissionCache treats the MagicalState as an EmissionState with advance >(0, 0) and a finite probability. However, traversal through the >MagicalState should be explicitly forbidden in the Viterbi statepath. > >I have implemented fixes in both LightPairDPCursor and EmissionCache to set >the probability score of the MagicalState to -infinity at all points in the >DP matrix other than at the origin and bottom right corner. This seems to >have fixed this problem within my dataset. > >I have also retrofitted an equivalent fix into AbstractMatrixPairDPCursor >but I am insufficiently familiar with that code to be certain of it being >correct. > >I don't know if there are consequences for DPCompiler. > >Anyway, I have committed the fixes. > >Incidentally, if you have been running 2-head DPs with the current code and >do not usually examine the generated StatePaths, you may wish to repeat >some of those runs and compare the results. The ability to traverse the >MagicalState does create amazing opportunities for the model to go where no >model has ever been before :-) > >Regards, >David Huen >_______________________________________________ >biojava-dev mailing list >biojava-dev@biojava.org >http://biojava.org/mailman/listinfo/biojava-dev > > > From matthew_pocock at yahoo.co.uk Mon Jan 12 12:51:21 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Mon Jan 12 13:02:34 2004 Subject: [Biojava-dev] Extensions to DP framework to permit 2-head training In-Reply-To: <200401042213.36593.david.huen@ntlworld.com> References: <200401042213.36593.david.huen@ntlworld.com> Message-ID: <4002DE99.1050106@yahoo.co.uk> I'm happy - as long as old user-land code works. I don't consider implementing a trainer to be a common user-land thing. Matthew David Huen wrote: >I have written a working Viterbi trainer that is capable of 1 and 2 head >training and hope to commit to CVS. The current API does not permit 2-head >training and will need changes to accomodate this. > >I propose the following changes to permit it:- > >a) introduction of a TrainingSet interface: In 2-head training, pairs of >sequences need to be available. I have generalised it into a means of >supplying n sequences per case so we can deal with n-head training when 20 >gazillion Hz processors with 5 bazillion byte RAM become available. > >public interface TrainingSet >{ > public interface Iterator > { > /** > * get next group of sequences to train the model on. > */ > public Sequence[] next(); > > /** > * any further training sequence groups? > */ > public boolean hasNext(); > } > > /** > * get an iterator for the cases supplied by this TrainingSet. > */ > public Iterator getCases(); >} > >b) changes to TrainingAlgorithm interface:- > >The current train method takes a SequenceDB which only works for 1-head >training. I propose a further method that takes a TrainingSet and >deprecating the current method. > >This change will break code that derives from AbstractTrainer. But I think >I can cursorily patch up the AbstractTrainer and current BaumWelch code to >add the new call. I do not propose extending the BW code to handling 2-D >training at this stage. > >c) changes to AbstractTrainer class:- >AbstractTrainer supplies a > >protected abstract double singleSequenceIteration(ModelTrainer trainer, >SymbolList symList) > >I propose changing it to:- >protected abstract double singleSequenceIteration(ModelTrainer trainer, >SymbolList [] symList) > >Perhaps to avoid breaking too much, I should create a NewAbstractTrainer >class with the new method and derive my ViterbiTrainer from it instead > >Comments are requested. > >Regards, >David Huen > >_______________________________________________ >biojava-dev mailing list >biojava-dev@biojava.org >http://biojava.org/mailman/listinfo/biojava-dev > > > From matthew_pocock at yahoo.co.uk Mon Jan 12 12:55:17 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Mon Jan 12 13:06:28 2004 Subject: [Biojava-dev] Current Alphabet design and an unintended consequencefor training In-Reply-To: References: Message-ID: <4002DF85.6060305@yahoo.co.uk> /me puts on alphabet guru hat I would tend to agree with Mark. It is unfortunate that we don't have a 'gap' interface. Occasionally relational logic and object models realy don't mix. Pants. /me takes off alphabet guru hat mark schreiber wrote: >David, > >I think you may be able to use solution 1. As Symbol is a superclass >(interface) of AtomicSymbol you won't be breaking any API. > >- Mark > > > > >>-----Original Message----- >>From: biojava-dev-bounces@portal.open-bio.org >>[mailto:biojava-dev-bounces@portal.open-bio.org] On Behalf Of >>David Huen >>Sent: Saturday, 3 January 2004 10:33 p.m. >>To: biojava-dev@biojava.org >>Subject: [Biojava-dev] Current Alphabet design and an >>unintended consequencefor training >> >>The current Alphabet system uses the BasisSymbol to represent >>both ambiguity symbols and symbols from cross product >>alphabets. This casues unintended consequences for training >>algorithms. >> >>The DistributionTrainerContext has an addCount(Distribution >>dist, Symbol sym, double times) method. When using cross >>product alphabets, it works flawlessly when it encounters >>AtomicSymbols from the cross-product alphabet (and these are >>also BasisSymbols). In the design of the DistributionTrainer >>interface, the equivalent method addCount(Distribution dist, >>AtomicSymbol sym, double times) accepts only an AtomicSymbol, >>which is reasonable. >> >>However, when training two-head distributions, it is not >>implausible for the >>DistributionTrainerContext.addCount() to receive Symbols that >>are not AtomicSymbols. The most common by far would be >>symbols emitted by gap states of form e.g (gap cytosine). >>The current implementation of the addCount method assumes >>that non-atomic symbols are ambiguity symbols and attempts to >>deal with them in that manner. Evidently it fails in the >>above case, indeed, it fails silently. This problem >>currently prevents the training of PairDistributions in which >>one component Distribution is a GapDistribution. >> >>There appears to be no easy way of fixing this problem at the >>level of >>DistributionTrainerContext. It is formally possible that the >>BasisSymbol received by addCount is truly an ambiguity symbol >>containing a number of symbols from the cross-product >>alphabet of the two-head HMM model. It is also possible that >>the BasisSymbol represents a single symbol comprising >>ambiguity symbol(s) from one or both alphabets that form the >>cross product alphabet. The two are evidently not equivalent >>and have to be dealt with differently. And resolving which >>it is is potentially computationally costly for an operation >>that is repeated very many times during training. >> >>Even if this ambiguity could be resolved at the level of >>DistributionTrainerContext and you knew the symbol to be one >>of type (gap ), that symbol cannot be passed >>to a DistributionTrainer that may be capable of dealing with >>it as the addCount method in that interface accepts only >>atomic symbols which something like (gap guanine) is not. >> >>Interim solutions could be:- >>1) change the DistributionTrainer.addCount() to accept >>non-atomic symbols. >>DistributionTrainerContext's addCount method will leave it to >>the distribution trainers to sort out what to do with >>non-atomic symbols themselves. >>OR >>2) add a ExtendedDistributionTrainer interface with one >>method addCount that can accept non-atomic symbols. >>DistributionTrainerContext's addCount method will check >>whether the symbol it receives is atomic. If it is, it will >>use the standard DistributionTrainer.addCount(). If not, it >>will determine if the trainer for that distribution >>implements the ExtendedDistributionTrainer interface and if >>so, call that interface's addCount method to leave it to deal >>with the symbol. If not, it will assume that the symbol is >>an ambiguity symbol and deal with it in the manner it does now. >> >>(2) is probably less disruptive to existing code and >>interfaces. It may be that the DistributionTrainer is a >>better place to deal with non-atomic symbols than >>DistributionTrainerContext since that the DT knows more about >>the internals of that Distribution and what it can/should >>handle while the DTC has to of necessity implement a >>one-size-fits-all approach. >> >>At Biojava 2, it may be worthwhile to revisit the Alphabet >>design and explicitly distinguish ambiguity symbols and >>BasisSymbols on the level that the former is a Set of >>symbols, while the latter is a List of Symbols. >> >>Regards, >>David Huen >> >> >> >> >> >>_______________________________________________ >>biojava-dev mailing list >>biojava-dev@biojava.org >>http://biojava.org/mailman/listinfo/biojava-dev >> >> >> >_______________________________________________ >biojava-dev mailing list >biojava-dev@biojava.org >http://biojava.org/mailman/listinfo/biojava-dev > > > From matthew_pocock at yahoo.co.uk Mon Jan 12 12:59:29 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Mon Jan 12 13:10:51 2004 Subject: [Biojava-dev] Annotation conversions In-Reply-To: References: <3FDEE7AB.9070503@yahoo.co.uk> Message-ID: <4002E081.7020908@yahoo.co.uk> Enum away. Use the type-safe enum design pattern? Matthew Len Trigg wrote: >I just had another look at this. These are the ones I've seen that >have simple one to one conversions. There may be more: > >Embl Genbank >CC COMMENT >OS SOURCE >OC ORGANISM >KW KEYWORDS >SV VERSION >DE DEFINITION >DT MDAT > >There's probably some type of accession field. > >There's also OrganismParser.PROPERTY_ORGANISM that has bidirectional >conversion with BioSQL taxon, and output as Embl OS/OC fields. > >I'm in favour of having a bunch of static properties (perhaps forming >an enum) in the one place corresponding to each of these. That'd serve >the immediate purpose of removing the error-prone duplication of >checks, and we can get flash later if we want/need to. Shall I make it >so? > > >Cheers, >Len. >_______________________________________________ >biojava-dev mailing list >biojava-dev@biojava.org >http://biojava.org/mailman/listinfo/biojava-dev > > > From len at reeltwo.com Mon Jan 12 21:54:42 2004 From: len at reeltwo.com (Len Trigg) Date: Mon Jan 12 22:01:38 2004 Subject: [Biojava-dev] Annotation conversions In-Reply-To: <4002E081.7020908@yahoo.co.uk> References: <3FDEE7AB.9070503@yahoo.co.uk> <4002E081.7020908@yahoo.co.uk> Message-ID: Matthew Pocock wrote: > Enum away. Use the type-safe enum design pattern? Yep. I started having a crack at it, and the stuff in the seq/io package seemed pretty straightforward. I introduced a translation table to the *Processors and simplified the *FileFormats to only look for the canonical keys. My current point of difficulty is with biosql. First, what to do with sequences that have been previously stored. Basically it needs a translation table that handles either embl or genbank formats and converts to the canonical key. The second problem is what to do when storing sequences. I was initially just going to use the name associated with the canonical key (and map from this string to the required object when reading). However, that's bad juju for compatibility with BioPerl etc, who won't know how to interpret them correctly. Maybe have an idea of the preferred format for the sequence and use that? It's getting back to the reason for introducing the canonical keys in the first place. Ewww. Suggestions? Cheers, Len. From matthew_pocock at yahoo.co.uk Tue Jan 13 08:46:03 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Tue Jan 13 08:59:58 2004 Subject: [Biojava-dev] Annotation conversions In-Reply-To: References: <3FDEE7AB.9070503@yahoo.co.uk> <4002E081.7020908@yahoo.co.uk> Message-ID: <4003F69B.2070701@yahoo.co.uk> Hi Len, Have a root around in web cvs. Look in the obf-common project, obda-specs/naming - this is a spec for URNs for entities (things or ideas) that all the obf projects share. This would be an ideal place to put stable cross-project identifiers for things like comments. The exact form of the registry for the URNs is not nailed down right now, so if you get keen then take a look at that as well. Relationships between URNs (such as sub-typing, composition etc.) is explicitly defined as being off topic. Matthew Len Trigg wrote: >Matthew Pocock wrote: > > >>Enum away. Use the type-safe enum design pattern? >> >> > >Yep. I started having a crack at it, and the stuff in the seq/io >package seemed pretty straightforward. I introduced a translation >table to the *Processors and simplified the *FileFormats to only look >for the canonical keys. > >My current point of difficulty is with biosql. First, what to do with >sequences that have been previously stored. Basically it needs a >translation table that handles either embl or genbank formats and >converts to the canonical key. > >The second problem is what to do when storing sequences. I was >initially just going to use the name associated with the canonical key >(and map from this string to the required object when >reading). However, that's bad juju for compatibility with BioPerl etc, >who won't know how to interpret them correctly. Maybe have an idea of >the preferred format for the sequence and use that? It's getting back >to the reason for introducing the canonical keys in the first >place. Ewww. Suggestions? > > >Cheers, >Len. >_______________________________________________ >biojava-dev mailing list >biojava-dev@biojava.org >http://biojava.org/mailman/listinfo/biojava-dev > > > From matthew_pocock at yahoo.co.uk Tue Jan 13 13:36:17 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Tue Jan 13 13:47:33 2004 Subject: [Biojava-dev] assert Message-ID: <40043AA1.1070901@yahoo.co.uk> I've just committed a build.xml that enables the assert keyword. SimpleGappedSymbolList is the first file I've tinkered with that uses it. Welcome to the 21st century. Matthew From matthew_pocock at yahoo.co.uk Tue Jan 13 15:43:21 2004 From: matthew_pocock at yahoo.co.uk (Matthew Pocock) Date: Tue Jan 13 15:54:39 2004 Subject: [Biojava-dev] URNs Message-ID: <40045869.5000602@yahoo.co.uk> Hi, I have had a revamp of the obf naming spec today. I don't think there have been any implementations of this spec so far, so the revamp shouldn't have hurt anyone (famous last words). There is a new package org.biojava.naming that implements a JNDI provider that exposes the informaton about obf URNs. I've added some unit tests, but more tests would be welcome. Anyway, time to go home & eat. Later. Matthew From thomas at derkholm.net Sat Jan 17 15:41:27 2004 From: thomas at derkholm.net (Thomas Down) Date: Sat Jan 17 15:48:45 2004 Subject: [Biojava-dev] Build system changes Message-ID: <20040117204127.GC29526@firechild> Hi... I've been having a bit of a tidy up in the build.xml file. The main change is that I've removed all the `run a subset of tests' targets (symboltests, ontotests, etc.). Instead, you can define a property to specify a subset of tests to run. For example: ant -Dtest.subtree=org/biojava/bio/symbol runtests runs all tests in the `symbol' package (ignoring subpackages). Alternatively: ant -Dtest.subtree=org/biojava/bio/seq/** runtests runs the tests in seq and all its subpackages. Obviously, you can still use plain: ant runtests To run the complete test suite. I'm also considering a slightly more radical shakeup of the build system. Currently, when a build is launched, all the source is copied into ant-build before compilation. This was a good idea when we had separate core and jdk1.4 sources, but isn't needed now. As far as I can tell, it just slows the build down and causes problems with tools like the jEdit ErrorList plugin. Is anyone keen to keep this copying step? Otherwise, I'll remove it sometime next week, Thomas. From mark.schreiber at group.novartis.com Sun Jan 18 20:18:36 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Sun Jan 18 20:22:17 2004 Subject: [Biojava-dev] Build system changes Message-ID: Hi Thomas - I'd vote in favour of not copying everything to the ant-build directory. It can cause major headaches with IDEs that integrate with Ant. OK so obviously they don't integrate all that well ;-) - Mark Mark Schreiber Principal Scientist (Bioinformatics) Novartis Institute for Tropical Diseases (NITD) 1 Science Park Road #04-14 The Capricorn Singapore 117528 phone +65 6722 2973 fax +65 6722 2910 Thomas Down Sent by: biojava-dev-bounces@portal.open-bio.org 01/18/2004 04:41 AM To: biojava-dev@biojava.org cc: Subject: [Biojava-dev] Build system changes Hi... I've been having a bit of a tidy up in the build.xml file. The main change is that I've removed all the `run a subset of tests' targets (symboltests, ontotests, etc.). Instead, you can define a property to specify a subset of tests to run. For example: ant -Dtest.subtree=org/biojava/bio/symbol runtests runs all tests in the `symbol' package (ignoring subpackages). Alternatively: ant -Dtest.subtree=org/biojava/bio/seq/** runtests runs the tests in seq and all its subpackages. Obviously, you can still use plain: ant runtests To run the complete test suite. I'm also considering a slightly more radical shakeup of the build system. Currently, when a build is launched, all the source is copied into ant-build before compilation. This was a good idea when we had separate core and jdk1.4 sources, but isn't needed now. As far as I can tell, it just slows the build down and causes problems with tools like the jEdit ErrorList plugin. Is anyone keen to keep this copying step? Otherwise, I'll remove it sometime next week, Thomas. _______________________________________________ biojava-dev mailing list biojava-dev@biojava.org http://biojava.org/mailman/listinfo/biojava-dev From matthew_pocock at yahoo.co.uk Mon Jan 19 06:47:16 2004 From: matthew_pocock at yahoo.co.uk (=?iso-8859-1?q?Matthew=20Pocock?=) Date: Mon Jan 19 06:53:56 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040117204127.GC29526@firechild> Message-ID: <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> --- Thomas Down wrote: > Hi... > > I've been having a bit of a tidy up in the build.xml > file. It needed it :) > For example: > > ant -Dtest.subtree=org/biojava/bio/symbol > runtests > ant -Dtest.subtree=org/biojava/bio/seq/** > runtests Very cool. I'll be playing with this. > I'm also considering a slightly more radical shakeup > of the build > system. Currently, when a build is launched, all > the source is > copied into ant-build before compilation. This was > a good idea > when we had separate core and jdk1.4 sources, but > isn't needed > now. As far as I can tell, it just slows the build > down and > causes problems with tools like the jEdit ErrorList > plugin. It causes me grief with IDEAL - debugging tries to edit the coppies, not the original source. I think now that the source trees are prety much as you would expect (seperate trees for tests, demos etc.), this is less of an issue. The only other gotcha is if people have mixed resources in with .java files - could you double-check this? One other build thing - last time I poked arround in it, I started making each module compile / test against the .jar of its dependancies - this ensures that the .jar files we make contain the stuff we think they do. Not sure if I carried this all the way through though. Matthew ________________________________________________________________________ Yahoo! Messenger - Communicate instantly..."Ping" your friends today! Download Messenger Now http://uk.messenger.yahoo.com/download/index.html From thomas at derkholm.net Mon Jan 19 06:59:03 2004 From: thomas at derkholm.net (Thomas Down) Date: Mon Jan 19 07:06:24 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> References: <20040117204127.GC29526@firechild> <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> Message-ID: <20040119115903.GA30301@firechild> Once upon a time, Matthew Pocock wrote: > --- Thomas Down wrote: > Hi... > > > > I've been having a bit of a tidy up in the build.xml > > file. > It needed it :) > > > For example: > > > > ant -Dtest.subtree=org/biojava/bio/symbol > > runtests > > > ant -Dtest.subtree=org/biojava/bio/seq/** > > runtests > > Very cool. I'll be playing with this. Quicker, less painful test runs == more testing -- that's the theory, anyway. The other thing that's worthwhile in principle is running all the tests in a single VM. Unfortunately, when I tried that I ran into bad memory trouble. The ideal solution would be to run groups of tests together, but this might mean we have to write our own test runner. > > I'm also considering a slightly more radical shakeup > > of the build > > system. Currently, when a build is launched, all > > the source is > > copied into ant-build before compilation. This was > > a good idea > > when we had separate core and jdk1.4 sources, but > > isn't needed > > now. As far as I can tell, it just slows the build > > down and > > causes problems with tools like the jEdit ErrorList > > plugin. > > It causes me grief with IDEAL - debugging tries to > edit the coppies, not the original source. I think now > that the source trees are prety much as you would > expect (seperate trees for tests, demos etc.), this is > less of an issue. The only other gotcha is if people > have mixed resources in with .java files - could you > double-check this? Okay, three votes in favour, none against so far -- looks like this is going to happen. Re: resources, I'm fairly sure that the main source tree is fine. The test tree isn't. I'm pretty sure the ANT javac task only tries to compile .java files, so this shouldn't be a big deal, but it's arguably nicer to have a separate tree (test-resources? test-data?) for datafiles used in tests. I might implement that while I'm poking around. > One other build thing - last time I poked arround in > it, I started making each module compile / test > against the .jar of its dependancies - this ensures > that the .jar files we make contain the stuff we think > they do. Not sure if I carried this all the way Okay, I'll look into this. One question: how determined are you to keep the SableCC grammars in a separate jar file? They get build alongside biojava, and aren't useful on their own, so why not keep them in the main jar. One less item on my CLASSPATH... Thomas. From matthew_pocock at yahoo.co.uk Mon Jan 19 09:37:30 2004 From: matthew_pocock at yahoo.co.uk (=?iso-8859-1?q?Matthew=20Pocock?=) Date: Mon Jan 19 09:44:09 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040119115903.GA30301@firechild> Message-ID: <20040119143730.75436.qmail@web25106.mail.ukl.yahoo.com> --- Thomas Down wrote: > Once upon a time, Matthew Pocock wrote: > One question: how determined are you to keep the > SableCC grammars > in a separate jar file? They get build alongside > biojava, and > aren't useful on their own, so why not keep them in > the main jar. Happy for them to go into biojava.jar - they need to be produced & compiled seperately though to avoid timestamping difficulties - particularly as we haven't fixed the sablecc-ant-task rebuilding yet. They should get picked up by the manifest entry in biojava.jar - perhaps they are not :( > One less item on my CLASSPATH... > > Thomas. While you're making potentially incompattible changes, could you make all libs and all targets end up in ant-build/lib so that people just copy all .jars from the lib directiory, rather than the current mess of picking the right jars from the right places? It was one of those things I never got arround to, and it keeps ant-build cleaner. Does this count as a major change? Matthew oh, and thanks for tackling this ________________________________________________________________________ Yahoo! Messenger - Communicate instantly..."Ping" your friends today! Download Messenger Now http://uk.messenger.yahoo.com/download/index.html From len at reeltwo.com Mon Jan 19 15:19:02 2004 From: len at reeltwo.com (Len Trigg) Date: Mon Jan 19 15:25:47 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040119115903.GA30301@firechild> References: <20040117204127.GC29526@firechild> <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> <20040119115903.GA30301@firechild> Message-ID: Thomas Down wrote: > Quicker, less painful test runs == more testing -- that's > the theory, anyway. The other thing that's worthwhile in principle > is running all the tests in a single VM. Unfortunately, when > I tried that I ran into bad memory trouble. The ideal solution > would be to run groups of tests together, but this might mean we > have to write our own test runner. Usually if you have memory problems when running many tests, it means that your teardown methods somewhere aren't properly implemented (or you have tons of static fields in your class library). The automated build system we use here does a recursive object traversal of the Suite object via reflection after running the tests and warns us of any unexpected object references loitering around. Running the tests all in one VM is way faster than doing them individually. Cheers, Len. From james at advancingwomen.net Fri Jan 16 20:17:47 2004 From: james at advancingwomen.net (James A Kirk) Date: Mon Jan 19 16:58:14 2004 Subject: [Biojava-dev] Career Site Linking Message-ID: <4121-2200416171174710@blueart> Hello, Does your organization link to sites focusing on career advancement for women? http://www.advancingwomen.net is specifically for women seeking career advancement and those organizations building a diverse workforce. Please reply with the subject "Add my link too" if you wish to have your link added to AdvancingWomen.net. Included your site's title, url, and discription. Exchanging links will help build search engine placement for both sites. Thank you in advance for your prompt response. Please forward this message to the appropriate parties if you are unable to make decisions about your organization's website. Below is our link information. Link: http://www.advancingwomen.net Link Title: Job Search Engine for Women Discription: Career advancement for professional women with free job search and anonymous resume posting. Regards, James A Kirk Links Manager http://www.AdvancingWomen.net From thomas at derkholm.net Mon Jan 19 17:09:47 2004 From: thomas at derkholm.net (Thomas Down) Date: Mon Jan 19 17:17:10 2004 Subject: [Biojava-dev] Build system updated Message-ID: <20040119220947.GA30561@firechild> Hi, The threatened changes to build.xml are now checked in. The main difference is that source code is no longer copied into the ant-build directory before compilation. This makes life simpler, and improves compatibility with IDEs. It also seems to make the build process substantially faster. Another visible change is that we no longer compile a standalone grammars.jar module -- the sablecc grammars are now included in biojava.jar. If you keep grammars.jar on your default CLASSPATH, you should probably remove it now to avoid clashes in the future. There will probably be a few other minor rearrangements over the next few days, but the main changes are done now, Thomas. From thomas at derkholm.net Tue Jan 20 03:52:29 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 20 03:59:51 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: References: <20040117204127.GC29526@firechild> <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> <20040119115903.GA30301@firechild> Message-ID: <20040120085229.GA30821@firechild> Once upon a time, Len Trigg wrote: > Thomas Down wrote: > > Quicker, less painful test runs == more testing -- that's > > the theory, anyway. The other thing that's worthwhile in principle > > is running all the tests in a single VM. Unfortunately, when > > I tried that I ran into bad memory trouble. The ideal solution > > would be to run groups of tests together, but this might mean we > > have to write our own test runner. > > Usually if you have memory problems when running many tests, it means > that your teardown methods somewhere aren't properly implemented (or > you have tons of static fields in your class library). I'd rather assumed (and I think most other biojava test authors have done the same) that the TestCases are released once they've been run, so it's only necessary to do explicit cleanup if you've created objects which get registered elsewhere. The only cases of this I can think of in BJ core code are stuff getting cached in AlphabetManager (which should be fixed now). If the TestCases are hanging around after they've been run, that could very well explain the leaks... > The automated build system we use here does a recursive object > traversal of the Suite object via reflection after running the tests > and warns us of any unexpected object references loitering around. Does this mean that you explicitly null-ify all your fields in the tearDown method? > Running the tests all in one VM is way faster than doing them > individually. Yes :-). Thomas. From len at reeltwo.com Tue Jan 20 13:35:26 2004 From: len at reeltwo.com (Len Trigg) Date: Tue Jan 20 13:42:12 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040120085229.GA30821@firechild> References: <20040117204127.GC29526@firechild> <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> <20040119115903.GA30301@firechild> <20040120085229.GA30821@firechild> Message-ID: <400D74EE.6070404@reeltwo.com> Thomas Down wrote: > If the TestCases are hanging around after they've been run, that > could very well explain the leaks... Yep, I was surprised when I found out too. > Does this mean that you explicitly null-ify all your fields > in the tearDown method? Yes. Cheers, Len. From thomas at derkholm.net Tue Jan 20 16:29:45 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 20 16:37:10 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <400D74EE.6070404@reeltwo.com> References: <20040117204127.GC29526@firechild> <20040119114716.64859.qmail@web25105.mail.ukl.yahoo.com> <20040119115903.GA30301@firechild> <20040120085229.GA30821@firechild> <400D74EE.6070404@reeltwo.com> Message-ID: <20040120212945.GA31099@firechild> Once upon a time, Len Trigg wrote: > Thomas Down wrote: > >If the TestCases are hanging around after they've been run, that > >could very well explain the leaks... > > Yep, I was surprised when I found out too. Well, you learn something new every day. I wonder what the rationale for this is? I've fixed a few classes, but it's going to be a significant job to do the whole test suite. I'm thinking about having a base class which cleans everything up by reflection. Thomas. From matthew_pocock at yahoo.co.uk Wed Jan 21 06:49:18 2004 From: matthew_pocock at yahoo.co.uk (=?iso-8859-1?q?Matthew=20Pocock?=) Date: Wed Jan 21 06:55:56 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <400D74EE.6070404@reeltwo.com> Message-ID: <20040121114918.63449.qmail@web25108.mail.ukl.yahoo.com> OK - if this is a real problem, could we have an AbstractBioJavaTest class that nullifies all fields in tearDown using introspection? Not sure how the java securtiy access will play with this, but anything to reduce coding... Are the JUnit guys aware of this? Is it a bug, feature, or like the human chin - just a side-effect of the rest of the system? Matthew --- Len Trigg wrote: > Thomas Down wrote: > > If the TestCases are hanging around after they've > been run, that > > could very well explain the leaks... > > Yep, I was surprised when I found out too. > > > > Does this mean that you explicitly null-ify all > your fields > > in the tearDown method? > > Yes. > > > Cheers, > Len. > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev ________________________________________________________________________ Yahoo! Messenger - Communicate instantly..."Ping" your friends today! Download Messenger Now http://uk.messenger.yahoo.com/download/index.html From thomas at derkholm.net Wed Jan 21 07:28:25 2004 From: thomas at derkholm.net (Thomas Down) Date: Wed Jan 21 07:35:54 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121114918.63449.qmail@web25108.mail.ukl.yahoo.com> References: <400D74EE.6070404@reeltwo.com> <20040121114918.63449.qmail@web25108.mail.ukl.yahoo.com> Message-ID: <20040121122825.GA31421@firechild> Once upon a time, Matthew Pocock wrote: > OK - if this is a real problem, could we have an > AbstractBioJavaTest class that nullifies all fields in > tearDown using introspection? Not sure how the java > securtiy access will play with this, but anything to > reduce coding... I think that might be the most practical solution right now. One worry, though, is that if you watch memory usage during an 'ant runtests', it creeps up pretty rapidly even when running tests which only use a few small objects. I'm wondering how much of the problem is actually data, and how much is due to keeping lots of classes in memory. BioJava is a pretty big library, and once you count the classes themselves, plus lots of tables to make the interpreter run fast, plus at least one (and sometimes multiple) JITted machine code versions, it all adds up. If all the test classes are hanging around indefintiely, and referncing lots of classes in BioJava, we might well have a bit source of leaking memory right there :-(. > Are the JUnit guys aware of this? Is it a bug, > feature, or like the human chin - just a side-effect > of the rest of the system? I was looking at the source for the ant junit task last night trying to work this one out, but it just made my head hurt. I'll try again at some point. Thmas. From matthew_pocock at yahoo.co.uk Wed Jan 21 07:57:41 2004 From: matthew_pocock at yahoo.co.uk (=?iso-8859-1?q?Matthew=20Pocock?=) Date: Wed Jan 21 08:04:16 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121122825.GA31421@firechild> Message-ID: <20040121125741.34512.qmail@web25105.mail.ukl.yahoo.com> --- Thomas Down wrote: > adds up. If all the test classes are hanging around > indefintiely, > and referncing lots of classes in BioJava, we might > well have > a bit source of leaking memory right there :-(. This could potentially be sorted by using multiple ClassLoaders - if JUnit can be convinced to drop the dead tests, then the class loader instance for those tests will become unreachable and all it's classes can be garbage collected. This is beginning to sound like heavy JUnit hackery though. Also, the overhead of loading the needed biojava classes repeatedly may put us back towards our original performance problems. > > I was looking at the source for the ant junit task > last > night trying to work this one out, but it just made > my head > hurt. I'll try again at some point. That's XP code-bases for you - without those regular meetings, things get ugly very quickly :) Still, as long as the test pass... > > Thmas. Matthew ________________________________________________________________________ Yahoo! Messenger - Communicate instantly..."Ping" your friends today! Download Messenger Now http://uk.messenger.yahoo.com/download/index.html From thomas at derkholm.net Wed Jan 21 08:07:58 2004 From: thomas at derkholm.net (Thomas Down) Date: Wed Jan 21 08:15:26 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121125741.34512.qmail@web25105.mail.ukl.yahoo.com> References: <20040121122825.GA31421@firechild> <20040121125741.34512.qmail@web25105.mail.ukl.yahoo.com> Message-ID: <20040121130758.GB31421@firechild> Once upon a time, Matthew Pocock wrote: > --- Thomas Down wrote: > > adds up. If all the test classes are hanging around > > indefintiely, > > and referncing lots of classes in BioJava, we might > > well have > > a bit source of leaking memory right there :-(. > > This could potentially be sorted by using multiple > ClassLoaders - if JUnit can be convinced to drop the > dead tests, then the class loader instance for those > tests will become unreachable and all it's classes can > be garbage collected. I don't think this is true: AFAICT modern VMs garbage collect classes in pretty much the same way they handle objects. So long as references to the TestCase classes are dropped, then the garbage collector should handle the rest. > This is beginning to sound like > heavy JUnit hackery though. Also, the overhead of > loading the needed biojava classes repeatedly may put > us back towards our original performance problems. I'd hope that the VM ought to do a reasonable job of this: really fundamental parts of the library, like symbols, get used in most tests, so I don't think they'll ever be unloaded. Even if the whole of BJ got unloaded after every test, we'd *still* be winning because it would save execing a fresh VM for every test. Thomas. From len at reeltwo.com Wed Jan 21 13:28:45 2004 From: len at reeltwo.com (Len Trigg) Date: Wed Jan 21 13:35:27 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121122825.GA31421@firechild> References: <400D74EE.6070404@reeltwo.com> <20040121114918.63449.qmail@web25108.mail.ukl.yahoo.com> <20040121122825.GA31421@firechild> Message-ID: <400EC4DD.6090805@reeltwo.com> Thomas Down wrote: > One worry, though, is that if you watch memory usage during > an 'ant runtests', it creeps up pretty rapidly even when > running tests which only use a few small objects. I'm wondering > how much of the problem is actually data, and how much is due > to keeping lots of classes in memory. BioJava is a pretty big I suppose that could account for a lot. How much memory does it take? As a data point, our main src module here has about 10% more classes than biojava, and runs around 4000 tests. We give the JVM 200MB when running the tests. I think we had problems with 128MB. Our stuff can be very memory intensive while running (text categorization, lots of documents and classifiers etc), so I would say has a higher memory requirement than biojava. Cheers, Len. From heuermh at acm.org Wed Jan 21 14:36:49 2004 From: heuermh at acm.org (Michael Heuer) Date: Wed Jan 21 15:00:42 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121130758.GB31421@firechild> Message-ID: On Wed, 21 Jan 2004, Thomas Down wrote: > Once upon a time, Matthew Pocock wrote: > > --- Thomas Down wrote: > > > adds up. If all the test classes are hanging around > > > indefintiely, > > > and referncing lots of classes in BioJava, we might > > > well have > > > a bit source of leaking memory right there :-(. > > > > This could potentially be sorted by using multiple > > ClassLoaders - if JUnit can be convinced to drop the > > dead tests, then the class loader instance for those > > tests will become unreachable and all it's classes can > > be garbage collected. > > I don't think this is true: AFAICT modern VMs garbage collect classes > in pretty much the same way they handle objects. So long as > references to the TestCase classes are dropped, then the garbage > collector should handle the rest. It's been a little while since I looked at the biojava test codebase to see how things are partitioned there, but I've seen that TestCases within in the same TestSuite are held onto, see junit/framework/TestSuite.java 30 private Vector fTests= new Vector(10); ... 88 /** 89 * Adds a test to the suite. 90 */ 91 public void addTest(Test test) { 92 fTests.addElement(test); 93 } For another datapoint, the jakarta-commons collections codebase runs nearly 10000 tests without memory problems, but its test code is partitioned into many explicitly defined test suites. michael > > > This is beginning to sound like > > heavy JUnit hackery though. Also, the overhead of > > loading the needed biojava classes repeatedly may put > > us back towards our original performance problems. > > I'd hope that the VM ought to do a reasonable job of this: > really fundamental parts of the library, like symbols, get used > in most tests, so I don't think they'll ever be unloaded. > > Even if the whole of BJ got unloaded after every test, we'd > *still* be winning because it would save execing a fresh VM > for every test. > > Thomas. > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From thomas at derkholm.net Wed Jan 21 15:59:48 2004 From: thomas at derkholm.net (Thomas Down) Date: Wed Jan 21 16:07:14 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <400EC4DD.6090805@reeltwo.com> References: <400D74EE.6070404@reeltwo.com> <20040121114918.63449.qmail@web25108.mail.ukl.yahoo.com> <20040121122825.GA31421@firechild> <400EC4DD.6090805@reeltwo.com> Message-ID: <20040121205948.GA31601@firechild> Once upon a time, Len Trigg wrote: > Thomas Down wrote: > >One worry, though, is that if you watch memory usage during > >an 'ant runtests', it creeps up pretty rapidly even when > >running tests which only use a few small objects. I'm wondering > >how much of the problem is actually data, and how much is due > >to keeping lots of classes in memory. BioJava is a pretty big > > I suppose that could account for a lot. How much memory does it take? As > a data point, our main src module here has about 10% more classes than > biojava, and runs around 4000 tests. We give the JVM 200MB when running > the tests. I think we had problems with 128MB. Our stuff can be very > memory intensive while running (text categorization, lots of documents > and classifiers etc), so I would say has a higher memory requirement > than biojava. Okay, I think I've got to the bottom of this now. When running in fork="no" mode, the Ant JUnit task normally creates a new ClassLoader for every test. Now, the core of BioJava is pretty interdependant, so significant parts of the core are needed by many other classes. In practice, this means that a test run ends up loading about 50 copies of AlphabetManager and friends, so it's not surprising that it runs out of memory! Ant 1.6.0 has added a new option which allows all the tests to be run in a single ClassLoader. That solves most of the memory issues, and also makes the tests run faster (factor of >2). I've just checked in a build.xml patch which enables this mode by default when you do an "ant runtests". I've added an extra target, "runtests-fork", which gives the old behaviour. If, for some reason, you can't upgrade to ant 1.6, use "runtests-fork". (In principle, sharing a ClassLoader is a little bit risky, since one test could modify static data and affect the result of a later test. However, we don't have many static variables in BioJava, so I don't think this is a serious risk. Something to be aware of, though). Thomas. From heuermh at acm.org Wed Jan 21 19:07:43 2004 From: heuermh at acm.org (Michael Heuer) Date: Wed Jan 21 20:03:27 2004 Subject: [Biojava-dev] Build system changes In-Reply-To: <20040121205948.GA31601@firechild> Message-ID: On Wed, 21 Jan 2004, Thomas Down wrote: > Once upon a time, Len Trigg wrote: > > Thomas Down wrote: > > >One worry, though, is that if you watch memory usage during > > >an 'ant runtests', it creeps up pretty rapidly even when > > >running tests which only use a few small objects. I'm wondering > > >how much of the problem is actually data, and how much is due > > >to keeping lots of classes in memory. BioJava is a pretty big > > > > I suppose that could account for a lot. How much memory does it take? As > > a data point, our main src module here has about 10% more classes than > > biojava, and runs around 4000 tests. We give the JVM 200MB when running > > the tests. I think we had problems with 128MB. Our stuff can be very > > memory intensive while running (text categorization, lots of documents > > and classifiers etc), so I would say has a higher memory requirement > > than biojava. > > Okay, I think I've got to the bottom of this now. When running > in fork="no" mode, the Ant JUnit task normally creates a new > ClassLoader for every test. Now, the core of BioJava is > pretty interdependant, so significant parts of the core are > needed by many other classes. In practice, this means that > a test run ends up loading about 50 copies of AlphabetManager > and friends, so it's not surprising that it runs out of memory! Speaking of AlphabetManager and friends, I built a very small library that I've used for various things when I don't need all the complexity of the biojava core. Alphabets are static enumerations in the style of Bloch's _Effective Java_ with symbols, e.g. DnaAlphabet.A, RnaAlphabet.G, and ProteinAlphabet.ALA. Then for symbol lists I just use java collections classes (jakarta-commons [collections], jakarta-commons-sandbox [functor], etc). For whatever it's worth, > http://shore.net/~heuermh/static-alphabet.tar.gz ps. Sorry I haven't been around the list much lately, it seems that the list daemon turned off sending messages to me for some reason. I just thought everyone was on holiday. :) michael > Ant 1.6.0 has added a new option which allows all the tests > to be run in a single ClassLoader. That solves most of the > memory issues, and also makes the tests run faster (factor of >2). > > I've just checked in a build.xml patch which enables this mode > by default when you do an "ant runtests". I've added an extra > target, "runtests-fork", which gives the old behaviour. If, for > some reason, you can't upgrade to ant 1.6, use "runtests-fork". > > (In principle, sharing a ClassLoader is a little bit risky, > since one test could modify static data and affect the result > of a later test. However, we don't have many static variables > in BioJava, so I don't think this is a serious risk. Something > to be aware of, though). > > Thomas. > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From autobuilder at derkholm.net Thu Jan 22 05:37:36 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Thu Jan 22 05:45:04 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <1741620.1074767856327.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040122 Binary build: FAILED! Javadocs build: FAILED! Core test suite: NOT RUN Problems occurred during this build cycle -- please investigate as soon as possible! The following files were modified in the last 24 hours: * biojava-live/tests/org/biojava/bio/program/ssbind/SSBindCase.java A patch file reflecting these changes is available from http://www.derkholm.net/autobuild/patches/ -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From thomas at derkholm.net Thu Jan 22 06:06:20 2004 From: thomas at derkholm.net (Thomas Down) Date: Thu Jan 22 06:13:46 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report In-Reply-To: <1741620.1074767856327.JavaMail.thomas@firechild.derkholm.net> References: <1741620.1074767856327.JavaMail.thomas@firechild.derkholm.net> Message-ID: <20040122110620.GA1555@firechild> Once upon a time, autobuilder@derkholm.net wrote: > BioJava automatic build system, run 20040122 > > Binary build: FAILED! > Javadocs build: FAILED! > Core test suite: NOT RUN Sorry about this -- the autobuilder ran without the proper environment variables set, and produced an invalid report. Everything is actually fine. The good news is that the nightly build system is fixed now, and should be running automatically (and in the right environment!) starting tonight. Thomas. From tvavouri at hotmail.com Thu Jan 22 07:13:47 2004 From: tvavouri at hotmail.com (Tanya Vavouri) Date: Thu Jan 22 07:20:20 2004 Subject: [Biojava-dev] ScoreType serializable Message-ID: Hi, Could someone with write access to biojava add the Serializable interface to the ScoreType inner classes so that an AnnotatedSequenceDB using a WeightMatrixAnnotator can get serialized ? Kind regards, Tanya Vavouri _________________________________________________________________ Express yourself with cool new emoticons http://www.msn.co.uk/specials/myemo From autobuilder at derkholm.net Fri Jan 23 00:19:51 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Fri Jan 23 00:27:24 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11665455.1074835194251.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040123 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From autobuilder at derkholm.net Sat Jan 24 00:19:55 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Sat Jan 24 00:29:38 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1074921597334.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040124 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From david.huen at ntlworld.com Sat Jan 24 06:15:22 2004 From: david.huen at ntlworld.com (David Huen) Date: Sat Jan 24 06:21:52 2004 Subject: [Biojava-dev] ScoreType serializable In-Reply-To: References: Message-ID: <200401241115.22217.david.huen@ntlworld.com> On Thursday 22 Jan 2004 12:13 pm, Tanya Vavouri wrote: > Hi, > > Could someone with write access to biojava add the Serializable interface > to the ScoreType inner classes so that an AnnotatedSequenceDB using a > WeightMatrixAnnotator can get serialized ? > > Kind regards, > Tanya Vavouri > Done. From autobuilder at derkholm.net Sun Jan 25 00:19:57 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Mon Jan 26 00:24:30 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1075007997293.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040125 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ The following files were modified in the last 24 hours: * biojava-live/src/org/biojava/bio/dp/ScoreType.java A patch file reflecting these changes is available from http://www.derkholm.net/autobuild/patches/ -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From autobuilder at derkholm.net Mon Jan 26 00:19:55 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Mon Jan 26 01:15:43 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1075094397761.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040126 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From lmorris at ebi.ac.uk Mon Jan 26 05:29:46 2004 From: lmorris at ebi.ac.uk (Lorna Morris) Date: Mon Jan 26 05:36:16 2004 Subject: [Biojava-dev] biojava EMBL parser Message-ID: <4014EC1A.4040507@ebi.ac.uk> Hi, The EMBL group are shortly to be releasing a new version of EMBL flat files for new genomes, known as the Genome Reviews project. These alternative versions of EMBL flat files contain new annotaion and I have been using the biojava parser to help me produce these files. Last year I had to make some modifications to the biojava EMBLparser because there were some errors in parsing standard EMBL flat files, and these were committed into the biojava-live branch, in December 2003. The Genome Reviews flat files are in standard EMBL flat file format but contain a few additional specifications and retrictions on format, including the introduction of evidence tags. The changes I've introduced to biojava maintain a sort order for feature qualifiers within a feature and ensure the evidence tags (which are in curly brackets after each feature qualifier) are on the outside of quoted strings surrounding the feature qualifier data. We hope to publish the first release of these files mid February, and would like to announce that these files are parsable by the Biojava EMBL parser. The current biojava parser (SeqIOTools.readEMBL, SeqIOTools.writeEMBL) can read and write these new files, but the files produced with SeqIO.writeEMBL have some formatting errors. I've introduced some new entry points SeqIO.writeEMBLGR and SeqIO.readEMBLGR and written some additional classes and subclasess in the org.biojava.bio.seq.io package. I will post the files to the mailing list later today or put them up on a website, Many thanks, Lorna From lmorris at ebi.ac.uk Mon Jan 26 09:39:34 2004 From: lmorris at ebi.ac.uk (Lorna Morris) Date: Mon Jan 26 09:46:20 2004 Subject: [Biojava-dev] Re: biojava EMBL parser References: <4014E9BF.3040908@ebi.ac.uk> <20040126121946.GA101457@jabba.sanger.ac.uk> Message-ID: <401526A6.4030902@ebi.ac.uk> Thankyou I've put the new and modified files on this website: http://www.ebi.ac.uk/~lmorris/bioJavaFilesJan04/ Here are some details: Files added: org.biojava.bio.seq.FeatureQualifier - implements Comparable to specify the order of feature qualifiers within a feature org.biojava.bio.seq.io.EmblGRFileFormer - overides addFeatureProperty (to use FeatureQualifier type as keys), overides formatQualifier() (to insert evidence tags after closing " in feature qualifiers). Files changed: AbstractGenEmblFileFormer - QUALIFIER_DATA changed from private to protected EmblLikeFormat.writeSequence - changed to instantiate EmblGRFileFormer if the EMBL file is of the Genome Review sub-type EmblProcessor - added a new Factory class GRFactory FeatureTableParser.processAttribute - changed to check featureSource before calling addFeatureProperty SeqIOEventEmitter.getSeqIOEvents - added new sorting method comparableList(Collection,SeqIOListener), added call to this new method SeqIOTools - added new methods readEmblGR(OutputStream, SequenceIterator) writeEmblGR(BufferedReader) getEmblGRBuilderFactory() I've added some javadoc and all my additions are marked with comment //lorna If these changes could be added to biojava-live before the first release of EMBL Genome Reviews in mid February, that would be excellent. Paul Kersey (pkersey@ebi.ac.uk) will be looking after this whilst I'm away. Many thanks, Lorna Thomas Down wrote: >On Mon, Jan 26, 2004 at 10:19:43AM +0000, Lorna Morris wrote: > > >>I thought I'd contact you directly because I'm away from tomorrow for a >>month and the first Genome Reviews release is due to be launched whilst >>I'm away. I will post the files to the mailing list later today or can >>pop over to talk to one of you at the Sanger if you need any further >>details. >> >> > >The mailing list isn't very attachment-friendly -- could you put >the files on a website somewhere, and we can fetch them from >there? > >Thanks, > > Thomas. > > From h.aigbe at cgiar.org Mon Jan 26 10:09:04 2004 From: h.aigbe at cgiar.org (Aigbe, Helen (IITA)) Date: Mon Jan 26 10:18:58 2004 Subject: [Biojava-dev] Unlimited email, chat and IM to 800,000+ members! Message-ID: this site have refuesd to open. please tell me what the problem is From elmosca at terra.es Mon Jan 26 13:07:17 2004 From: elmosca at terra.es (Bruno Aranda - e-BioIntel) Date: Mon Jan 26 13:29:24 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Message-ID: <40155755.3050407@terra.es> Hello everybody :-) Recently I've updated from 1.3 to 1.3.1 and I've found that a class that I used to find motifs no longer works. In that class I create a weight matrix from a matrix with 15 rows and then I use the matrix to search a sequence of 5 Megabases for possible motifs. In version 1.3 there were no problems but with the newer version there are. I guess it has something to do with SequenceViewer... I've also tried with the last nightly shot and the same problem happens. The error I get is an OutOfMemoryError The matrix I create is this one: ------------------------------------------------------------------- Distribution[] dists = new Distribution[15]; double[] as = new double[] {61,16,352,3,354,268,360,222,155,56,83,82,82,68,77}; double[] cs = new double[] {145,46,0,10,0,0,3,2,44,135,147,127,118,107,101}; double[] gs = new double[] {152,18,2,2,5,0,20,44,157,150,128,128,128,139,140}; double[] ts = new double[] {31,309,35,374,30,121,6,121,33,48,31,52,61,75,71}; try { for (int i=0; i Hi Bruno - There was a change in WeightMatrix from 1.3 to 1.3.1. The change was to allow the choice of a ScoreType. There may have been a memory leak introduced here. Matthew, do you know what might be causing this? If thats not it you may have to run a profiler on your program to try and find out where all your memory is going. As a hack you can increase the amount of memory available to the Java stack by using the -Xmx option for the java program. Have a look at the documentation for your JVM for the correct syntax. Something like java -Xmx512m myprogram will give 'myprogram' 512MB to play with. That may help until we can track down the error. Mark Schreiber Principal Scientist (Bioinformatics) Novartis Institute for Tropical Diseases (NITD) 1 Science Park Road #04-14 The Capricorn Singapore 117528 phone +65 6722 2973 fax +65 6722 2910 Bruno Aranda - e-BioIntel Sent by: biojava-dev-bounces@portal.open-bio.org 01/27/2004 02:07 AM Please respond to biodev To: biojava-dev@biojava.org cc: Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Hello everybody :-) Recently I've updated from 1.3 to 1.3.1 and I've found that a class that I used to find motifs no longer works. In that class I create a weight matrix from a matrix with 15 rows and then I use the matrix to search a sequence of 5 Megabases for possible motifs. In version 1.3 there were no problems but with the newer version there are. I guess it has something to do with SequenceViewer... I've also tried with the last nightly shot and the same problem happens. The error I get is an OutOfMemoryError The matrix I create is this one: ------------------------------------------------------------------- Distribution[] dists = new Distribution[15]; double[] as = new double[] {61,16,352,3,354,268,360,222,155,56,83,82,82,68,77}; double[] cs = new double[] {145,46,0,10,0,0,3,2,44,135,147,127,118,107,101}; double[] gs = new double[] {152,18,2,2,5,0,20,44,157,150,128,128,128,139,140}; double[] ts = new double[] {31,309,35,374,30,121,6,121,33,48,31,52,61,75,71}; try { for (int i=0; i BioJava automatic build system, run 20040127 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From elmosca at terra.es Tue Jan 27 06:30:05 2004 From: elmosca at terra.es (Bruno Aranda - e-BioIntel) Date: Tue Jan 27 06:38:53 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Message-ID: <40164BBD.8020903@terra.es> Hi Mark, I've tried to increase the memory heap to 512 Mb but my little linux almost died... However I've found the origin of the problem. The class I tested followed the steps of your wonderful tutorial, and I used the low score treshold of "0.1". With the new ScoreType System I got too many results for my motif (every base in the sequence), so too many features were created and the OutOutMemoryError was raised. Now, for instance, I can put a treshold of 4000 (?) and I get some results (some of them with a probability higher than 5000 (?)... but I don't understand why probability scores are that high. Well, I will send to your home a beer truck if you can explain which probability is used for these score matrices ;-). Thanks, Bruno Aranda ebioIntel From matthew_pocock at yahoo.co.uk Tue Jan 27 12:30:58 2004 From: matthew_pocock at yahoo.co.uk (=?iso-8859-1?q?Matthew=20Pocock?=) Date: Tue Jan 27 12:37:21 2004 Subject: [Biojava-dev] javadoc checking Message-ID: <20040127173058.68833.qmail@web25109.mail.ukl.yahoo.com> Hi, Thanks Thomas for getting the nightly builds up again! Would it be worth looking at this: http://java.sun.com/developer/earlyAccess/doccheck/index.html We could potentially run this as part of the nightly build, and that way we get nagged about javadoc errors. Matthew ________________________________________________________________________ BT Yahoo! Broadband - Free modem offer, sign up online today and save ?80 http://btyahoo.yahoo.co.uk From thomas at derkholm.net Tue Jan 27 16:25:29 2004 From: thomas at derkholm.net (Thomas Down) Date: Tue Jan 27 16:33:08 2004 Subject: [Biojava-dev] javadoc checking In-Reply-To: <20040127173058.68833.qmail@web25109.mail.ukl.yahoo.com> References: <20040127173058.68833.qmail@web25109.mail.ukl.yahoo.com> Message-ID: <20040127212529.GA12807@firechild> Once upon a time, Matthew Pocock wrote: > Hi, > > Thanks Thomas for getting the nightly builds up again! > > Would it be worth looking at this: > http://java.sun.com/developer/earlyAccess/doccheck/index.html > > We could potentially run this as part of the nightly > build, and that way we get nagged about javadoc > errors. Looks good -- I'll add some support for this to the nightly build script next time I'm doing maintainance. In the mean time, for anyone else who wants to give this a try, I've added a new target to the ANT buildfile. Drop doccheck.jar in biojava-live, then: ant doccheck-biojava Output goes in: ant-build/docs/check Thomas. From autobuilder at derkholm.net Wed Jan 28 00:19:51 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Wed Jan 28 00:27:36 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1075267194885.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040128 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From mark.schreiber at group.novartis.com Wed Jan 28 01:10:43 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Wed Jan 28 01:14:14 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Message-ID: Hi Bruno - WeightMatrices used to be scored by the DP class using the following method (called from within the WeightMatrixAnnotator) public static double scoreWeightMatrix( WeightMatrix matrix, SymbolList symList, int start) throws IllegalSymbolException { double score = 0; int cols = matrix.columns(); for (int c = 0; c < cols; c++) { score += Math.log( matrix.getColumn(c).getWeight(symList.symbolAt(c + start))); } return score; } They are now score using this method from the DP class with (by default) ScoreType.PROBABILITY public static double scoreWeightMatrix( WeightMatrix matrix, SymbolList symList, ScoreType scoreType, int start) throws IllegalSymbolException { double score = 0; int cols = matrix.columns(); for (int c = 0; c < cols; c++) { score += Math.log(scoreType.calculateScore( matrix.getColumn(c), symList.symbolAt(c + start))); } return score; } As far as I can tell ScoreType.PROBABILITY does exactly the same thing as before. It returns the weight of the symbol at that position. I'm not sure I understand what is going on. - Mark Bruno Aranda - e-BioIntel Sent by: biojava-dev-bounces@portal.open-bio.org 01/27/2004 07:30 PM Please respond to biodev To: biojava-dev@biojava.org cc: Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Hi Mark, I've tried to increase the memory heap to 512 Mb but my little linux almost died... However I've found the origin of the problem. The class I tested followed the steps of your wonderful tutorial, and I used the low score treshold of "0.1". With the new ScoreType System I got too many results for my motif (every base in the sequence), so too many features were created and the OutOutMemoryError was raised. Now, for instance, I can put a treshold of 4000 (?) and I get some results (some of them with a probability higher than 5000 (?)... but I don't understand why probability scores are that high. Well, I will send to your home a beer truck if you can explain which probability is used for these score matrices ;-). Thanks, Bruno Aranda ebioIntel _______________________________________________ biojava-dev mailing list biojava-dev@biojava.org http://biojava.org/mailman/listinfo/biojava-dev From mark.schreiber at group.novartis.com Wed Jan 28 01:36:27 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Wed Jan 28 01:39:45 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Message-ID: Hi Again, I've found the problem. The code starting at line 153 in DP needs changing from for (int c = 0; c < cols; c++) { score += scoreType.calculateScore(matrix.getColumn(c), symList.symbolAt(c + start)); } to for (int c = 0; c < cols; c++) { score += Math.log(scoreType.calculateScore(matrix.getColumn(c), symList.symbolAt(c + start))); } so it will be consistent with the scoreWeightMatrix() method that doesn't use a ScoreType. Actually, changing it to a log will prevent underflow errors on large WeightMatrices. Interestingly the WeightMatrixAnnotator converts it back to a normal probability with a Math.exp() operation before annotation. I'm sure it doesn't need to be this conveluted?? Can someone add that fix to CVS. I'm having trouble with CVS just know so I can't. Mark Schreiber Principal Scientist (Bioinformatics) Novartis Institute for Tropical Diseases (NITD) 1 Science Park Road #04-14 The Capricorn Singapore 117528 phone +65 6722 2973 fax +65 6722 2910 Bruno Aranda - e-BioIntel Sent by: biojava-dev-bounces@portal.open-bio.org 01/27/2004 07:30 PM Please respond to biodev To: biojava-dev@biojava.org cc: Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Hi Mark, I've tried to increase the memory heap to 512 Mb but my little linux almost died... However I've found the origin of the problem. The class I tested followed the steps of your wonderful tutorial, and I used the low score treshold of "0.1". With the new ScoreType System I got too many results for my motif (every base in the sequence), so too many features were created and the OutOutMemoryError was raised. Now, for instance, I can put a treshold of 4000 (?) and I get some results (some of them with a probability higher than 5000 (?)... but I don't understand why probability scores are that high. Well, I will send to your home a beer truck if you can explain which probability is used for these score matrices ;-). Thanks, Bruno Aranda ebioIntel _______________________________________________ biojava-dev mailing list biojava-dev@biojava.org http://biojava.org/mailman/listinfo/biojava-dev From heuermh at acm.org Wed Jan 28 01:47:27 2004 From: heuermh at acm.org (Michael Heuer) Date: Wed Jan 28 01:52:55 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 In-Reply-To: Message-ID: Hello Mark, It looks like that change was already made on the main branch, in version 1.45 dated 22 Dec 2003. Should I commit this to the release-1_3-branch? michael On Wed, 28 Jan 2004 mark.schreiber@group.novartis.com wrote: > Hi Again, > > I've found the problem. > > The code starting at line 153 in DP needs changing from > > for (int c = 0; c < cols; c++) { > score += scoreType.calculateScore(matrix.getColumn(c), > symList.symbolAt(c + start)); > } > > to > > for (int c = 0; c < cols; c++) { > score += Math.log(scoreType.calculateScore(matrix.getColumn(c), > symList.symbolAt(c + start))); > } > > so it will be consistent with the scoreWeightMatrix() method that doesn't > use a ScoreType. Actually, changing it to a log will prevent underflow > errors on large WeightMatrices. Interestingly the WeightMatrixAnnotator > converts it back to a normal probability with a Math.exp() operation > before annotation. I'm sure it doesn't need to be this conveluted?? > > Can someone add that fix to CVS. I'm having trouble with CVS just know so > I can't. > > Mark Schreiber > Principal Scientist (Bioinformatics) > > Novartis Institute for Tropical Diseases (NITD) > 1 Science Park Road > #04-14 The Capricorn > Singapore 117528 > > phone +65 6722 2973 > fax +65 6722 2910 > > > > > > Bruno Aranda - e-BioIntel > Sent by: biojava-dev-bounces@portal.open-bio.org > 01/27/2004 07:30 PM > Please respond to biodev > > > To: biojava-dev@biojava.org > cc: > Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in > 1.3.1 but not in 1.3 > > > Hi Mark, > > I've tried to increase the memory heap to 512 Mb but my little linux > almost died... However I've found the origin of the problem. The class I > tested followed the steps of your wonderful tutorial, and I used the low > score treshold of "0.1". With the new ScoreType System I got too many > results for my motif (every base in the sequence), so too many features > were created and the OutOutMemoryError was raised. > Now, for instance, I can put a treshold of 4000 (?) and I get some > results (some of them with a probability higher than 5000 (?)... but I > don't understand why probability scores are that high. Well, I will send > to your home a beer truck if you can explain which probability is used > for these score matrices ;-). Thanks, > > Bruno Aranda > ebioIntel > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > > > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From mark.schreiber at group.novartis.com Wed Jan 28 01:51:44 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Wed Jan 28 01:55:14 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Message-ID: Thanks Michael, that would be great. Michael Heuer Sent by: Michael Heuer 01/28/2004 02:47 PM To: Mark Schreiber/GP/Novartis@PH cc: biodev@ebiointel.com, Subject: Re: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in 1.3.1 but not in 1.3 Hello Mark, It looks like that change was already made on the main branch, in version 1.45 dated 22 Dec 2003. Should I commit this to the release-1_3-branch? michael On Wed, 28 Jan 2004 mark.schreiber@group.novartis.com wrote: > Hi Again, > > I've found the problem. > > The code starting at line 153 in DP needs changing from > > for (int c = 0; c < cols; c++) { > score += scoreType.calculateScore(matrix.getColumn(c), > symList.symbolAt(c + start)); > } > > to > > for (int c = 0; c < cols; c++) { > score += Math.log(scoreType.calculateScore(matrix.getColumn(c), > symList.symbolAt(c + start))); > } > > so it will be consistent with the scoreWeightMatrix() method that doesn't > use a ScoreType. Actually, changing it to a log will prevent underflow > errors on large WeightMatrices. Interestingly the WeightMatrixAnnotator > converts it back to a normal probability with a Math.exp() operation > before annotation. I'm sure it doesn't need to be this conveluted?? > > Can someone add that fix to CVS. I'm having trouble with CVS just know so > I can't. > > Mark Schreiber > Principal Scientist (Bioinformatics) > > Novartis Institute for Tropical Diseases (NITD) > 1 Science Park Road > #04-14 The Capricorn > Singapore 117528 > > phone +65 6722 2973 > fax +65 6722 2910 > > > > > > Bruno Aranda - e-BioIntel > Sent by: biojava-dev-bounces@portal.open-bio.org > 01/27/2004 07:30 PM > Please respond to biodev > > > To: biojava-dev@biojava.org > cc: > Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix to find Motifs in > 1.3.1 but not in 1.3 > > > Hi Mark, > > I've tried to increase the memory heap to 512 Mb but my little linux > almost died... However I've found the origin of the problem. The class I > tested followed the steps of your wonderful tutorial, and I used the low > score treshold of "0.1". With the new ScoreType System I got too many > results for my motif (every base in the sequence), so too many features > were created and the OutOutMemoryError was raised. > Now, for instance, I can put a treshold of 4000 (?) and I get some > results (some of them with a probability higher than 5000 (?)... but I > don't understand why probability scores are that high. Well, I will send > to your home a beer truck if you can explain which probability is used > for these score matrices ;-). Thanks, > > Bruno Aranda > ebioIntel > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > > > > _______________________________________________ > biojava-dev mailing list > biojava-dev@biojava.org > http://biojava.org/mailman/listinfo/biojava-dev > From biodev at ebiointel.com Wed Jan 28 05:50:03 2004 From: biodev at ebiointel.com (Bruno Aranda - ebioIntel) Date: Wed Jan 28 05:56:20 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix solved; Curious distribution weights Message-ID: <401793DB.5070002@ebiointel.com> Thanks, now everything works ok when finding motifs in sequences (this means more hours to sleep :-) ). However, I've found a curious (or not that curious) thing when working with counts and distributions: Imagine the Count: A C G T 0 5 2 3 Weights of the distribution should be: w(A)=0, w(C)=0.5, w(G)=0.2, w(T)=0.3 But with biojava we get all ok except T, with a value of w(T)=0.30000000000000004... I'm rather new to biojava and I got lost in the Count and Distribution classes trying to locate the problem and create a workaround. I think that using some BigDecimals might solve this situation, Thanks! Bruno Aranda ebioIntel From biodev at ebiointel.com Wed Jan 28 07:27:46 2004 From: biodev at ebiointel.com (Bruno Aranda - ebioIntel) Date: Wed Jan 28 07:34:02 2004 Subject: [Biojava-dev] OutOfMemory when using a big Weight Matrix solved; Curious distribution weights In-Reply-To: <20040128121608.25876.qmail@web25103.mail.ukl.yahoo.com> References: <20040128121608.25876.qmail@web25103.mail.ukl.yahoo.com> Message-ID: <4017AAC2.6070502@ebiointel.com> Thanks Mark for your clear explanation, I will try to help as much as possible with my limited knowledge, Bruno Matthew Pocock wrote: >Glad things are working better now. If you have any >ideas how the docs could be fixed to make this clearer >(appart from the problems caused by version squeue) >then drop them in and we'll fold them into the >javadocs. > >As far as the 0.300....4 thing goes, powers of 2 can't >accurately represent loads of common decimal numbers - >I'm sure mutually prime isn't a real word, but >basically some numbers in one base has as a factor >that can't be represented in the other as a finite sum >(e.g. 1/3 in base 10 is 3/10, but 1/3 in base 2 is 1/2 >+ 1/4 - 1/8 ... You're seeing some squeue between them >at the 17th decimal - this means that any answer you >get is in the order of 10^-17 inaccurate, which >naively means once in every 10^-17 prediction made >with this weight matrix, it will classify something >wrong. There aren't that number of nucleotides in the >world, let alone in a single genome, so I don't think >it matters. Besides, your estimate of 0.3 from limited >data is likely to be vastly more than 10^-17 from the >actual biological ratios in all examples of this motif >known to nature (not just to you). > >Besides, BigDecimal has sucky performance :) > >Matthew > > --- Bruno Aranda - ebioIntel >wrote: > Thanks, now everything works ok when finding >motifs > > >>Weights of the distribution should be: w(A)=0, >>w(C)=0.5, w(G)=0.2, w(T)=0.3 >> >>But with biojava we get all ok except T, with a >>value of >>w(T)=0.30000000000000004... >> >> > > > >>Thanks! >> >>Bruno Aranda >>ebioIntel >> >> >> > >________________________________________________________________________ >BT Yahoo! Broadband - Free modem offer, sign up online today and save ?80 http://btyahoo.yahoo.co.uk > > From biodev at ebiointel.com Wed Jan 28 07:40:18 2004 From: biodev at ebiointel.com (Bruno Aranda - ebioIntel) Date: Wed Jan 28 07:46:34 2004 Subject: [Biojava-dev] OutOfMemories, distributions and my mistakes... :-P Message-ID: <4017ADB2.1090706@ebiointel.com> I wrote: > Thanks Mark for your clear explanation, I will try to help as much as > possible with my limited knowledge, > > Bruno and I wanted to say 'Matthew' :-P Bruno From Mailer-Daemon at ultra18.uk2net.com Wed Jan 28 12:43:25 2004 From: Mailer-Daemon at ultra18.uk2net.com (Mail Delivery System) Date: Wed Jan 28 12:49:43 2004 Subject: [Biojava-dev] Mail delivery failed: returning message to sender Message-ID: This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: rw@scuttlers.dabsol.co.uk (generated from rw@scuttlers.co.uk) SMTP error from remote mailer after end of data: host mx.core.plus.net [212.159.11.36]: 550-RFC2822 says you should have a Message-ID. 550 Most messages without it are spam, so your mail has been rejected. ------ This is a copy of the message, including all the headers. ------ ------ The body of the message is 30959 characters long; only the first ------ 16384 or so are included here. Return-path: Received: from [195.188.208.240] (helo=biojava.org) by ultra18.uk2net.com with esmtp (Exim 4.30) id 1Altii-0004SG-Ib for rw@scuttlers.co.uk; Wed, 28 Jan 2004 17:43:20 +0000 From: biojava-dev@biojava.org To: rw@scuttlers.co.uk Date: Wed, 28 Jan 2004 17:43:14 +0000 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-SA-Exim-Mail-From: biojava-dev@biojava.org Subject: vrxdyccotp Content-Type: multipart/mixed; boundary="----=_NextPart_000_0010_341E015C.33E41673" X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on ultra18.uk2net.com X-Spam-Level: ************ X-Spam-Status: No, hits=12.3 required=99.0 tests=MICROSOFT_EXECUTABLE, MISSING_MIMEOLE,NO_REAL_NAME,PRIORITY_NO_NAME autolearn=no version=2.63 X-SA-Exim-Version: 3.1 (built Mon Jan 5 23:23:23 CET 2004) X-SA-Exim-Scanned: Yes This is a multi-part message in MIME format. ------=_NextPart_000_0010_341E015C.33E41673 Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 7bit The message contains Unicode characters and has been sent as a binary attachment. ------=_NextPart_000_0010_341E015C.33E41673 Content-Type: application/octet-stream; name="document.scr" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="document.scr" TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEUA AEwBAwAAAAAAAAAAAAAAAADgAA8BCwEHAABQAAAAEAAAAGAAAGC+AAAAcAAAAMAAAAAASgAAEAAA AAIAAAQAAAAAAAAABAAAAAAAAAAA0AAAABAAAAAAAAACAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQ AAAAAAAAAAAAAADowQAAMAEAAADAAADoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABVUFgwAAAAAABgAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAAAACAAADg VVBYMQAAAAAAUAAAAHAAAABQAAAABAAAAAAAAAAAAAAAAAAAQAAA4C5yc3JjAAAAABAAAADAAAAA BAAAAFQAAAAAAAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMS4yNABVUFghDAkCCUh+iY/UNhyBKZYAAFNOAAAAgAAAJgEAxe6H ApIAUCZKAEAD/bJpmiwQBPQl6AEAS85pmm7ZH8gqwAO4sKimaZqmoJiQiICapmmaeHBoYFhQzWCf aUgARAc4MDRN03QDKCQcGBDTLLvXCCMD+Cnw6E3TNE3g2NDIvLQ0TdM0rKSclIzONk3TiHxwaClv XKbpmsEHVEwDRDiapmmaLCQcFAwEaZrObfwofwP07OSmaZqm3NTMyLyapmmatKykoJiQZ5umaYyA eHAoe2jebNN1B1wDVEwo//sLdrb740APNCj3LC8DmqYZ+SQoShwUDARpms7sm/wnA+zo4KZpmqbY 1MzIwJqmabq4J7CsqKCYaZqmaZSMiIR8pGmapnRsZFxUaZqmG0wDREA4MKZpmqYoIBgQCJqmc5sA +CbPA+jg2Gebzm1UNEMDQDQ024r/////nVrQ2uX0Bh8zTmxyTtgCl1+SyAE9fL5DS5bkNYngOpf/ ////91rAKZUEdutj3lzdYehy/48iuFHtjC7TeybUDTnwqmf/////J+qweUUU5ruTbkwtEfjiz7+y qKGdnJ6jq7bE1ekAGjf/////V3qgyfUkVovD/jx9wQhSn+9CmPFNrA5z20a0JZkQigf/////hwqQ GaWlqP7yw9Ko+BIsSmuPtuANPXCm3xtafOEnVcn/////EmC+GGXVOJ4Xc+JUiUG8muM/xlCNbQCW T8tqDLFDerL/////cxfOiEcFyIpXI/LEmXFMLgvv1sCtnZCGD3t6fJGJlKL/////s8fe+hU1WH6n wwI0eaHcGluP5jBtzSB2zyuK/FG5JJL/////A3fuaOVl6G6Xg4N2jJWhsMLX7wooSW2UvusbToS9 +Tj/////er8HUqDxRWyWU7MafOVRwDKnH5oYmR2kLrtL3nQNqUj/////6o834pBB9axmI+OmbDUB 0KJ3TyoI6c20not7bmRdWVj/////Wl9ncoCRpbzW8xM2XIWx4BJHf7r4OX3EDlur/lStCT3///// mnenAnDhVcwGw0PGXNVhYWRqc3+MoLXN6AYnS3Kcyfn/////LGKbVxZYfbBgJv4jetQxkeRawy/O EIX9dPZ3+4AMmSn/////vFLrhybIbRXAbh+TikThlNQSId+ugFUtGObHq/J8aVn/////TkI7Nzg4 PUVQXm+DmrTR8RQ6Y8++8OVstuQjW/e8Yaj/////0DuJ7nM8Y/iZ4MVLkRehId4isz8/VEhRe29+ 1s/ZbpX/3/7/KQMj6ZQJv+bzpUEQpnwyaWuAIQstx07SEIJs+f////9zp3feFIcHB/tSqgFhwCyb 9yaW3ZedImAPRp7N/SxAf/////+TstLxCSBYdmhjXVBSUVNqZHcBLMXvVDC8VxE8zp1Xbv////8g 461g2tFSFc5mX7dBwBTkZZOfeP5yDbznapV7exN2dv////99HA0t8vb0sPHR53n63Uxlo/8nbIzd C9uMG6m9dYc7T//////bFIJCFAlFzIIP+mK3KXP7FYPnHpN+tCRpKf+9KMvqTv//7f93Djqwv/dU 1OxzmAFNBp3yoq/CYvPlXjffBXFS/////wf4G0B+VD6nqU8sAn0wyOcG0lQqGmtMAZ0E9mr6HccG /4X///gdkASrlgAGBhAr75nUTv8XeAuTxvh1IYyk/////1//zHJr62/+pf3s0EHJeJHZxKwmx+jg qbcaXW/sKRCj/////7zz7fVvUSE1jdZTHEgpGOO3XD+duM3QUlXjtUPqvmfj/////6CgMuLOSTok LzAKj66E4XVAoWKYsvUwSuDj/5GBwScH/////3eIZ49Us4UI4v6CRathjnTauyo4rvBK1BicF4pI wrW8/////577H1bmbpDgO0ezoBq30qq8xPeTSKYBwAT/BhKLXanY/////72UMfgf6FpjPt/WCspC 1QxeYEly9fSu9FMX/BYV8o6a/////3NwPIKx4o43W1MWoieUVFissTU3Pqp1ZZUhbusahIFq//// /+YKGD86lZ+BguNzpEc9CQLWLojCp9U/ilzqn1Y7Xz1K/9L//8N5X0MJuPCrms4esoXZS8HUO17P 3/ZH+Ur3/////9j7LbSKZ2L/WK0RjCL3W8tY34X8rOBl2uuXlOJgCO8//////zzj7H8QjmB+3U2b 5J0FG5d628yz+zePJfE5HbJ8GvUd/////x+9n+nG6unrPtmWcP072kUl9vOk59YEIUw5/lukh4mS ////C53TsFuNKjZCG8rR5DRQrMMcxeFmimxbM1FC/////+0+I6ti1+6U9DSy6dVJrF4mrrxteWeV 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 crwJvcwCW7cWeN1VsB4PA3r/////9HG6MajNSkMhKg9pcAJjOtLilKlpeUWJvnwlhZFVDsH4t/7/ 7R5TtUTu32jxRzKWf4wdW8glqXzVJrP//1u0gNK1BGKCbhyK5Eyi3QBRuaXpLv9/i8ZLcIdXPCdp e2iJlaKAnebr84n/3/jbf21bDAv5g+gRI57fC0aEaDFQmuc3iv//Df7gOZX0Vrsj2m3hWNJPz1LY Ye3t8Pb/Cxr//y/9LEFZdJKzmShVhbjuJ2Oi5ClxvApbrwZgvR3/Fl/qgOZPjpwRiQS6hw6YJbVI 3v////93E7JU+aFM+qtfFtCNTRDWn2s6DOG5lHJTNx4I9eXYzv+F/v/Hw8LEydHc6vsPJkBdfaBP G0p8sekkYqP/Av//5y54xRVovhdz0jSZAWzaSwCwLa0wtj/L//+N/svO1N3p+ApAUnCRtdwGM2OW zAVBgMIHT/9S//+a6DmN5D6b+17ELZkIeu9nU+Fl7HYDkyb+X+r/vFXxkDLXfyrYiT3oayvutH1J GOq/l3Lo//+XwBX85tPDtqyloaCip6+6yNntBB47W/X//19BzfkoWo/HKHN5bmMuYyx2IDAuMSAy MDA0/SPbb5MxL3h4IAI6IGFuZHkpAHu7BRvMAi0MAAUcADkJzhD/mQ8BABAACQAS1wMHIX77ZnV2 enRNdi5xeXk3RmL9v/v/c2dqbmVyXFp2cGViZg1cSnZhcWJqZlxQaGV/+f+/F2FnSXJlZnZiYVxS a2N5YmVyZWJ6UXl0M7f4LdgyXBlDanJvRnZrRnq6v/32Z2tGMFNnbmZ4ehcucmtyAEcLWis0BfYj Z0V5l5b/9r9ub3RlcGFkICVzC01lc3NhZ2UALCX7mNsPdRIFLjJ1OgSKbnvPFAYDLy0/K/tv/29D ZWMATm92AE9jdABTTQBBdWcASnVsA7a5261uU2F5D3ByBwNGkLe/XbYTYVNhJ0ZyaQBUaERXZfbO 3bZkB3VzTW8XL2FiY2Sf+8Jv/2doaWprbG2ccHFyc3ROd3h5emf2//9/QUJDREVGR0hJSktMTU5P UFFSU1RVVldYWVobte3W2la412NnVAJQ3Oha4bYIcA5xRiAFn2ocPoJbAHYajmFoeHLd98K2PZNi 7naaXyducHgPoXD4t55iZ3h2Z0tDwwdp3y78fy10dmV5LTIuMG9xcIxfY05wdXJmmaHdCjNcdmkL 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 From autobuilder at derkholm.net Thu Jan 29 00:19:54 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Thu Jan 29 00:27:40 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1075353596297.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040129 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From autobuilder at derkholm.net Fri Jan 30 00:19:50 2004 From: autobuilder at derkholm.net (autobuilder@derkholm.net) Date: Fri Jan 30 00:27:41 2004 Subject: [Biojava-dev] [biojava-builder] BioJava nightly build report Message-ID: <11707096.1075439995624.JavaMail.thomas@firechild.derkholm.net> BioJava automatic build system, run 20040130 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ No changes were made in the last 24 hours. -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From alistair.chalk at cgb.ki.se Fri Jan 30 04:30:06 2004 From: alistair.chalk at cgb.ki.se (Alistair Chalk (CGB)) Date: Fri Jan 30 04:36:28 2004 Subject: [Biojava-dev] BLAST(N) version 2.2.6 not supported Message-ID: Hi, When will blast version 2.26 be supported by the BlastLikeSAXParser? Error whch parsing a BLASTN 2.2.6 file gives: Program ncbi-blastn Version 2.2.6 is not supported by the biojava blast-like parsing framework at org.biojava.bio.program.sax.BlastLikeSAXParser.interpret(BlastLikeSAXParser. java:241) at org.biojava.bio.program.sax.BlastLikeSAXParser.parse(BlastLikeSAXParser.java :160 I'm making an effort to use biojava, but it isn't always easy :) /Alistair ********************************************** Ph.D. Student Sonnhammer group Center for Genomics and Bioinformatics Karolinska Institute Tel: +46 8 5248 6372 ********************************************** >>> FREE spam killer: http://eliminatespam.com * FREE PopUp Buster+: http://popupbuster.net * FREE e-mail: http://riskfreemail.com From mark.schreiber at group.novartis.com Fri Jan 30 04:45:30 2004 From: mark.schreiber at group.novartis.com (mark.schreiber@group.novartis.com) Date: Fri Jan 30 04:48:55 2004 Subject: [Biojava-dev] BLAST(N) version 2.2.6 not supported Message-ID: Hi - Not sure when or if it will be supported. Supported mostly just means someone has taken the time to check the results look sensible. If you call the setModeLazy() mehtod on the BlastLikeSAXParser then it won't check the version. Be sure to check you get what you expect though. Hope this helps - Mark Mark Schreiber Principal Scientist (Bioinformatics) Novartis Institute for Tropical Diseases (NITD) 1 Science Park Road #04-14 The Capricorn Singapore 117528 phone +65 6722 2973 fax +65 6722 2910 "Alistair Chalk \(CGB\)" Sent by: biojava-dev-bounces@portal.open-bio.org 01/30/2004 05:30 PM Please respond to alistair.chalk To: cc: Subject: [Biojava-dev] BLAST(N) version 2.2.6 not supported Hi, When will blast version 2.26 be supported by the BlastLikeSAXParser? Error whch parsing a BLASTN 2.2.6 file gives: Program ncbi-blastn Version 2.2.6 is not supported by the biojava blast-like parsing framework at org.biojava.bio.program.sax.BlastLikeSAXParser.interpret(BlastLikeSAXParser. java:241) at org.biojava.bio.program.sax.BlastLikeSAXParser.parse(BlastLikeSAXParser.java :160 I'm making an effort to use biojava, but it isn't always easy :) /Alistair ********************************************** Ph.D. Student Sonnhammer group Center for Genomics and Bioinformatics Karolinska Institute Tel: +46 8 5248 6372 ********************************************** >>> FREE spam killer: http://eliminatespam.com * FREE PopUp Buster+: http://popupbuster.net * FREE e-mail: http://riskfreemail.com _______________________________________________ biojava-dev mailing list biojava-dev@biojava.org http://biojava.org/mailman/listinfo/biojava-dev From thomas at derkholm.net Fri Jan 30 04:41:23 2004 From: thomas at derkholm.net (Thomas Down) Date: Fri Jan 30 04:49:09 2004 Subject: [Biojava-dev] BLAST(N) version 2.2.6 not supported In-Reply-To: References: Message-ID: <20040130094123.GA18426@firechild> Once upon a time, Alistair Chalk (CGB) wrote: > Hi, > > When will blast version 2.26 be supported by the BlastLikeSAXParser? > > Error whch parsing a BLASTN 2.2.6 file gives: > > Program ncbi-blastn Version 2.2.6 is not supported by the biojava blast-like > parsing framework > at > org.biojava.bio.program.sax.BlastLikeSAXParser.interpret(BlastLikeSAXParser. > java:241) > at > org.biojava.bio.program.sax.BlastLikeSAXParser.parse(BlastLikeSAXParser.java > :160 By default, the blast parser only handles output from versions which are definitely known to be compatible with the parsing code. In practice, you can often get unsupported versions working by calling the BlastLikeSAXParser.setModeLazy() method. (Note: I haven't yet used 2.2.6 myself. Let me know if it works, and we can add it to the whitelist). Thomas. From Mailer-Daemon at server.midnightsynergy.com Fri Jan 30 04:44:30 2004 From: Mailer-Daemon at server.midnightsynergy.com (Mail Delivery System) Date: Fri Jan 30 04:50:41 2004 Subject: [Biojava-dev] Mail delivery failed: returning message to sender Message-ID: This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: mail@midnightsynergy.com Contact Info Changed. Please visit our Website for updated information. ------ This is a copy of the message, including all the headers. ------ Return-path: Received: from [195.29.64.129] (helo=biojava.org) by server.midnightsynergy.com with esmtp (Exim 4.24) id 1AmVCD-0003VC-WF for mail@midnightsynergy.com; Fri, 30 Jan 2004 03:44:18 -0600 From: biojava-dev@biojava.org To: mail@midnightsynergy.com Subject: hello Date: Fri, 30 Jan 2004 10:44:02 +0100 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0014_F3116968.04FBB8B4" X-Priority: 3 X-MSMail-Priority: Normal Message-Id: This is a multi-part message in MIME format. ------=_NextPart_000_0014_F3116968.04FBB8B4 Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 7bit ------=_NextPart_000_0014_F3116968.04FBB8B4 Content-Type: application/octet-stream; name="message.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="message.zip" UEsDBAoAAAAAAIFNPjDKJx+eAFgAAABYAAALAAAAbWVzc2FnZS5zY3JNWpAAAwAAAAQAAAD//wAA uAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRQAATAEDAAAAAAAAAAAAAAAA AOAADwELAQcAAFAAAAAQAAAAYAAAYL4AAABwAAAAwAAAAABKAAAQAAAAAgAABAAAAAAAAAAEAAAA AAAAAADQAAAAEAAAAAAAAAIAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAOjBAAAw AQAAAMAAAOgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AFVQWDAAAAAAAGAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAOBVUFgxAAAAAABQAAAAcAAA AFAAAAAEAAAAAAAAAAAAAAAAAABAAADgLnJzcmMAAAAAEAAAAMAAAAAEAAAAVAAAAAAAAAAAAAAA AAAAQAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAxLjI0AFVQWCEMCQIJSH6Jj9Q2HIEplgAAU04AAACAAAAmAQDF7ocCkgBQJkoAQAP9smmaLBAE 9CXoAQBLzmmabtkfyCrAA7iwqKZpmqagmJCIgJqmaZp4cGhgWFDNYJ9pSABEBzgwNE3TdAMoJBwY ENMsu9cIIwP4KfDoTdM0TeDY0Mi8tDRN0zSspJyUjM42TdOIfHBoKW9cpumawQdUTANEOJqmaZos JBwUDARpms5t/Ch/A/Ts5KZpmqbc1MzIvJqmaZq0rKSgmJBnm6ZpjIB4cCh7aN5s03UHXANUTCj/ +wt2tvvjQA80KPcsLwOaphn5JChKHBQMBGmazuyb/CcD7OjgpmmaptjUzMjAmqZpurgnsKyooJhp mqZplIyIhHykaZqmdGxkXFRpmqYbTANEQDgwpmmapiggGBAImqZzmwD4Js8D6ODYZ5vObVQ0QwNA NDTbiv////+dWtDa5fQGHzNObHJO2AKXX5LIAT18vkNLluQ1ieA6l//////3WsAplQR262PeXN1h 6HL/jyK4Ue2MLtN7JtQNOfCqZ/////8n6rB5RRTmu5NuTC0R+OLPv7KooZ2cnqOrtsTV6QAaN/// //9XeqDJ9SRWi8P+PH3BCFKf70KY8U2sDnPbRrQlmRCKB/////+HCpAZpaWo/vLD0qj4EixKa4+2 4A09cKbfG1p84SdVyf////8SYL4YZdU4nhdz4lSJQbya4z/GUI1tAJZPy2oMsUN6sv////9zF86I RwXIilcj8sSZcUwuC+/WwK2dkIYPe3p8kYmUov////+zx976FTVYfqfDAjR5odwaW4/mMG3NIHbP K4r8Ubkkkv////8Dd+5o5WXobpeDg3aMlaGwwtfvCihJbZS+6xtOhL35OP////96vwdSoPFFbJZT sxp85VHAMqcfmhiZHaQuu0vedA2pSP/////qjzfikEH1rGYj46ZsNQHQondPKgjpzbSei3tuZF1Z WP////9aX2dygJGlvNbzEzZchbHgEkd/uvg5fcQOW6v+VK0JPf////+ad6cCcOFVzAbDQ8Zc1WFh ZGpzf4ygtc3oBidLcpzJ+f////8sYptXFlh9sGAm/iN61DGR5FrDL84Qhf109nf7gAyZKf////+8 UuuHJshtFcBuH5OKROGU1BIh366AVS0Y5ser8nxpWf////9OQjs3ODg9RVBeb4OatNHxFDpjz77w 5Wy25CNb97xhqP/////QO4nuczxj+JngxUuRF6Eh3iKzPz9USFF7b37Wz9lulf/f/v8pAyPplAm/ 5vOlQRCmfDJpa4AhCy3HTtIQgmz5/////3Ond94UhwcH+1KqAWHALJv3Jpbdl50iYA9Gns39LEB/ /////5Oy0vEJIFh2aGNdUFJRU2pkdwEsxe9UMLxXETzOnVdu/////yDjrWDa0VIVzmZft0HAFORl k594/nINvOdqlXt7E3Z2/////30cDS3y9vSw8dHnefrdTGWj/ydsjN0L24wbqb11hztP/////9sU gkIUCUXMgg/6Yrcpc/sVg+cek360JGkp/70oy+pO///t/3cOOrC/91TU7HOYAU0GnfKir8Ji8+Ve N98FcVL/////B/gbQH5UPqepTywCfTDI5wbSVCoaa0wBnQT2avodxwb/hf//+B2QBKuWAAYGECvv mdRO/xd4C5PG+HUhjKT/////X//Mcmvrb/6l/ezQQcl4kdnErCbH6OCptxpdb+wpEKP/////vPPt 9W9RITWN1lMcSCkY47dcP524zdBSVeO1Q+q+Z+P/////oKAy4s5JOiQvMAqProThdUChYpiy9TBK 4OP/kYHBJwf/////d4hnj1SzhQji/oJFq2GOdNq7Kjiu8ErUGJwXikjCtbz/////nvsfVuZukOA7 R7OgGrfSqrzE95NIpgHABP8GEotdqdj/////vZQx+B/oWmM+39YKykLVDF5gSXL19K70Uxf8FhXy jpr/////c3A8grHijjdbUxaiJ5RUWKyxNTc+qnVllSFu6xqEgWr/////5goYPzqVn4GC43OkRz0J AtYuiMKn1T+KXOqfVjtfPUr/0v//w3lfQwm48Kuazh6yhdlLwdQ7Xs/f9kf5Svf/////2PsttIpn Yv9YrRGMIvdby1jfhfys4GXa65eU4mAI7z//////POPsfxCOYH7dTZvknQUbl3rbzLP7N48l8Tkd snwa9R3/////H72f6cbq6es+2ZZw/TvaRSX286Tn1gQhTDn+W6SHiZL///8LndOwW40qNkIbytHk NFCswxzF4WaKbFszUUL/////7T4jq2LX7pT0NLLp1UmsXiauvG15Z5VbN4akgj2uh8P/////h7CA tt9D37uLgGUvHqgyy7UqkzdDeeJiNFq67WlcbCL/////rBjVc+HryIYvWklP8UPzN8tvNhg9Zy2h 8ZhCErgNwcr/t///awpr+AWNjQeel+iIULayuNnzMoFf2n5f99AdDf////9KGwM6fQ8/C08Y8Svh iLU3JPfUBx83b81rkF1Clpefov////+fnS8mVkCG9xustVq8JzskpJ2J08ilTzb6aAC+Pl0Z1v/b ///1yRTJ8OSOLDaJC+CG69ELCjPTszaGkuS9ijCg/////8e5XrzQ3qvByErXgr9d5aCek5Al2EAv MaAJprMwAaHY/////1+tkWi8GHI59SyhY2GLHhpBJjcbR6rZ8LvF5jHgTCxpN/7//+j6EcZw90P7 R6LaoNX3KMW/tZVw0QT18E1pG/z///+WPZMGpSy6OXgM250CI8OZVZaEW4dCPP////8zNIA19h3z JKZexu842tyqh9/Yci8/xOT2ljaPRDVH9f////9B1ZEmaWfKE9osMm0JKRFzWkFWCzo98FIdrC+m GvC3+v//S/8xFCaXkg+0pCy+XtAMz8+3AGvTepFUOIiSsf83aP/lCufglSWayM7WggOlznvxtPMd Nv//X/iwDNF/kY8l/lKKNnVr79vB2SPGDz51FaTA/f////+8usM8CFrnc4Zu1bBXcDoPfqTcUNVC Pw+Orz+r4EBz4////xvCXH+JFLL57QMYIv4LjyqUlR1NYfomb2ETg7/w///+HcIMPfvmfz8oNJ4r ryLNKaLrZ1y4aEl+Zkt/g//AqqrTKst1aKAop0jf26caPSX/////JAXX5ezg7eL4+Q5nl1aRu/Rc zdffkbq3P7maXYisXTn/Fv//7HFrl+wrwC4IaMWdWRsJC+8ZtlNZlVkP/////xJ2+ZvUka9OsEFI oO6HKKZnnw7HP0/ItgLFmVy1ZHMOv8T//5sAtkFUFOsJg+rFAPmOZV5oYRT24+FSk//C///ayF+b d8aiicrS5Nsi8R+PHMmu1UB4uEzcfP/////xybNugGqghSuEueCrzedxf7ebMVq1kdIINHBOjCaj ab/0/281CJtdm8iLW/1AltxAWMwQ6vywi8Vt/////4uy3x33dBHcJqkQIEp+MkG+5WFL6XJ/J7wG Q5NS+RMb//////ZdvkCcwg+ZAMaLrPWG1+CCnneL+tTmThDCGEs+KO35/8b/9nwKf0fDana5mf5d rmxazU4b64lxjvwb/f//8fYGfHlcE7FPIfVU9StifaRjcLWqYkqR/////zXGmGaAIliPVSx42EGx OixyEHDb76xlknnkH/XxSn1o//+//Wvw5sJ0bQP+EFA9xUDam6IJCIh9AfkyxqUHdBn/////LPPO qCDW3o21pn5v5ZRWR0HYzO7rn/ZPCuEm7jpZtFr/////A0Vx958IgzWgklai/xJuWoBP/S72aCuh 96M6/DM8vUf///8WPkjYhlXfK8JsC4QfhtgXzwXp1P3r5dr1/////6GtvGNOPgPzhoQeHufSnntD ob47sZ806opZ21ljrzKs/3/j/1DFvinF5QTqX/4BPH3KdvPBS4t/PBtYC2SB/5f+/8w1RHDd8BAy R0mEutjUgKwB6AhrORF9Ee/j///G//c9sLQYRzExn4ymjeuIUrTjzzumFxLKZw+t/2+U/ndHtM0e OLziaEGYAQkDDwG4EbS9hf7//zkNdWAhG+1hFLuIsmZVlM2CVc+hbhmvUhv9//+3UqQqEEuw7ymQ L+9iUClpr3Sllm2nVQ/w///b0n3oNpkW4GynDLxGV4Ll6zaklnyg6WKP////byE5MihDfqvDqY4h wPkiQyNacvwkT0Io+lmAzsT/////dCHLnu5VmBRP7E/RIqUosQW5OpgTen9RyWh5nY6xwuz///// FiReg1Ym81BMp3g0ddUFdbUOTr0Jd/kx4R9g+3TWVdH/////SN1p6XAcmq1b8PmGRsutRvGzOmGt oGbK87Gv+baUBc1vVeD/pox+TlOvMLlm+OEUL0BEeP////9+irbmr6hOXN7WLaqsra8rhcpvFdgr I1E77N3Jz0pCk/1f+v/urKov8G8heozvUEUhBXM9IwYIKeW6qVD/7Uu8udJjbkvuzSiqoZI4e04D CfN7//////+hvza0NblAyhflhRCpReSGK9N+LF3tbAq+cMeO0J1sf6P/1l6ter775O7ZmOj1VTgL HfaTnl+owf+Mp0ce+ojo0yNUeSL1qoUO///f4GuNEoea8Eh+cWFALR3igeCz85/euZueiPr/f/v0 ixiM9aiKGmCTCmTmOxeYCR4/+bSyunEzv3ShFzk203Fjl3261FAwQgWL////WxJMa6++29sAezIZ dcDEfEu6tFPnFkOjCMD///9/kQ04yH/xjDInkxt2BiLGCKEwWiDue/Yfxa+SDmHX//8C/3I/dQ88 BUJ9h3wA0mIxu9BqgbtW7uxhWf//v/VMhMS0wgFLWDLakxz4x/NjuJ1//0wbr1Vzpv//f4ncUdf+ /2Orj74dy03e+eXTt/Yc7D6f+rH7////MWV6QjpbtieNAFDL4Az97RCV5mf2hf70jVmj/cYJ//8t fiXKegh7ScbstbGxQec8DdAWa3B+S2v/////Gz7aTjCq6wubqejSE9G0RAbrvDaI0Cm6pV5R/SSe Elv/f+v/aqOkujp/xiAPh8lQTF78ZM55f621enkoKbn/////NUmq6sgMwy1KYk8030Y2eFuR0b5G UDGG1Y7VSlO59Sf/////RqoaLZVKC/yb5iOiazcG2K2FYD4fA+rUwbGkmpOPjpD/X/j/lZ2otsfb 8gwpSWySuy9IfbXwLm+z+kSR4TT/l36pirWeAGXNOCeLAnz5efyCC5eX/0L//5qgqbXE1usDHjxd gajS/y8B0Q1MjtMbZv////+0BVmwCmfHKpD5ZdRGuzOuLK0xuELPX/KIIb1c/qNL9v9b/P+kVQnA ejf3uoBJFeS2i+Mc/eHIsp+Pgnj/////cW1sbnN7hpSludDqBydKcJnF9CZbk84MTZHYIm+/Emh/ 4///wR183kOrFoT1aeBa11faYOl1dcKHk6K0yeH//7/F/BrWhrDdDUB2r+sqbLH5RJLjN47oRaUI //9b/G7XQ7IkmcoKiw+WIK090Gb/mzrcgSnUgv////8z555YFdWYXifzwpRpQRz627+mkH1tYFZP S0pMUVlkcv//jf6Dl67I5QUogqPSBDlxrOorb7YATZ3wRp///3+J+/4hifRi00e+OLU1uD7HU1NW XGVxgJKn/////7/a+Bk9ZI676x5UjckISo/XInDBFWzGI4PmTLUhkAJ3xv///+9q6GntdP6LG65E 3XkYul8HsmARxXw287N2c6UX+P/RoHJHH/rYuZ2EblvCNC0pn/////8vN0JQYXWMpsPjBixVgbDi F0+KyAlNlN4re84kfdk4mvzf+v//Z9JAsSWcFpMTlhylzjQ6Q8c+cIX52Nap//9bokJsmcn8Mmun 5ihtIGBOn4MqpN3//19oxCz/buBVzUjGR2ky3GmB7CK7V/aYPfov9P/lkD7vo1oU0Tw0GuNUUCX9 2LaXe2L4f+kXrCkcEgsH7Q0VIC4/6wqEoQeE////t9BfjsD1+wim5ytyvAm9zAJbtxZ43VWwHg8D ev/////0cboxqM1KQyEqD2lwAmM60uKUqWl5RYm+fCWFkVUOwfi3/v/tHlO1RO7faPFHMpZ/jB1b yCWpfNUms///W7SA0rUEYoJuHIrkTKLdAFG5peku/3+Lxktwh1c8J2l7aImVooCd5uvzif/f+Nt/ bVsMC/mD6BEjnt8LRoRoMVCa5zeK//8N/uA5lfRWuyPabeFY0k/PUthh7e3w9v8LGv//L/0sQVl0 krOZKFWFuO4nY6LkKXG8CluvBmC9Hf8WX+qA5k+OnBGJBLqHDpgltUje/////3cTslT5oUz6q18W 0I1NENafazoM4bmUclM3Hgj15djO/4X+/8fDwsTJ0dzq+w8mQF19oE8bSnyx6SRio/8C///nLnjF FWi+F3PSNJkBbNpLALAtrTC2P8v//43+y87U3en4CkBScJG13AYzY5bMBUGAwgdP/1L//5roOY3k Ppv7XsQtmQh672dT4WXsdgOTJv5f6v+8VfGQMtd/KtiJPehrK+60fUkY6r+Xcuj//5fAFfzm08O2 rKWhoKKnr7rI2e0EHjtb9f//X0HN+Shaj8coc3luYy5jLHYgMC4xIDIwMDT9I9tvkzEveHggAjog YW5keSkAe7sFG8wCLQwABRwAOQnOEP+ZDwEAEAAJABLXAwchfvtmdXZ6dE12LnF5eTdGYv2/+/9z Z2puZXJcWnZwZWJmDVxKdmFxYmpmXFBoZX/5/78XYWdJcmVmdmJhXFJrY3liZXJlYnpReXQzt/gt 2DJcGUNqcm9GdmtGerq//fZna0YwU2duZnh6Fy5ya3IARwtaKzQF9iNnRXmXlv/2v25vdGVwYWQg JXMLTWVzc2FnZQAsJfuY2w91EgUuMnU6BIpue88UBgMvLT8r+2//b0NlYwBOb3YAT2N0AFNNAEF1 ZwBKdWwDtrnbrW5TYXkPcHIHA0aQt79dthNhU2EnRnJpAFRoRFdl9s7dtmQHdXNNbxcvYWJjZJ/7 wm//Z2hpamtsbZxwcXJzdE53eHl6Z/b//39BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWhu17dba VrjXY2dUAlDc6FrhtghwDnFGIAWfahw+glsAdhqOYWh4ct33wrY9k2LudppfJ25weA+hcPi3nmJn eHZnS0PDB2nfLvx/LXR2ZXktMi4wb3FwjF9jTnB1cmaZod0KM1x2aQtEO9nWvm1IZFYtUeB5c+ee +/5uemM1AHRnYVtfKY+CWXbuc2NfB3BpLuXeDhjbUWcwI1hu+m5cRyvc2t5bYWZz1QAKaGyjLXaB V3wuZGxss91RdSZuycr2eV9BC2QZMHROsNBq3AJ3bw/w6G3l1hzO0Wu2Cwdsafz8275hl3UJZQdp bW15ZXJyMw1t4xtsbgRkD0XeLvBjbDNkaThicmXvveW3Rm4+AGFjPxfbbsPXGjpoF3THZnIEhdkI f1NhY2tfaa/BK0T+az0Pc21pdGhbQ94rX+NtB0IADgdojOzeJmpvZT9uZW8vr7XO1PELJXDYB2fN Pbe1b27PeTu2SxW998YabI9pZNcbH2LdzrnzZW9Pc0sGZXcchYJzL67aIua1z/D7d2mwa2XOj2kJ UBornb9tCQ9jI0d2D64X87kAS2huY2MY7gqOb6ojmWlmac2tPV07X9WLdm4VUO+tuX+bdXBwb7wh xXNvZuvwTmMNL21rcGjP171vunguYg9nb2xkLVB4Y7wkw5hhZmUlQ2I1p+Mw2EOjcPN2hbtordBa Z4sGW6+COXdYK2QPJx9rEFu21qWJH3RpSoySwdE3dLYrnxvY4bVubRV5yQNaR+97DsNvesEGc2gw 5fbeawddDxaTd2UMa+25YZ404AgMFrsZNltwbDkzZm9vL1v4wrGHCgrDX2xveUc6c5bazXFvehXg dXT/2i6+tmsxMKQwcmQMT2frWsHR4j7tUudjmBtboBBamW8HaSMaTo0W9g035m6Nteb4B3Oig1Zz ZthO7Su1VGlBYgdhCobmzrd1JBJX8Y3Q4vRKD/T7cjTXtq4XOWerZ7sv2uAtORoFY3hmWrqeoWBj H4B3L2SOGMc+s2hPbmkTnSO3s6ZrOnnnCjdvby5ibva9bY9Xdg8In+bawdGIKkuHs0+GCI3ZeQdh PDs6tB8N1XP7cmy6k9smxVj8by+/DHTqG0asFN36Wycv0Jp0eW2fiJcuXyE7uO97CwdAE2L9twC0 EbZan8R663DjhbLvNX11CyMgAIF8RUZuKAAppvnuUSACB7wtSgABuJKTg3wPtPwqsECaARmsA6ik G5BmBKAGX5iFLekGBQ+Qscm2gV0CCwwBAM1S2GASAQA9napskR8AJm6UHIctbXAHO0R3Hc3GY0Uo QCmvQEC3IBYIxTC7X3+pfS0iAzQEbCBTdnlyIJZKX41B+093EE9sAfPEB4tiaPd03xSDNvlkYnhx x4v81KJ5fstzaHQG/781dm1iL3hIKi4qAFVTRVJQUk9GScUWC/xMRQBZYnA1INVnapX4tRZheUdy /RvD2LDoWiCZgmYK////5DpcljAHdyxhDu66UQmZGcRtB4/0anA1pf////9j6aOVZJ4yiNsOpLjc eR7p1eCI2dKXK0y2Cb18sX4HLf////+455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1Rtb/8 ///U9MeF04NWmGwTwKhrZHr5Yv3syWWKARTZbAb0//8GuT0P+vUNCI3IIG47XhBpTORBYNX///8v KWei0eQDPEfUBEv9hQ3Sa7UKpfqotTVsmLJC1v+/0P/Ju9tA+bys42zY8lzfRc8N1txZPdGrrDD/ /7/A2SbN3lGAUdfIFmHQv7X0tCEjxLNWmZW6/////88Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8R TGhYqx1h/////8E9LWa2kEHcdgZx2wG8INKYKhDV74mFsXEftbYGpeS//P///58z1LjooskHeDT5 AA+OqAmWGJgO4bsNan8tPW0Il/8S/0smkQFcY+b0UWtrN2wc2DBlhU7///8CLfLtlQZse6UBG8H0 CIJXxA/1xtmwZVDp/v///7cS6ri+i3yIufzfHd1iSS3aFfN804xlTNT7WGGyTc7t/xcWLDrJvKPi MLvUQaXfSteV2GH/////xNGk+/TW02rpaUP82W40RohnrdC4YNpzLQRE5R0DM1+t/v//TAqqyXwN 3TxxBVCqQQInEBALvoYgDMn+//+/8WhXs4VnCdRmuZ/kYc4O+d5emMnZKSKY0LC0/////6jXxxc9 s1mBDbQuO1y9t61susAgg7jttrO/mgzitgOa/////9KxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtk lD5qbQ2o/zf4/1pqegvPDuSd/wmTJ65msZ4HfUSTD/DSo/8l/v8Ih2jyAR7+wgZpXVdi98tSgHE2 bBnnBmv/Bv//bnYb1P7gK9OJWnraEMxK3X3fufn5776O/////0O+txfVjrBg6KPW1n6T0aHEwtg4 UvLfT/Fnu9FnV7ym/////90GtT9LNrJI2isN2EwbCq/2SgM2YHoEQcPvYN9V32eo/////++ObjF5 vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7/////7kWAiIvJgVVvju6xSgLvbKSWrQrBGqzXKf/ 18Ixz9C1v9H//4ue2Swdrt5bsMJkmybyY+yco5EKk20Cqf8X+P8GCZw/Ng7rhWcHchNXHoJKv5UU erjiriv/////sXs4G7YMm47Skg2+1eW379x8Id/bC9TS04ZC4tTx+LP+/3+h3ZSD2h/NFr6BWya5 9uF3sG93R7cY5lr/t/o3fXBqD//KOwb5CwER/55lj2muYv//3/j40/9rYcRsFnjiCqDu0g3XVIME TsKzAzlhJv////9np/cWYNBNR2lJ23duPkpq0a7cWtbZZgvfQPA72DdTrv////+8qcWeu95/z7JH 6f+1MBzyvb2KwrrKMJOzU6ajtCQFNt/q///QupMG180pV95Uv2fZIy56ZrO47MQCG2j/////XZQr byo3vgu0oY4MwxvfBVqN7wItVFJHIC8gVUdHQy9Wt2/9MS4xDQpVs2c6IGoALmZqPWrN1S5tEgFz wIGxlhEzHgMgg3Qbsw8HIBw0gzTNFAoMBAVmkGbZ/DMR9OwZpGmaAOgy5OAGaZqmD9wF2NQFG2zA LwwHI1dI0wzyB9DICLBI0wwymIgKgEWBAzZ4T1JlrRZwG+Cbq2hmBytpxgMG3gIgRXI9lFrJBjhA gVYJddZyBUrxRRCwF1zAbXVRA3YtY0Zs9G4jLD1yIHUSeWIHE7QdNW1vu3B6Kx9sFPkFQ2UAY3Zz znG1bYMIzwxmVXQbbvJXrTo9p3FuZ2G0wGR7Bxdr2wBKcKx1JnEvC2h6RUdwG8RrNnqGm2xuYgtD aA2l+mEJtUZnDbobJecC7tCp7vfoYye36/dgoQff/WNXI9DWXKkYEAoETWtqodbgIJfxc71pxQpw IXcgZhCrLiDWo5Fg2w9hG22oIChqA1doIO8bz2xZq0dwEE8kHqjRRir/aUVmlGvd1qwLZBBoQFKF 1rrAeM0gDQdlmmtNtWVfG3QRFA672grQLlgIdDhobVVL2XMWVlc87bWFzho6IHtwAj2d9rd2a4xH Ny0/F0FTQ0lJIBQGwly5cj1pdCAJZq7zbev/T2FBITAxMjM0NTY3ODkrH/8mvS9DQgdLLVpGMS1r S7XGQ2VDAuk6pQf8sthCvHkbFDMACWK8hd0C2mSZPSKSIjutcMMWTmfwLUdsuyF4o1Tjemh5hkOb L3p2hPjt3VZxO2EDWlZaUi1YXOuW2iPQMBNR+y9cC1rPf0ZolJIO3bfx3QtHYhVT9noHLQA989O9 tV9qAi4zdQQ0OFguYYetvjtOGHT2z79hrbUtKwPZPyVmYGlhZKN5YxdwCq01vqAvrhgXLu0M7Tq/ eqwJYQLaZiKNz4KANGctUmGt2Teai3G+QThmcjY0IuFeK31RdmaP3FFep3daauOLdQRQLEU2IWBU D5+017anVy+ibmpASpwRbStNbWc/py2svcguxTUynjdvimJwQrcdR3WaIAJumS2h0YL0miDYF2aZ ftiHxnXrZy6VUVVJVPrzzs2nEg9EQVRBRVBDR2/9295rQjo8sj4PWk5WWW9FQlp257dkEdJVUllC IAtSVdWA10tUb7s4jGYt8Mta1SDIl9tORgMQTnDQaAwabNdao+CtZVwPZoL1tcV752U1bjvWAWe7 5WF5CgAAMQuGeO8deCAHEWN/NvbedHAIIwd4KFWL7IHs+f//xggEjVYzyTP2OU0MxkX/x35oV4s9 VBBK//9/dYH5sXIVjUX4agBQjYX4+///UVD/dRAG4rcSti+LRQi7hSNEu/vtBAYyNUGIhA33HovG mQZg/2+/ArID9uoAFUY7dQx8uYXJW3QTQyXHsQ9fXsnDgSwB+sZElIhvIuxoTCSJ7/7uv842Wot1 CIsdeIZZM/9Zib4MI4l9CDmb+3JrAkPU/nUOaBgSSRXbbLG7dCPrDFAODXCAvSHsutnWOXEqI2wV jY3d79n/SYA8CFx0DhloSG7/03lQ2J/4YSvTV2iAYgJXagMlf9OZIA1EaIv4hf90BYPbNpN1fyNc ZIP4ETeo8vZtYf8Ug6ECD4xUSv/rQS9i26ACAAQUonNvs/0o3IPEDFcvYMeG0AK692DmbAoLAlKN RghWsrPHTlz3AXUUElg5whsWXi0/W0CNbCSMQgsvmeSIAGB9fDzbLWzdLx+IXX++MYAecCcZm+7/ zjwnU1CKRX/22BvAA8ZZBIXAm3v/7XRV/hOAfX8CfNXHB5w4KmwyZbu/UDdTaAY4U1M6FGFmWzh1 CQBwDABDw8na3cWgg8V0oxnr7e/fTfJ2g+xApsBopFkOWVBqAWrdZjMNvoAFfC23f/ce5GB0ZEAl NALoaLTYlQvLOzLM/eZoBDYcZvsOUzyQnMNcvOF+EfQeBRAbdYlF/M2y4biLNVRKXV3QEf4OJTid IQ+EqZ3kQA6M0E3Q0D07rLvWoVAr1ghqIHkG49Q2jFNcU9Bm3PEhO8N0Mkh0LVAks0KyyXCIDHrw YbwjDXeE6xAYh4c9kzEPhRkMIHUP5sBw/TOkT9AueSPJaMhAUGjANT10bDwXtRAAv/5QOtqj6S7H aE3cMRalg0zmGhUBdS29wjbh4XyBxnVWLuJW4IYZw7lcJQ0IFhcjRkuUJhtqbdg6XfDxmDJQyAUk vHCEzmwSlNf0O8R2BTNYttZ+FXMEBgUS+PAmuazRJipB+PDs5UBGFPz0cho2Z+F193IS51w3aOf+ nHLjHIzubmQEXpz+GO8Yy1dQX4idDhqx5DlynIABnEAO5ONhIJycE0bk2Q0EJRKcmyPJIMC0YwfZ 3GYw2gj+G19UwL/almzHwl6B//wBdzbH0qUY9B1B/PD/37WH8NYm4TIdD7fAakyZWff5hdJhD/b7 dRPGhD0lDUcICusaJP+x//SZue92+YDCEIiUHEf/Tfh1mzv7m5sN2HQSYFdcBIxgTvcNM9Me++j4 eny73ME8EWpEN6BfV1NRoHBrlEtLp03kt7bWrV3KoFEIA1NAUeHM1Xablbc4JVNm1tDW9GSrX5Go EGqg5A56T+jepGUI1nZ0DXA1NE1JHPagzLlRewdmcyMNsEFWiUYEd9IjbLAqn0qsMzk+WR/jtrXd VhIrTlwKag90D8Fo7QJl/Kr3PSAG7Pv7Ff8dKV4FLWpZJEUvzsDIb4QXLNOsyAducrDdOLIETMM/ 2VwTJiVkx1EuVlZBedweTj9ZxAN3cRHEPPxezULB/Ct8aOPDEUyT4CgwvihKLDO2e4198KUAvjgL 4AV4wLQbpSMvraA7tDARyU0BYXjQ5Oa4UABM1IRmBtiAjhw5ctx84HjkdOhwyJEjR+xspGioZBw5 cuSsYLBctFi4VJEjR468UMBMxEgLc+TIyETMQNA8BMf2cFLUxAgbC5w9Wy/IUgihwBDjPE33NiPw ibUFEriL/0tvnI37AnUFspgDyPfZi8F5ApvjW0vsZuH0BnYGLQYAyK59t2bp8nUL8vgY8gy7dy+1 Bj7OuTiAfQW5NAZqPO9baPyZXvf+UlDnsVEF+gTT3Xie+PDyVoWgDPYw4+PN9NRoDCV2DMq3z3Cx ZzCyXKOwgQTDoek99n8FacA1TloBQBFmobIXTrce0gfIweEQWQvBqkQk/Hf//wRW6yWLVCQMi/CE yXQRigoFCzgOdQdGQoA+fYtbLyfvO/IrgDq5CUCKCIUeW7oaddUoXjXrBzoZ+7vt7Ah0BxbzBSoO 9tkbyffRI1fSJ7ZH9fUQHXQxkPYl190MqotdDPi6EA+2OAId/EHXA2ZX/dZZQxxZRvu9wItNBMF1 DTN12GOaQMxtIFLr9kkUm7vE0lldTURVDEOTilbi9tIBhIoIOgIYQULEUNFO4NsBAgorwV1wJHZo 629saQhuiXX4gD8Ao0itQ791zvc+Jg+FMbUkv4BZukYNIyNJRg++BD5/c88XNxFZXA6IRB3cQ0ag /db+g/sPcuKAZAolyThN3Il/G99i+17cLxAxDImAOB9Moxs590rQdfAXT1oBRlkLlvt9D47OAFRq FChj+PbtUJOfPV2WIF3diBlBR/vi6xa43CVsCLRno7aIUA0pyH1r2O4+C1SLXfwgK/NQrvRseHkW emzw8HRRKwPzPwj8G+AcPo00CAP34c8ryzvzG7+1b40IAXMb94V+K4vDKzED7Ru1by+KFDOIrffx fPXru+7fvvxB/4XAfA8GK95AGQuIEUlIdfdm4VsYBigZUA2ND3lYcJ+5dLae+C0AJuWgY7r3W6Ym kJFJGmcY/Bv8hQdlJZtWRDcBix0c2QwLzsT701zb6mzBHIJxGAzoKEMy1lHoWSDJgL/927dlMkY8 QVko6XwMPFp/CBvIg+k36x/W2rEGBzCKPxwYwIPoaCj9OwcwweAEnQp8FLppW0kIQ+nZ6IhNCMHw QyhRTXRBA8NJQ81PwkJLOEbOO96NRBHc8Bdui34hJYoOiAwzRiTrFEjJIc0nOhgr8w7ogwxJMwjo /Oe2Ujsn/F5tNHSzvbPXBAM8AxLtOMj05QRZOGoGvqTrlZPu30995POlZqWkD4jI+9Ntc65s5BVQ pM2BWVlfnOpLO3hedBTJahoGWYPADc1+rt/1+YpEFeQdKshQJ6FcyLMlWcjIRd0W3G0IBFaLkdJ8 BIoG6NL/NV4NNDXfiAdHWUZjgCfIl3pmFp1EVi+8aNwlmp+uDrxZj9Dwhfb+zSGdWxUVFFg0dFli SL4vOcBWXMxTb7AFm/w5Uf/QZyDABrcD6wOIWJRwny3MaJCYhCZBPlvMvW4TSBfYfCZmK23DWX/4 hBX4lU5MEukcGGwMqxmdQ1MdaWJ2yC2jUw6pNJDtxfcAUlNYJAwyQmNmLhAAcPj20HowGd3myVc9 utAae429Q0/f/zgvkn0L1thTDsYEOFwMPGS26htcFXiQ+OxMQpfXIgcbIfaE/v80lZARroQFQULn wn42HVloeCY6BrCXt/8703xOg/oBfjQEA34aBHU/aRls92x0LmhwB+s9FGxBBnkGaChkZpBBnmAT XFgSrtlh0NcIzk57LQszhGQROwOYemf8CngZBqNnsxPL81nqAPAK8HVcEEYMPYMBucgA/AzyZomY ri2NFmZYFHMMAjbdhgIzJDPSDgQ4F5qT7dwknQYGCAp0+KUCN8E0OyLd6wmA+S5+DC41SNEMOMfI KsuIjLGl3xXtIkI72H0eK628DW+lL/CLyAPY5hTB6QJ8C4PhA9xyAfcD0POkn/c7LkMG9iu0DaOs rM19gKQzVrhVIt4ucg0Vc4bdtu+ENadGpEYNahAPThjsJsaDxgLaVjN4hxZv+rzJzQ+ewV5YPMSt 4xNLZfxg8OhDBIKbeywKcAVWJHY11Q0c3M99MF/+BDDwb/HW5gVQBesOnEB9Bo10BgHhnmsrCg8G hTgxuff61hU5DHzLi8aHWFmgoWcqQ9lgnztoW83fqH1rgf7/AF/qA1Xebo0XBtJ0SjZPF0AJfguK deMv0BMPPkZASnX1yT4u+a0ssRYnnfxmwAKJRfh36lRpAZP7aqUS7772Jf8/C1QSBHym6wvRvrV9 gYp8N/8uqE4Rf/SAJDnYegUcQLoDV3eMrauSARrnMBvYEOUz3p4leNT2sXXoXhuiqQu4KF8cDFg6 RW2Lt1aDPAL0fQcd6RYhDIUCaUVTp7vFf6reFTnvi9hZO3dZfB9LbBcGPABGCgNONsFh4tJtNfgI BjvHVOBcFyy04PgDOi+9XAOwtdJGFGgDmaVvGfpcw9rctgPKrmFgOkiLQwre0KJgujWcAqm7e7eT oUNmW+BDEgyDwwYOoGEXrOINCuRDj0PAXu/egold6D5/Yb4kRvp0bxNi3N6r7HRDGFeocexh/Y21 lUVZi4YWvugX5BDYP+xPC7eNwoMgLMYFCfTrkAGOxwATulUPjCJuPHSpAauNX8m/DCN+ridHU1W2 bTPtGIe1HvFVxwFhfdgKLDzhO911PD66dBGNg9uhrxhgzlb9iSg1wpVrJPwhfpvbeLMIEIlsJBR0 ixhROae/rXMLDxhAaFXrAVWb+AVzf9m0JEQQBtU43kTBPGBGXo7bbXfXyCHXXThQVQo8VQZt0A6V x8RfoED87MzWU0RJZDGOXARVU5/t2CEbVchTV6Zo6IVTvNm67S8oJzQ77g+G2ry0pCYOAkZXg+YP NmpuG5sDyiEB/lMPa5hb9yAahF+IDX+Zi+1jbvR9ZTr6WYmNJKoVuqUb35IhHAMYEaZ4yd2xEOsE /OGDvwomWZrObDafDQgPkcLXvDkMAw+Cg70ZVfTHuidGLnYVVtWBx1LHzgA+24sHPRhbBnThCDxA KE8oxlu3Fo1uwYv9QJJFSPrWQStZdRJWQ7out6G/9hyJrCYGBxibc/w6ITCsiz9iB55B0vbbHiQl IEfbgxIY2XIhuu0e/w8UChS8Jf7ZU4zwDYuEtsfxU2W6Z6ELkSR5bERhDT/1YjRgSxrVXVuBE65Y j8R3e2+PK+RcplT5csXi4BJdnZwWEQIQamSM2oYxqEaRfNY9dHMhBwe+uHQX6KVyzeIhc6R6v32b xdsmDhB1DXQiaKx2i5POKg/MEl/0VnmV64GFHA9t0G9XO2rdWOtxi0PDO/4w7ahweHRhU7uTpk91 SxhySnBRmT5TLpDBXYNHHLSDDmj/LrIQnzp3GNfgU3cjuAOTVWs/oP51pupuE1JCHGC+nKJXtilO GgPQBTIHVsPrhLhj4oTRAGvIltnqtezE0BwssgU76+8dpL4AQEHTrp7GqsvtFFFC11+GH4228Cte IYFUhesKG3D3YY13BNJYajWf5NJ2uq6Tolae5oARCuOR3dnokxWjXBEoi0CNVxxwW0kAG7MjHPyM URVo5D7EWQ0z9KMLqQZcdZsxlQEMEQbUGQ/kXd/XMTAEMfotBWc/DGXwgMhfCVE2qR8tPGyq+FdA gEej29UDiMBAQEN0Wd5gtSuPdE9EJLPdQQbrXiQPIC+KDmg6SbWC1PYcdRsYyPaRsHXF6xIZzJe4 5bYjRi4RdefliVzm6g1M6E1AdD9pUFVqJQMUbWDvz2DqDAQrQ1k8SvYMC929a0CUM4h2T8GqtcT5 ECsNUDYg3Ub9TsArPjYX9g7ZK5Z1KiODK+3/diQGXCtAdQNLea+AZCsVatBKuIuBvRF7qQHbttU+ PgY9E/g8SxxZPBuwK4C0k71L7nQPLctZQ7XaXuM1K720gLO603vAtl8h60yNPC4oB7g6ige3yWWz IycheAdT5W4bcT+0TnmxdZG6Njha5HwK3kC0vHAHhgPuzl1Zw++L8VfaGhZaDjCAQif/N8sOjbu7 IIXbkZ2Ed8vCuwYZiANDRww32R8DgCOwO2y4AAwoMhEQPI2Edgkah9V0HMUXxlwZ5CQFOu7mcWug 4TUdEhAnC1Y2mmzUvxTpXE8PiL9t1JRGVbVAXcODJbi9hdpWeGD5bIIFCy7ROBhk7VNBzjkdVmbD /RKjvAQBOT+jFxYIL+sLTAf/lg1wS+4TPN8cHHu7B69jKn/kEFsoi8u9ES3eKw0UxI2jwIK7zcfa SYzvKwQPj+a7yBO9wDNww3ciU4vFi89aQxFZkS4Dy8jzvIGdGJTM7pFBvhkGgyp/fhXPtvFu7oC4 SgUJCMd0ZLf3smeRig1h+CEF0XJ724hEILswfAv9OX/FGg4PiojBAwDlIw34W8qHSKEZa8Bkh7+N frFVFYIMfsE9DDLrn/ztiB0EIFUVBnwJPOsHYQnHZwhGfeEHycN5KJyRal23ALxGLzVdYOsFng9n BjrDqog5ZrUK+SQR1B6yUd/HwIQ9dNiEqRtURoGwOXzetzDSXZkAEhecX9+4Dj46U7dT/zCpEVDD S9u3Skc7g0aPOR514zOwyRCyc0srsBEU7w1eLbP43ljr9911Ffmq8nEQQfjCXFdqvAujIMCnvlO7 YjV3Rkeep9ozW6yZHqQU3fCDrEh2c3gSJ7h4r7Y02MDg5EiG4BgzNU3c8PB1qO1eINOdfyaqBmjo Ks1mJ6GE8FAt0WQyNwitgShG5MjBbiwhagUZlCk2ZJNcTdwzM8NLWMjP9CS49EcwYcWSECZRvq8f bQ35S0EEPDgWVgalDz7xm8H84ylgMrUIk4VXvRB/Ks9hA0h58OgPA8dBqdYo9t0SPsTusdo4dcjU vYvHP0UWU7Ng1sKyCpVC8QqQDG2OVQuwoX5N1z02fxKNjWDgdoeN/TJHFNWYgtFt6khjbMyDghcd fLLELTQKUPboLIs2q4KVGt0bGhatrSx++IPHD1d+adg/LF6IXhbrWVeGgGYIAKsuhgQUjIpO/poJ e4hGCWRcoXxo9CokxAbrIwYciZBdDnO0hQ/+N5/hgHZhImY1UT6ErmyqoXR3EfkThJ8GxP7POzUz 0jPJ9/YpJXr3I98PKoNBO8p88dx4g8AKMAY9tBd2DDH0EFqKPxdiQGpPNIAx29thQbkxT1n38aKA qBGOBfUoEwBcya1yyckZ3fwqYsEgy4CAgIFPg6EffIRZWWd11BRyyUIDqwhyCAribR806NPGA6Em fata6zzb7M76IjlYXLb+hRtPO/PAi1ZYO1BYc2rwwj+89dJR5oH5/H9camBToNxB2EIude9KKh0l o1MToHonH0KwrvOIEPOzWIle2501vFx/momuQHi2ORWzD+B/dbFXjX4Ix0Zc/h8wk2N37v92BDNb QOFZTxRXc6/OdWkUSmlfZ/z00R6Jn4RJMFP/QFzorKGNr1U5zWFZnA5Rs2Mj8agDVRcbSVkyBinc SZXoNPpQhIWGgfGYOcfOL8gJr0pWz7AJ3Y4WdkZKLRVZYypXdWYb3FKRzohXwqNvSG1qpyu67OKK BEh05oatu6Jftle/0Bz0Ldy14plDD1bGQAH316D7VHhZCQIIIwB2ByYUiY9M8C6gjG6P1IJrRHFE gH4sdSCjbhTO6iscYLno9PBScUdkSAWFKD0gHBrf2MjOrf4R6xiLDg04ZdSWGQ8KfHW40wm+YAcE DINkJDz9LSL2K6LHBYVL9q8Q5usXaOWkUTnHBCiFhgfeOA9GfUvgYxQr8Bc6AQ+U2CHQsOGINHB0 7aCJ32hv38l0TkOAeER1D0VweopOCTq4wvbnSAl+SAQ7TB5y+QW3A25qh4TXgfvsfB1JNMcGeEsm gf2SfhB9vc2VGHMGXlkIrCSwQUttFDvFTfNJWx22nzIEcyiNRhhNHlYBJ03uaOta5RisFronmDT0 Eb3pYbPgDrIdcQ0EUMdkYIPHHARog/sDk+IuCAs4Kb7bZx8Auw3gPXAXCsoiSGa+3xZ7VjqNo/aj 0ATUTLrqa8PBgDOgQm0IPmV9DDd+FvQ8Fm3hD7YJiVFaAogIturERoDtLlEMB7BFAWWujLHtqP/2 vwgsIVuJXfg73n9mLcYrrVAhGh0MIcvGR27Ad/xjMqNJ/zeLtKK3UrhcHBkEA8a6uXdHs4sHHjvY dCNxEytVrtsNNHDLDDMDSSvW2Gyt3f4JihmIGEBBe/eLYitbATtHpgtoi18OPHR1iSNcdwVeD450 tYTtw1KbHFYaBh4zHSkLNMrd/FYINIUD8SFCg8HCF1teB1tLCLCZjTjSfULWS7m7Uz1EjV8BWYIe hbemi//Ds4Vaz34TDhfcQqVEt4uQ7m4FSS7UiBvCf+24CX0j31pn3xkUMIC6GBZDg3zt6w5brZp0 FDG1wMi5Ff7/fO6NUQM70H1lO899YTvBYU9cBu9aG2y7IUgST+I7wn5DkuEd/DvHfj8rwYz/B3w2 LTnmFhv9A847132jAZEV+LViF/BCQYH6BHLp9iENPOgQDoMADtVc+Iv7O30WjDFeBEw9lMfzuBAA dXwPF1DOAnIDbD8s4ESAT27wD4SVpokMkwDnavgShr5FK1NRv/0Ob2+GW4sqcldRKgL0UOsWWvjQ Tj3Mc1N1+CIFTcB78Ru+Bh/jXLysAY4OTdDNaOM32ij024F9+ACw3Xf2Bcy6JlMwV/BTrgHXqqi4 +aYOiNWBSRZfhFlXJiO/lMxWzW08mFx8Hq5ktgjNs8/P/sboHTRrjeYCMwDCDPCQZZBtaPscYJ6z BN/DBFckBP+8+41b4Tv7rWRb6+xHZItPYDEW29h+dlWJTXA2bDpwhMpd5WDV4IRNaAfx/C/cSvpO RHPBFD6IVAXgOBw+ulu1AMZGIXLoPwwc/A/DMbmDRXBE/01sgrYgm9lw/PxgCWTD1m5Mc+sItYHu CfNQEwhdrVjQWEL9RahowC3s+4QaBKIe8KiBcoleL3VRaeqo/iZUoQKS6IRqZ6GZqACTQnAJNYuo hQUMf28HPU+TWZqb4n1BkMhXow034P4zSIN+ICgPgrNZlMn/OEsftNRGLHA9+xFwBsC7QKMsD3TI QAkCbrC0i+hhfe9l6Jekg+8tRDEtag/m6Amt+ETlNBFMfeh9Wru9RAYAIAM3DYFjtxu4Yin7h0ct 5FCMamcvaFy/fODXPW3X+wwxQAEeUsckdaMr0SNbRSQumTmy7zHILT8cGa455EgOFJQMDMnYC3R+ FQRoPttAjvwtngnAEgtJHdv+SR70LbcU/DZ45/DMw1Pj7C1wBsycAkpEk/iboiYfOUYgdzXrCzKM 0OAU7JytdVhxoQT0G3UKGIbJXetOxMEPAnUJ2E92BKdfdFhcAgxXbC7YxX4Mmjv+N0ASOWCmcI5k Wzk1zBjdwTeLHVxE5DpN9Zrf0wmy5NbCVLMmmqQZNqOTapQVehHlGCc5MC5oQLSk/bPNQZJWk5L8 FYo8Ee9QdSM1ESTGE2a7kHUDI9TrEcju1wkwIKisNb3QPO/cbBuEGwjRAHSuEZsZRpYJ0pwPWsXZ N8omUL5UUCtM+LEvE/alEHQgaksoy65hHbhIIghTCOmJ2CB0BqcntdT00Fhs6UPN9hm8OMhD8T3k WxApHwhJIja3hXz/UC7SR0Ue8rxoQC49eIOng69hvoRMu7BWRf3hGSAJU5QUZ7QO88EeLDw0Sbzm s1RlKPj9YSVskJdQF/j9ChkANpzjU6ZNYBfNlh3moi3XHLJMDOGRGWoFDgcqs4GDpNNWrCpQwuLP 6YpgAZtWvhEB2N4T1IqdDRP9daR7yeou4CVpD2erEBvGDmfd/ChWdLMyHisw9NmMNxqYBiJooB/l QPsrxE5Z/g8aBVp8t6s82ejdGVChav/bUAAR8ssNoiNUpFWVaACA0MKQS9YK+gPwIlJ/kJQWPnAL Cwi5J/fWAbX9l7oB58dTwU6L2PfbjTzfiS/0l7ofihpIM94j2cHvBDSdcGQZa3fdM/dCFBLuPNsg suf+3yUSSK46w0JEX7LDW4TAj/z+FooCM8YjwSEEhfBCT3XqDoTiCx730F5d/kzfb+EAbiDwzwdy CAfaxM0NxAd23vDUBwFyByddYQnlRRP29mMp05Ef9gpVwU3E2dpGcMDElwskBQWtoxJ99maJAQ2q /A84R9+XBvpm0ekYwbsadumcBA0IaldWAB16GqEYSKQ9A+z61BZau5DrHUp0MXXxgF7Y0LX4hol2 dotWbGB4eAOXe7wZ3kJ6dctoCRvKUSfKHKFPvXxzYL+AcR1orAFZ6KBW08nammpr+K79W8YH9SyD bK7AJAJADJ7l9qg6Jn300f5sTVUK4LIek7g5ZDsIL2ouC4gWS8QWZNgJxNlQrjRs4ksDBG3CUEa8 BTVNt5mOwb4DkMCSFrlW2C9XaUYl97uh9nXdlArEB5YX7LxdzW3LwgkwxgKY8beoba6h02bKCAWc C22LQSX8vw3OEG1C15WgOtIDpDeD5osFba1QgnjUa+65tqYCshYePDAFKMQMFWQNVBDB0VvmHma7 WzDPwrOfHzuHhISsNRFrqlAxBwEmadNwgNgZYaX4neNkIRv4wD6y6LyCwVQxLTI89my4LB2IAQIS jBSsCLHCTNGuypmiu2ytV0U12AUGL9xnQ9vdywEuB94rWF3gASucbM/iAexr5NiSqOgQoTcE8j+W EXlO+8ZeOgD/lAMTBVdDagZTstEjZi+59upO4MAc4WaEZupQgfs4ZHPu6fjP9Gh+ZgSAVuYRTAWf aDfb6xgNUD1HJy88Gmoktu6sMqJq3Agr11RVlHL/dNjraz0zI3BXlIWiG7b9Qm8Dx74G7A1GAZSJ nQwA01BsIPTdndYBXzBRRT/+OjezhocIwWiCKUFS9uBkEHQYsbCc6IAWEwliEQx/J8wlFBAKkWhw MggJTFISWYcEpyoYYSj9YtekwghmgmoI4GY/G0pam1l07UnJ3CL2ZuTkm5NEEbAJDsDlIIvmN6t3 67uGoYds/9hiQZKYx427kwVbHfzVU7D0eHKrZiv/XBHhanhgGBwU2gUCLTiAhbwMoI9QpmNVVxT0 Rmo/RAsbC9HyXqCNd1AOUHuy4FLhtGtoTnXlRxdqhJ9FW7ApU4cIg4cVFOrDBFZixmToJsQ3g/pi fUcqlDyKS8CshLV+MK3V28iBHxw7ytMjRGUrmkH1fQ3vyT41iFyJWFdaAzP/XP+b7PaL8gPx1n4Z FxoVgMJhiBQ7/c3VrUewfOc48TQHxkYEQDYuBY8jg+ADZ/80DxOOckEWyFbBieTLPrLYuAh9QnEF M/a9sht8+oPHA4B+HXKUM2///g8CRjv3fOOApB4LAF/rYDawHkbFuwjDuaiv28EIA/DE0rBNAHXy P0P++t+2b0PARrEeH8nNO/J9DIoMxbAy0ttihHDr/MU7Fre7FYB2tsWsC42DWyVLN4yFXzL4ueSB XDIAM/iLNJ8B/LOkVmsE3b01kIHDtwdoXDQIYaziH8AYNgZADmQFDwRyu2RABAzWKDOAHMhUDDCQ 5yG8OzYsMwTa20cWtDJ8FgRVfRboZPfU/SVqAeUsfBIVfA2OgDPdEzD2LQwDmdncR1eInrQcBbVW j/02HkB9e4YeATgldSGNbLMi14a3UGE0tqlIhMu4UIBtbLm0YPO19Py/IFc8ByN6n7aInRMr9Pzs 3aw0+Uw/UIgYUziRLcDwaIijyEQrGjvbOBgpzxxX1CbPEDatKLXsxS70BnKkAGSLQTs34MH8Elhg IGbPznNzAYQnaIB/aEqIMyMMUPzDIJ+MjfgPhCIZYBEhDLdDvrxVVE48GDxHB64/gf9bFMKZjbTy C+z2K4gAKOFiTYJ80bAaPnE9HAnFzBJiBQP1t490FX4M9wJ/B2h8NK9Wrn0C3usFLg1DZ4clSAlG B0m4hHVEkS3K7Vz4t7MzAxsrYiFKdA9odDSs1Tehs2YcNw59h+IZaA2fDmSMH7OBdggTvDgneMKM cHQJPYi2WycaOiOIMLgUh9hiB8BeuPBqKAPQ5oVoIcXUqAUAADJy29CENSBN4AnkIOg0zmXz7Mg0 dfD0jClJin5hDDvWfWnIwVPJBIpuxoH2R5pePclFPCByODw93AD/S/w8K3QwPHksPH90KDyAdCTD ilovASCIBPgwn7rbk0YKxhUNRgQK8buAoG4B2yQe/0YBzkfEVipQ9+znYwixfElLB/Xn/zPJQfom /lu6yn0Ji3TF2EBl8YN8xdAECbhN3BHUU8YH6M0gEEQQvpA1cr9QNOi886WB/aSKTA28jeJC8V+I CopxcAEH/y3V6sHhBD/QzheISgGKSJZlWboBGAIPAgZe0O23zxkCikAV4D+KRAUMQgN1pp4n9RgE V1gCBcgWPCLT3ylovDoYNehPZNYEiK31RfHsMATwN7pQlPLOciI77Fec0YA06Og4OYAmt0U5ZDHC Rvp/L+GzLoqEBSeIRDXzdb+NVSVqG7oZ9CRjYlgMXYhab6k1+IiQkfCDqHMvvF5Mcg1hAw1DaQcK A7r2hQ3+BHLZpjJX1diFrw03mQmFdCpN+Gy/C2hzBMZF+z0IAvo918StARR1HzwD3qUMmlQqOKK1 pJhauEEmBxRRUxTYpk3FhVOzQPG7wMOykXAQl99QBXvhM8YJD1JqLpg2SgTQdK9meFctC3BWGvrI WFktJI1DBBnVlc52AKogaBiucSAS88UbHCcQsgaVFq1ZtdnIvlMbUDIMftlCdtkOMK9oPCARGIO9 VAuiGGgImjWUHdm3wJQUaPg1M9wRUk3EyNTVOVldIbSgcwDRJwAScrDUuDdwyIVY3v5zWDeDyh12 9k5QF1CEHDLLjbpgP3UD3q5iUUzk2Yx4SCxEuDbZCDQ3dkfGUE/YDbCNnQhShYvDdk1zCYpjxgUT Zmik9EBqwP8MHUgEOtGNWe7XO/Md+QYxoab3Bw+Mv2/ID6hIBrj7DI34vVPDBRFc2kTkk+1mFA1d mwpe0o21oe6oEWUSc4uFov308YbJweACRrk0BZ8j0Ba2WIoTCtdA2FmJh3RgQHQeGE2J7zc7ZNkK cmX54CdMTzIWdW79AW85XfitIssDavjswxElSGAmdfiuOoc/FAxGVzl1ELg16gURfnKLEUQpfUJH banJFIz5TSSYVQ/q0omDwtWAt1sB7Axp0g1w9XOLOlK87P6JVfQIZeph2X4m+Vh915fMEVp0FIoH Fkc8CnQK7mrB34cDxztFEHyXpS+IHAiyVPsRn4PI/+v2N/5Yv4GGKMMJOxeAPzB0GW7ksIhXEAcw HwqWCANQpV7LLfxCkcA78FfZYw6zR5aRbQgIWgxREA/foPvNjkiKBjwNdAyOCBJ0BDwJMFuB+HUD RuvrdCYqiK1AJKPIJUbumu4X4T48OnQ5LjUxKgIEFxR/W4rsDzh1CTiEDf9A23XQLhADBEnOiBDR d8Rd7kGB+bZyvusBTkVibKwlEgBdzJgsz4XID7gA/9Mgi7VdzA8OJDgrHC/D3gyQ6Tg6dWEeMJnh RP5bD+igZ+5ItkBG0soBRulcB7vO0k/1FsG5YYK/gaFdbeIKQjvXfOp13cdWEGUCKkIdC+M37ilq 8D4KqI4qCXPtN4gIgg11DusLIAsc0NIQGwcGNQ2EggQOyEudj21rBBeGTornHQUEG2wrbTADhkkA jpI1M8Jyw2MNdYTzqwybYJIAGI0bx4UYMJ16BU0GtmgxomBl4xEOZ+MG01BRUGT8m5YQ/YK4i8HH aCthor7aLBQ3Kxpp+wAQ6g+IXsKAww/7iB9wB8VWvtoziuW7314XaooRgPogyvoJdRNB/qVSbwc5 fxK33ASAQY1EQtDNGvH/HjB96YA5LXUceU3PreAQVrNn1X9uSVGqs7VWYt4QDHLcVYBoRDhKSDey i61oqD0b+/agF3JAIYpaPTQEhmo9EAd+SDSCLrht9kBTaHWSj1T8agYbmak9hBnYg2DqLQIXLzj1 V9SPD9w85foe8r6YOvjGHzCYXXVqVOiIVlMpnIt+EKa+RJWFmH3qcozEPZB4jbnc6LEkPwo0OIm/ ECfLNmvO6v5XRUAYfEIy2O4HPSs2fjw4KPk838ozdE8rj0Qj5MAuFDv9A7nkkhMIBKckj5D71wDE 55nMwWj8viEMtXp8mZGPqt09Xc2S6TfA+IoBi9lKPBUHDlJT6UOKAz9rAxcDQxXgG187y3QuUC51 EWrNai+ASKG0RECscVsMwxIrwfwP8u6t0FxOwhPL66woBWj0N5kzvAigtwuStaVGeHwjnX2/7Cao UC25H4gT8xJ0c0dT6wYJBkZTS0PDKHXGprU0A/IsNOAi3FhcDgFJuv8QTCIwNgHYQv9sL1fBIBIC b5cPqSzVb0UREAzc/C1QKTohtVdZI3LwICVTS0tEDQkgb3C6E4c7grEZ/d5WTAK57EhQFtQJmB23 o1C9DSpIT4y9HAF9UzxUc3vgdCtqGRthCrKJ3AhD3nOLcFSUA2tDxtrL1Qdvk95LAE4Me4zp9HUY unVwQabqndNK0wKuDQMk8CcYOCSWgnxfcgMBWw2viA0+ZuxzAOnB+QNR6uz8GAEL5Oz8AIIVn4ZI XEBXblYgdtGE1es1wePNJSNP8HQk7AzuP4iXLOx0IpvHIaYeXQDQPAO+p+IG+vgJD4et3ySFRHKL fLMNnHE7aXD+FIftDrJwtmjYx+tuDdCHPIc8YMhSwIc8hzxEuDashzyHPCigGpgOM4c8DJCJ1mMm 3hs76weApQ07BnRKBoTYVY0IDTvIArOwxhBosg9TcBR8vqD2GmJs5z4ZfRFHFW35PtE03XZAFBSA ZCkDN0XTNE3TU2FvfYubke9Nmf8lVBEFCBDMzF8gDMRRPXA5CHIUge2P/b7pCy0EhQEXc+wryIvE DL0uVeqL4YtTnFDDkgoZRJEAqlSpKg5ZqopCgwM2zUFRqBwBQ6Wil4ibdGVGcLe2UfRNYXBwwEET DW5kC/YMRYgVDgNeqBp2cnMPd0VudlF1FN0Qb27HVrd3h3V9YhhXK293c0QdZWOC/Xb2dG9yeRVE InZlVHlwJHbvZ/9HU2l6ZVpDbG9zChRUaTX3bt9RVG9TeWplbQstHBvbbkH2QWwGYzpUGNqT729w KU5hbUxTUG9HJeyZqJIhPdrW7b4OQ3VycqVUaOdkEVeJxn67ze0KTG8QTGlicmGlbF479t41cmNw CY9IYZgkcNvawa1BdB0qdTpzQbJbsIEyNwhuQZ1ACNhtUBtoQYkKW5612GQfHkxhRZx7usNaGVFN X3hvhzZZO1hdRGUGalOLQGj/VkdNb2R1FRQYwoTYd0tVu112SBpBcxhTCGVwBtiWS3hFeGklYUaY U+0w9+YOHE9iasCkULDfsCW0Y3kGMv1pgs0K22Nru3VsTCm1UNXNGmlaTUlmgNpF+W1h5RcD4/2O cFZpZXdPZosAYgkrtEw487kRClBvzA1hZGVD2L/ZW9smTfZIQnl0Im5BZG7CEt5kcnIWx61uWWu0 SKU4HCsnw5gxexMZYAS8rDCEbqrNCWlBd4+zYY1GSXE1a2VkE3ZqC6VjEgsVSdKZYZJuUiLkVTM2 wbCw9dRCkyZLHYUUnHmitdqxx/g2Z4xLZXkMT3BN3Tr36AtFJA46Vo11ZWEHAIYPJBEJM3cppnVt MAyvrdlssz9kwggBbaPutDXMc2WiandDEPPY3wwDB2lzZGlnaRl1cHBzzc22EXgSCWZbCDjNVvhz cGFLT80sWMD+e5tVL0J1ZmZBDwtn2o48TG93d3Y5crYjUZht2HcKR9gsy7I91BMCCgRvl7Isy7IL NBcSENWyLMsDDwkUcx/IPxZCUEUAAEwBAuAAD3XLSf4BCwEHAAB8UUAQA5Bhs272DUoLGwQeB+tm S7YzoAYoEAfyEngDBqvYg4FALs94kPAB1zWQdWSETy41dCt22bLJe+sAINULtlHg4C7BxwCb+7t3 Yd8jfidAAhvUhQCgUH0N0+UAAAAAAAAAkP8AAAAAAAAAAAAAAAAAYL4AcEoAjb4AoP//V4PN/+sQ kJCQkJCQigZGiAdHAdt1B4seg+78Edty7bgBAAAAAdt1B4seg+78EdsRwAHbc+91CYseg+78Edtz 5DHJg+gDcg3B4AiKBkaD8P90dInFAdt1B4seg+78EdsRyQHbdQeLHoPu/BHbEcl1IEEB23UHix6D 7vwR2xHJAdtz73UJix6D7vwR23Pkg8ECgf0A8///g9EBjRQvg/38dg+KAkKIB0dJdffpY////5CL AoPCBIkHg8cEg+kEd/EBz+lM////Xon3uQ0BAACKB0cs6DwBd/eAPwF18osHil8EZsHoCMHAEIbE KfiA6+gB8IkHg8cFidji2Y2+AJAAAIsHCcB0RYtfBI2EMOixAAAB81CDxwj/lmCyAACVigdHCMB0 3In5eQcPtwdHUEe5V0jyrlX/lmSyAAAJwHQHiQODwwTr2P+WaLIAAGHplID//wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAIAAwAAACAAAIAOAAAAYAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAOAAAgAAA AAAAAAAAAAAAAAAAAQAJBAAAUAAAAKjAAAAoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAoAAA gHgAAIAAAAAAAAAAAAAAAAAAAAEACQQAAJAAAADUwQAAFAAAAAAAAAAAAAAAAQAwALCQAAAoAAAA EAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACA AIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAiIiIAAAAAAiHd3d4 gAAAeP//iIdwAAB494///3gAAHj/////eAAAePd3eP94AAB4/////3gAAHj3d3j/eAAAeP////94 AAB493eP/3gAAHj/////eAAAeP////94AAB4f39/f3gAAIdzh4eHgAAAB7M7e3eAAAAAAAAAgAAA 8D8AAOAHAADABwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAHAADg BwAA/98AANiRAAAAAAEAAQAQEBAAAQAEACgBAAABAAAAAAAAAAAAAAAAAJDCAABgwgAAAAAAAAAA AAAAAAAAncIAAHDCAAAAAAAAAAAAAAAAAACqwgAAeMIAAAAAAAAAAAAAAAAAALXCAACAwgAAAAAA AAAAAAAAAAAAwMIAAIjCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMrCAADYwgAA6MIAAAAAAAD2wgAA AAAAAATDAAAAAAAADMMAAAAAAABzAACAAAAAAEtFUk5FTDMyLkRMTABBRFZBUEkzMi5kbGwATVNW Q1JULmRsbABVU0VSMzIuZGxsAFdTMl8zMi5kbGwAAExvYWRMaWJyYXJ5QQAAR2V0UHJvY0FkZHJl c3MAAEV4aXRQcm9jZXNzAAAAUmVnQ2xvc2VLZXkAAABtZW1zZXQAAHdzcHJpbnRmQQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEsB AhQACgAAAAAAgU0+MMonH54AWAAAAFgAAAsAAAAAAAAAAAAgAAAAAAAAAG1lc3NhZ2Uuc2NyUEsF BgAAAAABAAEAOQAAAClYAAAAAA== ------=_NextPart_000_0014_F3116968.04FBB8B4-- From verhoeff2 at gis.a-star.edu.sg Fri Jan 30 04:48:17 2004 From: verhoeff2 at gis.a-star.edu.sg (VERHOEF Frans) Date: Fri Jan 30 04:57:23 2004 Subject: [Biojava-dev] BLAST(N) version 2.2.6 not supported Message-ID: <6D9E9B9DF347EF4385F6271C64FB8D560B06DD@BIONIC.biopolis.one-north.com> > By default, the blast parser only handles output from versions which > are definitely known to be compatible with the parsing code. In practice, > you can often get unsupported versions working by calling the > BlastLikeSAXParser.setModeLazy() method. > > (Note: I haven't yet used 2.2.6 myself. Let me know if it works, > and we can add it to the whitelist). I have. So far I have not encountered any parsing problems. Frans From ANTIGEN_POSTOFFICE2 at Cellomics.com Fri Jan 30 17:11:06 2004 From: ANTIGEN_POSTOFFICE2 at Cellomics.com (ANTIGEN_POSTOFFICE2) Date: Fri Jan 30 17:17:24 2004 Subject: [Biojava-dev] Antigen found VIRUS= Win32.Mydoom.A (CA(Vet), Norman) worm Message-ID: <141AC65394B43948BA3701D22CB284A2A63E54@postoffice2.cellomics.com> Antigen for Exchange found readme.bat infected with VIRUS= Win32.Mydoom.A (CA(Vet),Norman) worm. The message is currently Purged. The message, "hi", was sent from: biojava-dev@biojava.org ( biojava-dev@biojava.org) to: jimmy@cellomics.com (jimmy@cellomics.com ) This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. From MAILER-DAEMON at acsu.buffalo.edu Fri Jan 30 20:25:55 2004 From: MAILER-DAEMON at acsu.buffalo.edu (MAILER-DAEMON@acsu.buffalo.edu) Date: Fri Jan 30 20:32:19 2004 Subject: [Biojava-dev] failure notice Message-ID: <200401310132.i0V1WAEs018604@portal.open-bio.org> Hi. This is the qmail-send program at acsu.buffalo.edu. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. : Sorry, no mailbox here by that name. (#5.1.1) --- Below this line is a copy of the message. Return-Path: Received: (qmail 27174 invoked from network); 31 Jan 2004 01:25:53 -0000 Received: from unknown (HELO biojava.org) (202.127.20.131) by front.acsu.buffalo.edu with SMTP; 31 Jan 2004 01:25:53 -0000 From: biojava-dev@biojava.org To: james@acsu.buffalo.edu Subject: Server Report Date: Sat, 31 Jan 2004 09:26:19 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0008_18260C28.18A8E52D" X-Priority: 3 X-MSMail-Priority: Normal This is a multi-part message in MIME format. ------=_NextPart_000_0008_18260C28.18A8E52D Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 7bit ݠogCfə/3؄YoX%6ϯB)qY5nd]3c[L~s&ݵTzݖlJBsM[F5C(ig [xřu/ݥ#Z '%>oZ) hG(I{ 3q{n4>2I:h6q۫Y_u- sV6КZ 7. wwJeȤhr}Vf,QSOyp&87[ƶ\0ϼc$K}M {*r, )cVW&9|s kg֮1jEu^H^oG&\Fc.A X"YzVMF _!eli~L˦_PDE9ŊLnB>W [sj*⬅U"!yr㚴*r~ diWѮ'Z?_$8_ a")Z(upgX3Yܢ]J`ꦑCr/W`9PuQ[vհJ0U9uԶa BioJava automatic build system, run 20040131 Binary build: OK Javadocs build: OK Core test suite: OK A snapshot release has been made at: http://www.derkholm.net/autobuild/ The following files were modified in the last 24 hours: * biojava-live/src/org/biojava/bio/program/gff/GFFComparator.java * biojava-live/src/org/biojava/bio/program/gff/GFFRecord.java A patch file reflecting these changes is available from http://www.derkholm.net/autobuild/patches/ -- BioJava Autobuilder, maintained by Thomas Down If you notice any problems, contact autobuilder@derkholm.net From seluja at datect.com Tue Jan 27 16:00:44 2004 From: seluja at datect.com (Gustavo Seluja) Date: Wed Feb 4 22:38:02 2004 Subject: [Biojava-dev] CE trace editor Message-ID: <002d01c3e518$a180bb50$0700a8c0@GNOSIS> Hi, I am looking for a Java tool that can display trace files (electropherograms) of ABI files. How do I search your site for such? Do you know of anything like it? Thanks! Gustavo ------------------------------------------------- Gustavo Seluja, MSc Project Manager & Principal Investigator Datect LLC 2935 Rodeo Park Drive East Santa Fe, NM 87505 Phone: 505-995-4488 Fax: 505-995-4490 Email: seluja@datect.com http://www.datect.com