001    package calhoun.seq;
002    
003    import java.io.Serializable;
004    
005    import calhoun.util.Assert;
006    
007    public class SimpleFastaSequence implements FastaSequence, Serializable {
008            private static final long serialVersionUID = 3541355741077645447L;
009            String header;
010            private String sequence;
011            private byte [] quality = null;
012    
013            public SimpleFastaSequence() {
014                    
015            }
016            
017            public SimpleFastaSequence(String header, String sequence) {
018                    this.header = header;
019                    this.sequence = sequence;
020            }
021            
022            public void setHeader(String s) {
023                    header = s;
024            }
025            
026            public void setSequence(String s) {
027                    if(quality != null && s != null) {
028                            Integer sl = new Integer(s.length());
029                            Integer ql = new Integer(quality.length);
030                            Assert.a(sl.equals(ql), "Quality (",ql,") and sequence (",sl,") for ",header==null?"":header," are not the same size.");
031                    }
032                    sequence = s;
033            }
034            
035            public String getHeader() {
036                    return header;
037            }
038    
039            public boolean hasSequence() {
040                    return sequence != null;
041            }
042    
043            public boolean hasQuality() {
044                    return quality != null;
045            }
046    
047            public String getSequence() {
048                    return sequence;
049            }
050    
051            public String getSequence(int start, int stop) {
052                    Assert.a(sequence != null, "No sequence available for ", header);
053                    return sequence.substring(start-1, stop);
054            }
055    
056            public int getLength() {
057                    if(sequence != null) {
058                            return sequence.length();
059                    }
060                    else {
061                            Assert.a(quality != null, "No sequence or quality available for ", header);
062                            return quality.length;
063                    }
064            }
065            
066            public byte[] getQuality() {
067                    return quality;
068            }
069            
070            public void setQuality(byte [] q) {
071                    if(q != null && sequence != null) {
072                            Assert.a(sequence.length() == q.length, header, ": Quality (",new Integer(q.length),") and sequence (",new Integer(sequence.length()),") for ",header," are not the same size.");
073                    }
074                    quality = q;
075            }
076    }