[Biojava-dev] Potential Enhancements, Defect
mark.schreiber at novartis.com
mark.schreiber at novartis.com
Thu Nov 3 22:34:54 EST 2005
Hello -
Good to know that someone is giving biojava a good work out in J2EE! There
are several possibilities to commit the code.
1) I could arrange for a cvs account for you.
2) Send me the files and I will commit them.
3) For the classes that only require "implements Serializable" I can do
this.
4) Send me CVS patch files.
It would also be really great if you could provide simple JUnit tests that
proove the serialization regenerates objects that are .equals() and ==
where appropriate. eg Singletons and Fly weight objects must be == on
deserialization.
Also if you are going to use the new biojavax I don't think we have marked
anything as serializable yet.
- Mark
Mark Schreiber
Research Investigator (Bioinformatics)
Novartis Institute for Tropical Diseases (NITD)
10 Biopolis Road
#05-01 Chromos
Singapore 138670
www.nitd.novartis.com
phone +65 6722 2973
fax +65 6722 2910
Michael McCormick <mmccormi at fhcrc.org>
Sent by: biojava-dev-bounces at portal.open-bio.org
10/29/2005 12:48 AM
To: biojava-dev at biojava.org
cc: (bcc: Mark Schreiber/GP/Novartis)
Subject: [Biojava-dev] Potential Enhancements, Defect
Greetings,
Ruihan Wang and I are developing an application that uses biojava in
a J2EE environment. We have made a few changes and would like to add
them to the biojava code. All of the changes except for one class
involve serialization issues. Here is a brief summary.
Please let me know if you are interested in adding these changes and
how they should be submitted.
Thanks.
Mike
Michael McCormick
Systems Analyst
Fred Hutchinson Cancer Research Center
/org/biojava/bio/search/SeqSimilaritySearchHit should be Serializable
/org/biojava/bio/search/SeqSimilaritySearchResult should be Serializable
/org/biojava/bio/search/SeqSimilaritySearchSubHit should be Serializable
/org/biojava/bio/seq/FeatureHolder should be Serializable
/org/biojava/bio/seq/db/SequenceDB should be Serializable
/org/biojava/bio/symbol/Symbol should be Serializable
/org/biojava/bio/symbol/SymbolList should be Serializable
/org/biojava/bio/symbol/SimpleAtomicSymbol and
/org/biojava/bio/symbol/SimpleBasisSymbol do not serialize correctly,
however the mailing list provided a work around by commenting out the
defective code.
org/biojava/bio/program/abi/ABIFChromatogram.java has a few issues.
1. Should be Serializable.
2. We experienced file handle count resource exceptions since File
access was not being closed! This still needs future refactoring
since the new close does not occur within a finally block.
3. Modify class to use readFully(). In our environment, this change
allowed us to parse chromats at least 10 times faster.
diff for org/biojava/bio/program/abi/ABIFChromatogram.java
27,28d26
< import java.io.RandomAccessFile;
< import java.io.Serializable;
57c55
< public class ABIFChromatogram extends AbstractChromatogram
implements Serializable {
---
> public class ABIFChromatogram extends AbstractChromatogram {
141d138
<
151a149
>
153d150
< ((RandomAccessFile)getDataAccess()).close();
164a162
>
166,171c164,166
< byte[] shortArray = new byte[2 * count];
< getDataAccess().readFully(shortArray);
< int i = 0;
< for (int s = 0; s < shortArray.length; s += 2) {
< trace[i] = ((short)((shortArray[s] << 8) |
(shortArray[s + 1] & 0xff))) & 0xffff;
< max = Math.max(trace[i++], max);
---
> for (int i = 0 ; i < count ; i++) {
> trace[i] = getDataAccess().readShort() & 0xffff;
> max = Math.max(trace[i], max);
175,178c170,171
< byte[] byteArray = new byte[count];
< getDataAccess().readFully(byteArray);
< for (int i = 0; i < byteArray.length; i++) {
< trace[i] = byteArray[i] & 0xff;
---
> for (int i = 0 ; i < count ; i++) {
> trace[i] = getDataAccess().readByte() & 0xff;
185c178
<
---
>
212,216c205,206
< byte[] shortArray = new byte[2 * count];
< getDataAccess().readFully(shortArray);
< IntegerAlphabet integerAlphabet =
IntegerAlphabet.getInstance();
< for (int s = 0; s < shortArray.length; s += 2) {
< offsets.add(integerAlphabet.getSymbol(((short)
((shortArray[s] << 8) | (shortArray[s + 1] & 0xff))) & 0xffff));
---
> for (int i = 0 ; i < offsetsPtr.numberOfElements ;
i++) {
> offsets.add(IntegerAlphabet.getInstance
().getSymbol(getDataAccess().readShort() & 0xffff));
220,224c210,211
< byte[] byteArray = new byte[count];
< getDataAccess().readFully(byteArray);
< IntegerAlphabet integerAlphabet =
IntegerAlphabet.getInstance();
< for (int i = 0 ; i < byteArray.length; i++) {
< offsets.add(integerAlphabet.getSymbol(byteArray
[i] & 0xff));
---
> for (int i = 0 ; i < offsetsPtr.numberOfElements ;
i++) {
> offsets.add(IntegerAlphabet.getInstance
().getSymbol(getDataAccess().readByte() & 0xff));
234,237c221,224
< byte[] byteArray = new byte[(int)
basesPtr.numberOfElements];
< getDataAccess().readFully(byteArray);
< for (int i = 0; i < byteArray.length; i++) {
< dna.add(ABIFParser.decodeDNAToken((char)
byteArray[i]));
---
> char token;
> for (int i = 0 ; i < basesPtr.numberOfElements ; i+
+) {
> token = (char) getDataAccess().readByte();
> dna.add(ABIFParser.decodeDNAToken(token));
_______________________________________________
biojava-dev mailing list
biojava-dev at biojava.org
http://biojava.org/mailman/listinfo/biojava-dev
More information about the biojava-dev
mailing list