From 1f6064c0e1d3a64b9faabf9a2be4850ec9b06645 Mon Sep 17 00:00:00 2001 From: pvtroshin Date: Tue, 21 Dec 2010 18:28:57 +0000 Subject: [PATCH] Write javadoc for new datamodel classes , remove some incomplete staff git-svn-id: link to svn.lifesci.dundee.ac.uk/svn/barton/ptroshin/JABA2@3555 e3abac25-378b-4346-85de-24260fe3988d --- .../compbio/data/sequence/JalviewAnnotation.java | 7 --- .../data/sequence/MultiAnnotatedSequence.java | 4 -- datamodel/compbio/data/sequence/Score.java | 58 +++++++++++++++++++- website/AAConWSClientExample.pdf | Bin 16446 -> 0 bytes 4 files changed, 56 insertions(+), 13 deletions(-) delete mode 100644 datamodel/compbio/data/sequence/JalviewAnnotation.java delete mode 100644 website/AAConWSClientExample.pdf diff --git a/datamodel/compbio/data/sequence/JalviewAnnotation.java b/datamodel/compbio/data/sequence/JalviewAnnotation.java deleted file mode 100644 index cf19937..0000000 --- a/datamodel/compbio/data/sequence/JalviewAnnotation.java +++ /dev/null @@ -1,7 +0,0 @@ -package compbio.data.sequence; - -public class JalviewAnnotation { - - String annotation; - -} diff --git a/datamodel/compbio/data/sequence/MultiAnnotatedSequence.java b/datamodel/compbio/data/sequence/MultiAnnotatedSequence.java index 92d475d..1212a7d 100644 --- a/datamodel/compbio/data/sequence/MultiAnnotatedSequence.java +++ b/datamodel/compbio/data/sequence/MultiAnnotatedSequence.java @@ -79,8 +79,4 @@ public class MultiAnnotatedSequence> { return value; } - public JalviewAnnotation toJalviewAnnotation() { - // TODO Auto-generated method stub - return null; - } } diff --git a/datamodel/compbio/data/sequence/Score.java b/datamodel/compbio/data/sequence/Score.java index 127df64..d401aa8 100644 --- a/datamodel/compbio/data/sequence/Score.java +++ b/datamodel/compbio/data/sequence/Score.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.text.NumberFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -15,11 +16,17 @@ import javax.xml.bind.annotation.XmlAccessorType; import compbio.util.annotation.Immutable; +/** + * A value class for AACon annotation results storage + * + * @author pvtroshin + * + */ @XmlAccessorType(XmlAccessType.FIELD) @Immutable public class Score { - public static final NumberFormat NUMBER_FORMAT = NumberFormat + static final NumberFormat NUMBER_FORMAT = NumberFormat .getNumberInstance(Locale.UK); static { NUMBER_FORMAT.setGroupingUsed(false); @@ -34,15 +41,35 @@ public class Score { // JaXB default constructor } + /** + * Instantiate the Score + * + * @param method + * the ConservationMethod with which {@code scores} were + * calculated + * @param scores + * the actual conservation values for each column of the + * alignment + */ public Score(ConservationMethod method, List scores) { this.method = method; - this.scores = scores; + this.scores = new ArrayList(scores); } + /** + * Returns the ConservationMethod + * + * @return the ConservationMethod + */ public ConservationMethod getMethod() { return method; } + /** + * The column scores for the alignment + * + * @return the column scores for the alignment + */ public List getScores() { return scores; } @@ -88,8 +115,35 @@ public class Score { return true; } + /** + * Outputs the List of Score objects into the Output stream. The output + * format is as follows: + * + *
+	 * 	  #MethodName 
+	 * 	  
+	 * For example:
+	 * 	 
+	 * 	  #KABAT 0.2 0.3 0.2 0 0.645 0.333 1 1 0 0
+	 *    #SMERFS 0.645 0.333 1 1 0 0 0.2 0.3 0.2 0
+	 * 
+ * + * The maximum precision for values is 3 digits, but can be less. + * + * @param scores + * the list of scores to output + * @param output + * the stream to output the data to + * @throws IOException + * if the OutputStream cannot be written into + * @throws NullPointerException + * if the output stream is null + */ public static void write(Set scores, OutputStream output) throws IOException { + if (output == null) { + throw new NullPointerException("OutputStream must be provided!"); + } BufferedWriter writer = new BufferedWriter(new OutputStreamWriter( output)); for (Score score : scores) { diff --git a/website/AAConWSClientExample.pdf b/website/AAConWSClientExample.pdf deleted file mode 100644 index 82a315ebbd7f572ef95287843c1957925fa2897b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16446 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 -- 1.7.10.2