From b814f4bbd63fe6a95393cac7edbe0cca101b9eef Mon Sep 17 00:00:00 2001 From: depristo Date: Mon, 23 May 2011 02:21:59 +0000 Subject: [PATCH] Contracts for HasGenomeLocation. BAQ iterator variables are all final. Contracts added git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5844 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/utils/HasGenomeLocation.java | 3 +++ .../sting/utils/baq/BAQSamIterator.java | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/java/src/org/broadinstitute/sting/utils/HasGenomeLocation.java b/java/src/org/broadinstitute/sting/utils/HasGenomeLocation.java index 3c01dd897..2ec145e98 100644 --- a/java/src/org/broadinstitute/sting/utils/HasGenomeLocation.java +++ b/java/src/org/broadinstitute/sting/utils/HasGenomeLocation.java @@ -1,8 +1,11 @@ package org.broadinstitute.sting.utils; +import com.google.java.contract.Ensures; + /** * Indicates that this object has a genomic location and provides a systematic interface to get it. */ public interface HasGenomeLocation { + @Ensures("result != null") public GenomeLoc getLocation(); } diff --git a/java/src/org/broadinstitute/sting/utils/baq/BAQSamIterator.java b/java/src/org/broadinstitute/sting/utils/baq/BAQSamIterator.java index 0353559fe..24d4152a5 100644 --- a/java/src/org/broadinstitute/sting/utils/baq/BAQSamIterator.java +++ b/java/src/org/broadinstitute/sting/utils/baq/BAQSamIterator.java @@ -1,5 +1,7 @@ package org.broadinstitute.sting.utils.baq; +import com.google.java.contract.Ensures; +import com.google.java.contract.Requires; import net.sf.samtools.SAMRecord; import net.sf.picard.reference.IndexedFastaSequenceFile; import org.broadinstitute.sting.utils.baq.BAQ; @@ -12,11 +14,11 @@ import java.util.Iterator; * Simple iterator that applies Heng's BAQ calculation to a stream of incoming reads */ public class BAQSamIterator implements StingSAMIterator { - StingSAMIterator it; - BAQ baqHMM = new BAQ(); // creates a BAQ creator with default parameters - IndexedFastaSequenceFile refReader = null; - BAQ.CalculationMode cmode; - BAQ.QualityMode qmode; + private final StingSAMIterator it; + private final BAQ baqHMM = new BAQ(); // creates a BAQ creator with default parameters + private final IndexedFastaSequenceFile refReader; + private final BAQ.CalculationMode cmode; + private final BAQ.QualityMode qmode; /** * Creates a new BAMSamIterator using the reference getter refReader and applies the BAM to the reads coming @@ -27,6 +29,11 @@ public class BAQSamIterator implements StingSAMIterator { * @param cmode * @param qmode */ + @Requires({ + "refReader != null", + "it != null", + "cmode != null" , + "qmode != null"}) public BAQSamIterator(IndexedFastaSequenceFile refReader, StingSAMIterator it, BAQ.CalculationMode cmode, BAQ.QualityMode qmode) { if ( cmode == BAQ.CalculationMode.OFF) throw new ReviewedStingException("BUG: shouldn't create BAQSamIterator with calculation mode OFF"); if ( qmode == BAQ.QualityMode.DONT_MODIFY ) throw new ReviewedStingException("BUG: shouldn't create BAQSamIterator with quailty mode DONT_MODIFY"); @@ -37,6 +44,8 @@ public class BAQSamIterator implements StingSAMIterator { this.qmode = qmode; } + @Requires("hasNext()") + @Ensures("result != null") public SAMRecord next() { //System.out.printf("BAQing during input%n"); SAMRecord read = it.next();