diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/RodGLF.java b/java/src/org/broadinstitute/sting/gatk/refdata/RodGLF.java deleted file mode 100644 index 2d039b8ca..000000000 --- a/java/src/org/broadinstitute/sting/gatk/refdata/RodGLF.java +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright (c) 2010 The Broad Institute - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package org.broadinstitute.sting.gatk.refdata; - -import org.broadinstitute.sting.utils.*; -import org.broadinstitute.sting.utils.genotype.LikelihoodObject; -import org.broadinstitute.sting.utils.genotype.glf.GLFReader; -import org.broadinstitute.sting.utils.genotype.glf.GLFRecord; -import org.broadinstitute.sting.utils.genotype.glf.GLFSingleCall; -import org.broadinstitute.sting.utils.genotype.glf.GLFVariableLengthCall; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; - - -/** - * @author aaron - *

- * Class RodGLF - *

- * the rod class for GLF data. - */ -public class RodGLF implements Iterator, ReferenceOrderedDatum { - public GLFReader mReader; - private final String mName; - private GenomeLoc mLoc; - public GLFRecord mRecord; - - public RodGLF(String name) { - mName = name; - } - - /** - * get the name - * - * @return the name - */ - public String getName() { - return mName; - } - - /** - * Backdoor hook to read header, meta-data, etc. associated with the file. Will be - * called by the ROD system before streaming starts - * - * @param source source data file on disk from which this rod stream will be pulled - * - * @return a header object that will be passed to parseLine command - */ - public Object initialize(File source) throws FileNotFoundException { - mReader = new GLFReader(source); - return null; - } - - public String toSimpleString() { - return toString(); - } - - /** @return a string representation of the ROD GLF object */ - public String toString() { - return String.format("%s\t%d\t%s\t%d\t%d\t%4.4f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f", - mLoc.getContig(), - mLoc.getStart(), - mRecord.getRefBase(), - mRecord.getReadDepth(), - mRecord.getRmsMapQ(), - getBestGenotypeValue(1), - ((GLFSingleCall) mRecord).getLikelihoods()[0], - ((GLFSingleCall) mRecord).getLikelihoods()[1], - ((GLFSingleCall) mRecord).getLikelihoods()[2], - ((GLFSingleCall) mRecord).getLikelihoods()[3], - ((GLFSingleCall) mRecord).getLikelihoods()[4], - ((GLFSingleCall) mRecord).getLikelihoods()[5], - ((GLFSingleCall) mRecord).getLikelihoods()[6], - ((GLFSingleCall) mRecord).getLikelihoods()[7], - ((GLFSingleCall) mRecord).getLikelihoods()[8], - ((GLFSingleCall) mRecord).getLikelihoods()[9] - - - ); - } - - public String repl() { - return this.toString(); - } - - /** - * Used by the ROD system to determine how to split input lines - * - * @return Regex string delimiter separating fields - */ - public String delimiterRegex() { - return ""; - } - - /** - * return a genome loc representing the current location - * - * @return the geonome loc - */ - public GenomeLoc getLocation() { - return mLoc; - } - - /** - * get the reference base(s) at this position - * - * @return the reference base or bases, as a string - */ - public String getReference() { - return mRecord.getRefBase().toString(); - } - - /** are we bi-allelic? */ - public boolean isBiallelic() { - return true; - } - - /** - * Returns true if all observed alleles are reference alleles. All is methods (where Variant=SNP,Insertion, etc) should - * return false at such site to ensure consistency. This method is included for use with genotyping calls (isGenotype()==true), it makes - * no sense for, e.g. dbSNP and should return false for the latter. - * - * @return - */ - public boolean isReference() { - return (!isSNP()); - } - - /** - * are we an insertion or a deletion? yes, then return true. No? Well, false it is. - * - * @return true if we're an insertion or deletion - */ - public boolean isIndel() { - return (isDeletion() || isInsertion()); - } - - /** - * gets the alternate base is the case of a SNP. Throws an IllegalStateException in the case - * of - * - * @return a char, representing the alternate base - */ - public char getAlternativeBaseForSNP() { - if (!this.isSNP()) throw new IllegalStateException("we're not a SNP"); - List alleles = this.getAlternateAlleleList(); - if (alleles.size() != 1) throw new StingException("We're not biAllelic()"); - return Utils.stringToChar(alleles.get(0)); - } - - /** - * gets the reference base is the case of a SNP. Throws an IllegalStateException if we're not a SNP - * - * @return a char, representing the alternate base - */ - public char getReferenceForSNP() { - if (!this.isSNP()) throw new IllegalStateException("we're not a SNP"); - return Utils.stringToChar(getReference()); - } - - /** - * Is this variant a SNP? - * - * @return true or false - */ - public boolean isSNP() { - return ((mRecord.getRecordType() == GLFRecord.RECORD_TYPE.SINGLE) && - (!getBestGenotype(1).toString().equals(refString(mRecord.getRefBase().toChar())))); - } - - /** - * return a string representing the reference - * - * @param ref the reference character - * - * @return a string for the homozygous ref in a diploid - */ - private static String refString(char ref) { - return new String(new char[]{ref, ref}); - } - - /** - * Get the nth best genotype (one based), i.e. to get the best genotype pass in 1, - * the second best 2, etdc. - * - * @param nthBest the nth best genotype to get (1 based, NOT ZERO BASED) - * - * @return a GENOTYPE object representing the nth best genotype - */ - public LikelihoodObject.GENOTYPE getBestGenotype(int nthBest) { - Integer[] sorted = MathUtils.sortPermutation(((GLFSingleCall) mRecord).getLikelihoods()); - return LikelihoodObject.GENOTYPE.values()[sorted[nthBest - 1]]; - } - - /** - * Get the nth best genotype value (one based), i.e. to get the best genotype pass in 1, - * the second best 2, etdc. - * - * @param nthBest the nth best genotype value to get - * - * @return a GENOTYPE object representing the nth best genotype - */ - public double getBestGenotypeValue(int nthBest) { - Integer[] sorted = MathUtils.sortPermutation(((GLFSingleCall) mRecord).getLikelihoods()); - return (((GLFSingleCall) mRecord).getLikelihoods())[sorted[nthBest - 1]]; - } - - /** - * Is this variant an insertion? The contract requires isIndel() to return true - * if this method returns true. - * - * @return true or false - */ - public boolean isInsertion() { - return ((mRecord.getRecordType() == GLFRecord.RECORD_TYPE.VARIABLE) && - ((GLFVariableLengthCall) mRecord).getIndelLen1() > 0); - } - - /** - * Is this variant a deletion? The contract requires isIndel() to return true - * if isDeletion() returns true. - * - * @return true or false - */ - public boolean isDeletion() { - return ((mRecord.getRecordType() == GLFRecord.RECORD_TYPE.VARIABLE) && - ((GLFVariableLengthCall) mRecord).getIndelLen1() < 0); - } - - /** - * Returns minor allele frequency. - * - * @return - */ - public double getNonRefAlleleFrequency() { - return 0; - } - - /** - * Returns phred-mapped confidence in variation event (e.g. MAQ's SNP confidence, or AlleleCaller's best vs. ref). - * - * @return - */ - public double getNegLog10PError() { - String ref = new String() + mRecord.getRefBase() + mRecord.getRefBase(); - int index = 0; - for (LikelihoodObject.GENOTYPE g : LikelihoodObject.GENOTYPE.values()) { - if (g.toString().equals(ref)) break; - index++; - } - return Math.abs(getBestGenotypeValue(1) - ((GLFSingleCall) mRecord).getLikelihoods()[index]) / GLFRecord.LIKELIHOOD_SCALE_FACTOR; - } - - /** - * gets the alternate alleles. This method should return all the alleles present at the location, - * NOT including the reference base. This is returned as a string list with no guarantee ordering - * of alleles (i.e. the first alternate allele is not always going to be the allele with the greatest - * frequency). - * - * @return an alternate allele list - */ - public List getAlternateAlleleList() { - LikelihoodObject.GENOTYPE genotype = getBestGenotype(1); - List ret = new ArrayList(); - for (char c : genotype.toString().toCharArray()) { - if (!String.valueOf(c).equals(this.getReference())) ret.add(String.valueOf(c)); - } - return ret; - } - - /** - * gets the alleles. This method should return all the alleles present at the location, - * including the reference base. The first allele should always be the reference allele, followed - * by an unordered list of alternate alleles. - * - * @return an alternate allele list - */ - public List getAlleleList() { - LikelihoodObject.GENOTYPE genotype = getBestGenotype(1); - List list = new ArrayList(); - if (genotype.toString().contains(this.getReference())) list.add(this.getReference()); - for (char c : genotype.toString().toCharArray()) - if (c != Utils.stringToChar(getReference())) - list.add(String.valueOf(c)); - return list; - } - - public int length() { - return 1; - } - - public int compareTo(ReferenceOrderedDatum that) { - return this.mLoc.compareTo(that.getLocation()); - } - - /** - * the parse line, which is not used by the GLF rod - * - * @param header the header to pass in - * @param parts the string object - * - * @return false, alwayss - * @throws java.io.IOException - */ - public boolean parseLine(Object header, String[] parts) throws IOException { - return false; //To change body of implemented methods use File | Settings | File Templates. - } - - @Override - public boolean hasNext() { - return (mReader.hasNext()); - } - - /** - * @return the next element in the iteration. - * @throws NoSuchElementException - iterator has no more elements. - */ - @Override - public RodGLF next() { - if (!this.hasNext()) throw new NoSuchElementException("RodGLF next called on iterator with no more elements"); - mRecord = mReader.next(); - mLoc = GenomeLocParser.createGenomeLoc(mRecord.getContig(), mRecord.getPosition(), mRecord.getPosition()); - return this; - } - - @Override - public void remove() { - throw new UnsupportedOperationException("GLF Rods don't support the remove() function"); - } - - public static RodGLF createIterator(String name, File file) { - RodGLF glf = new RodGLF(name); - try { - glf.initialize(file); - } catch (FileNotFoundException e) { - throw new StingException("Unable to find file " + file); - } - return glf; - } - -} - diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java b/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java index 2b60ab92b..84da1493a 100755 --- a/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java @@ -49,7 +49,6 @@ public class VariantContextAdaptors { adaptors.put(VCFRecord.class, new VCFRecordAdaptor()); adaptors.put(PlinkRod.class, new PlinkRodAdaptor()); adaptors.put(HapMapROD.class, new HapMapAdaptor()); - adaptors.put(RodGLF.class, new GLFAdaptor()); adaptors.put(GeliTextFeature.class, new GeliTextAdaptor()); adaptors.put(rodGELI.class, new GeliAdaptor()); adaptors.put(VariantContext.class, new VariantContextAdaptor()); @@ -505,77 +504,6 @@ public class VariantContextAdaptors { } } - // -------------------------------------------------------------------------------------------------------------- - // - // GLF to VariantContext - // - // -------------------------------------------------------------------------------------------------------------- - private static class GLFAdaptor extends VCAdaptor { - /** - * convert to a Variant Context, given: - * @param name the name of the ROD - * @param input the Rod object, in this case a RodGLF - * @return a VariantContext object - */ - VariantContext convert(String name, Object input) { - return convert(name, input, null); - } - - /** - * convert to a Variant Context, given: - * @param name the name of the ROD - * @param input the Rod object, in this case a RodGLF - * @param ref the reference context - * @return a VariantContext object - */ - VariantContext convert(String name, Object input, ReferenceContext ref) { - RodGLF glf = (RodGLF)input; - - if ( ! Allele.acceptableAlleleBases(glf.getReference(),true) ) - return null; - Allele refAllele = Allele.create(glf.getReference(), true); - - // make sure we can convert it - if ( glf.isSNP() || glf.isIndel()) { - // add the reference allele - List alleles = new ArrayList(); - alleles.add(refAllele); - - // add all of the alt alleles - for ( String alt : glf.getAlternateAlleleList() ) { - if ( ! Allele.acceptableAlleleBases(alt,false) ) { - return null; - } - Allele allele = Allele.create(alt, false); - if (!alleles.contains(allele)) alleles.add(allele); - } - - - Map attributes = new HashMap(); - Collection genotypes = new ArrayList(); - MutableGenotype call = new MutableGenotype(name, alleles); - - if (glf.mRecord instanceof GLFSingleCall) { - // transform the likelihoods from negative log (positive double values) to log values (negitive values) - LikelihoodObject obj = new LikelihoodObject(((GLFSingleCall)glf.mRecord).getLikelihoods(), LikelihoodObject.LIKELIHOOD_TYPE.NEGATIVE_LOG); - obj.setLikelihoodType(LikelihoodObject.LIKELIHOOD_TYPE.LOG); - - // set the likelihoods, depth, and RMS mapping quality values - call.putAttribute(CalledGenotype.LIKELIHOODS_ATTRIBUTE_KEY,obj.toDoubleArray()); - call.putAttribute(VCFGenotypeRecord.DEPTH_KEY,(glf.mRecord.getReadDepth())); - call.putAttribute(GLFWriter.RMS_MAPPING_QUAL, (double) glf.mRecord.getRmsMapQ()); - } else { - throw new UnsupportedOperationException("We don't currenly support indel calls"); - } - - // add the call to the genotype list, and then use this list to create a VariantContext - genotypes.add(call); - VariantContext vc = new VariantContext(name, glf.getLocation(), alleles, genotypes, glf.getNegLog10PError(), null, attributes); - return vc; - } else - return null; // can't handle anything else - } - } // -------------------------------------------------------------------------------------------------------------- // diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RODTrackBuilder.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RODTrackBuilder.java index 600c1124f..8041abc9d 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RODTrackBuilder.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RODTrackBuilder.java @@ -58,7 +58,6 @@ public class RODTrackBuilder implements RMDTrackBuilder { Types.put("Table", TabularROD.class); Types.put("HapMap", HapMapROD.class); Types.put("Intervals", IntervalRod.class); - Types.put("GLF", RodGLF.class); Types.put("PicardDbSNP", rodPicardDbSNP.class); Types.put("Beagle", BeagleROD.class); Types.put("Plink", PlinkRod.class); diff --git a/java/test/org/broadinstitute/sting/gatk/refdata/RodGLFUnitTest.java b/java/test/org/broadinstitute/sting/gatk/refdata/RodGLFUnitTest.java deleted file mode 100644 index 67a7d6ea0..000000000 --- a/java/test/org/broadinstitute/sting/gatk/refdata/RodGLFUnitTest.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.broadinstitute.sting.gatk.refdata; - -import net.sf.picard.reference.ReferenceSequenceFile; -import net.sf.picard.reference.ReferenceSequenceFileFactory; -import org.broadinstitute.sting.BaseTest; -import org.broadinstitute.sting.utils.GenomeLocParser; -import org.junit.Assert; -import static org.junit.Assert.assertEquals; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.io.File; - -/** - * Created by IntelliJ IDEA. - * User: aaron - * Date: Jul 15, 2009 - * Time: 12:18:50 AM - *

- * These tests work upon a very small data set, with the following samtools glfview dump: - *

- * chrM 1 A 5 20 0 0 127 127 127 254 254 254 254 254 254 - * chrM 2 A 5 20 0 254 254 254 127 254 254 127 254 127 0 - * chrM 3 A 5 20 0 254 127 254 254 0 127 127 254 254 254 - *

- * You'll notice that the first is a hom ref, and the other two are hom alt SNP's - */ -public class RodGLFUnitTest extends BaseTest { - static final File glfFile = new File(validationDataLocation + "glfTestFile.glf"); - static final int finalRecordCount = 100; // the number of records in the above file - static final int contigCount = 1; - static final String ref = oneKGLocation + "reference/human_b36_both.fasta"; - static ReferenceSequenceFile r; - private RodGLF iter = null; - - @BeforeClass - public static void before() { - r = ReferenceSequenceFileFactory.getReferenceSequenceFile(new File(ref)); - GenomeLocParser.setupRefContigOrdering(r); - } - - @Before - public void setup() { - iter = RodGLF.createIterator("test", glfFile); - } - - @Test - public void testRodCount() { - int counter = 0; - while (iter.hasNext()) { - RodGLF glf = iter.next(); - counter++; - } - assertEquals(finalRecordCount, counter); - } - - - - @Test - public void testIsSNP() { - RodGLF glf = iter.next(); - Assert.assertFalse(iter.isSNP()); - glf = iter.next(); - Assert.assertTrue(iter.isSNP()); - glf = iter.next(); - Assert.assertTrue(iter.isSNP()); - } - - @Test - public void testIsReference() { - RodGLF glf = iter.next(); - Assert.assertTrue(iter.isReference()); - glf = iter.next(); - Assert.assertFalse(iter.isReference()); - glf = iter.next(); - Assert.assertFalse(iter.isReference()); - } - - @Test(expected = IllegalStateException.class) - public void testGetAltSnpFWDIllegalException() { - RodGLF glf = iter.next(); - iter.getAlternativeBaseForSNP(); - } - - - - - @Test - public void testCompareTo() { - RodGLF iter2 = RodGLF.createIterator("test", glfFile); - RodGLF glf = iter.next(); - RodGLF glf2 = iter2.next(); - assertEquals(0, glf.compareTo(glf2)); - glf2 = iter2.next(); - assertEquals(-1, glf.compareTo(glf2)); - assertEquals(1, glf2.compareTo(glf)); - - } - - @Test - public void testGetAltSnpFWD() { - RodGLF glf = iter.next(); - glf = iter.next(); - Assert.assertEquals('C', iter.getAlternativeBaseForSNP()); - } - - @Test - public void testGetRefSnpFWD() { - RodGLF glf = iter.next(); - glf = iter.next(); - glf = iter.next(); - Assert.assertEquals('A', iter.getReferenceForSNP()); - } - - - - /** - * move to the second and third bases, and check that the - * alternate bases are correct. - * - @Test - public void testGetAltBasesFWD() { - RodGLF glf = iter.next(); - glf = iter.next(); - Assert.assertTrue("GT".equals(iter.getAltBasesFWD())); - glf = iter.next(); - Assert.assertTrue("CT".equals(iter.getAltBasesFWD())); - - } - - @Test - public void testRodLocations() { - GenomeLoc loc = null; - while (iter.hasNext()) { - RodGLF glf = iter.next(); - if (loc != null) { - if (iter.getLocation().isBefore(loc)) { - Assert.fail("locations in the GLF came out of order loc = " + loc.toString() + " new loc = " + iter.getLocation().toString()); - } - } - loc = iter.getLocation(); - } - } - - //@Test - /** - * create the example glf file for the test, you can uncomment the above test line to have this - * test run, regenerating the file. - * - public void createRodFile() { - GenotypeWriter writer = new GLFWriter("", new File("glfTestFile.glf")); - int location = 1; - int x = 0; - writer.addGenotypeCall(r.getSequenceDictionary().getSequence(0), 1, 20, 'A', 5, createLikelihood('A')); - writer.addGenotypeCall(r.getSequenceDictionary().getSequence(0), 2, 20, 'A', 5, createLikelihood('T')); - writer.addGenotypeCall(r.getSequenceDictionary().getSequence(0), 3, 20, 'A', 5, createLikelihood('C')); - writer.close(); - }*/ - - /** - * create a likelihood object, given the appropriate reference base - * - * @param ref the reference base - * - * @return the likelihood object - * - private LikelihoodObject createLikelihood(char ref) { - ArrayList vals = new ArrayList(); - for (LikelihoodObject.GENOTYPE type : LikelihoodObject.GENOTYPE.values()) { - double x = (type.toString().charAt(0) == ref) ? 0 : 127 - (10 * Math.random()); - x += (type.toString().charAt(1) == ref) ? 0 : 127 - (10 * Math.random()); - vals.add(x); - } - double ret[] = new double[vals.size()]; - for (int x = 0; x < vals.size(); x++) { - ret[x] = vals.get(x); - } - return new LikelihoodObject(ret, LikelihoodObject.LIKELIHOOD_TYPE.NEGATIVE_LOG); - }*/ - - - /** - * just make sure that we do get a string back, and no exceptions are thrown - */ - @Test - public void testToString() { - RodGLF glf = iter.next(); - iter.toString(); - } -} \ No newline at end of file diff --git a/java/test/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptorsUnitTest.java b/java/test/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptorsUnitTest.java index 64034c502..d842e264d 100644 --- a/java/test/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptorsUnitTest.java +++ b/java/test/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptorsUnitTest.java @@ -51,70 +51,6 @@ public class VariantContextAdaptorsUnitTest extends BaseTest { GenomeLocParser.setupRefContigOrdering(seq); } - - /** - * this test takes a known GLF file, reads in the records (storing them into an array), - * and creates VariantContext records. These VC records are then outputted through a genotype writer, - * and then read back in off of disk and compared to the original records. This way we are positive all - * the information that encodes a GLF makes it into the VC and then out to disk. - */ - @Test - public void testVariantContextGLFToGLF() { - - // our input and output files - File referenceFile = new File(validationDataLocation + "/well_formed.glf"); // our known good GLF - File tempFile = new File("temp.glf"); // our temporary GLF output -> input file - tempFile.deleteOnExit(); // delete when we're done - - // create our genotype writer for GLFs - GenotypeWriter gw = GenotypeWriterFactory.create(GenotypeWriterFactory.GENOTYPE_FORMAT.GLF,tempFile); - ((GLFWriter)gw).writeHeader(""); - - RodGLF glf = new RodGLF("myROD"); // now cycle the input file to the output file - try { - glf.initialize(referenceFile); - } catch (FileNotFoundException e) { - Assert.fail("Unable to open GLF file" + referenceFile); - } - - // buffer the records we see - List records = new ArrayList(); - - // while we have records, make a Variant Context and output it to a GLF file - while (glf.hasNext()) { - glf.next(); - records.add((GLFSingleCall)glf.mRecord); // we know they're all single calls in the reference file - VariantContext vc = VariantContextAdaptors.toVariantContext("GLF",glf, null); - gw.addCall(vc,null); - } - gw.close(); // close the file - - - // now reopen the file with the temp GLF file and read it back in, compare against what we first stored - glf = new RodGLF("myROD"); - try { - glf.initialize(tempFile); - } catch (FileNotFoundException e) { - Assert.fail("Unable to open GLF file" + tempFile); - } - - // buffer the new records we see - List records2 = new ArrayList(); - - // while we have records, make a Variant Context and output it to a GLF file - while (glf.hasNext()) { - glf.next(); - records2.add((GLFSingleCall)glf.mRecord); // we know they're all single calls in the reference file - } - - // compare sizes - Assert.assertEquals("The input GLF file doesn't contain the same number of records as we saw in the first file", records.size(),records2.size()); - - // now compare each record - for (int x = 0; x < records.size(); x++) - Assert.assertTrue("GLF Records were not preserved when cycling them to and from disc", records.get(x).equals(records2.get(x))); - } - /** * this test takes a known Geli file, reads in the records (storing them into an array), * and creates VariantContext records. These VC records are then outputted through a genotype writer, diff --git a/java/test/org/broadinstitute/sting/gatk/refdata/features/vcf4/VCF4UnitTest.java b/java/test/org/broadinstitute/sting/gatk/refdata/features/vcf4/VCF4UnitTest.java index 86b0567d1..e6387977e 100644 --- a/java/test/org/broadinstitute/sting/gatk/refdata/features/vcf4/VCF4UnitTest.java +++ b/java/test/org/broadinstitute/sting/gatk/refdata/features/vcf4/VCF4UnitTest.java @@ -211,7 +211,7 @@ public class VCF4UnitTest extends BaseTest { // test that we're getting the right genotype for what appears to be a multi-base polymorphism, but is really just a SNP String MNPLine2 = "20\t14370\trs6054257\tGT\tAT\t29\tPASS\tNS=3;DP=14;AF=0.5;DB;H2\tGT:GQ:DP:HQ\t0|0:48:1:51,51\t1|0:48:8:51,51\t1/1:43:5:.,."; @Test - public void testMNP2Validation() { + public void testMNPWannabeButReallyASNPValidation() { TestSetup testSetup = new TestSetup().invoke(vcfGenotypeFile); VariantContext vc = (VariantContext)testSetup.codec.decode(MNPLine2); Map genotypes = vc.getGenotypes(); @@ -287,8 +287,7 @@ public class VCF4UnitTest extends BaseTest { try { testSetup.codec.decode(line); } catch (Exception e) { - System.err.println(e.getMessage() + " -> " + line); - System.err.println(line); + Assert.fail("Bad record from line " + line + " message = " + e.getMessage()); badRecordCount++; } line = reader.readLine();