Stop RBP.getPileupBySample() from throwing a NullPointerException if the
sample doesn't exist -- now returns null. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4719 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
d2fc30d188
commit
082073ca3c
|
|
@ -612,7 +612,8 @@ public abstract class AbstractReadBackedPileup<RBP extends AbstractReadBackedPil
|
|||
public RBP getPileupForSampleName(String sampleName) {
|
||||
if(pileupElementTracker instanceof PerSamplePileupElementTracker) {
|
||||
PerSamplePileupElementTracker<PE> tracker = (PerSamplePileupElementTracker<PE>)pileupElementTracker;
|
||||
return (RBP)createNewPileup(loc,tracker.getElements(sampleName));
|
||||
PileupElementTracker<PE> filteredElements = tracker.getElements(sampleName);
|
||||
return filteredElements != null ? (RBP)createNewPileup(loc,filteredElements) : null;
|
||||
}
|
||||
else {
|
||||
UnifiedPileupElementTracker<PE> filteredTracker = new UnifiedPileupElementTracker<PE>();
|
||||
|
|
@ -635,7 +636,8 @@ public abstract class AbstractReadBackedPileup<RBP extends AbstractReadBackedPil
|
|||
public RBP getPileupForSample(Sample sample) {
|
||||
if(pileupElementTracker instanceof PerSamplePileupElementTracker) {
|
||||
PerSamplePileupElementTracker<PE> tracker = (PerSamplePileupElementTracker<PE>)pileupElementTracker;
|
||||
return (RBP)createNewPileup(loc,tracker.getElements(sample));
|
||||
PileupElementTracker<PE> filteredElements = tracker.getElements(sample);
|
||||
return filteredElements != null ? (RBP)createNewPileup(loc,filteredElements) : null;
|
||||
}
|
||||
else {
|
||||
UnifiedPileupElementTracker<PE> filteredTracker = new UnifiedPileupElementTracker<PE>();
|
||||
|
|
|
|||
|
|
@ -33,10 +33,7 @@ import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils;
|
|||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Test routines for read-backed pileup.
|
||||
|
|
@ -164,4 +161,44 @@ public class ReadBackedPileupUnitTest {
|
|||
Assert.assertEquals(rg2Reads.get(0), read2, "Read " + read2.getReadName() + " should be in rg2 but isn't");
|
||||
Assert.assertEquals(rg2Reads.get(1), read4, "Read " + read4.getReadName() + " should be in rg2 but isn't");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetPileupForSample() {
|
||||
Sample sample1 = new Sample("sample1");
|
||||
Sample sample2 = new Sample("sample2");
|
||||
|
||||
SAMReadGroupRecord readGroupOne = new SAMReadGroupRecord("rg1");
|
||||
readGroupOne.setSample(sample1.getId());
|
||||
SAMReadGroupRecord readGroupTwo = new SAMReadGroupRecord("rg2");
|
||||
readGroupTwo.setSample(sample2.getId());
|
||||
|
||||
SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(1,1,1000);
|
||||
header.addReadGroup(readGroupOne);
|
||||
header.addReadGroup(readGroupTwo);
|
||||
|
||||
SAMRecord read1 = ArtificialSAMUtils.createArtificialRead(header,"read1",0,1,10);
|
||||
read1.setAttribute("RG",readGroupOne.getId());
|
||||
SAMRecord read2 = ArtificialSAMUtils.createArtificialRead(header,"read2",0,1,10);
|
||||
read2.setAttribute("RG",readGroupTwo.getId());
|
||||
|
||||
Map<Sample,ReadBackedPileupImpl> sampleToPileupMap = new HashMap<Sample,ReadBackedPileupImpl>();
|
||||
sampleToPileupMap.put(sample1,new ReadBackedPileupImpl(null,Collections.singletonList(read1),0));
|
||||
sampleToPileupMap.put(sample2,new ReadBackedPileupImpl(null,Collections.singletonList(read2),0));
|
||||
|
||||
ReadBackedPileup pileup = new ReadBackedPileupImpl(null,sampleToPileupMap);
|
||||
|
||||
ReadBackedPileup sample1Pileup = pileup.getPileupForSample(sample1);
|
||||
Assert.assertEquals(sample1Pileup.size(),1,"Sample 1 pileup has wrong number of elements");
|
||||
Assert.assertEquals(sample1Pileup.getReads().get(0),read1,"Sample 1 pileup has incorrect read");
|
||||
|
||||
ReadBackedPileup sample2Pileup = pileup.getPileupForSampleName(sample2.getId());
|
||||
Assert.assertEquals(sample2Pileup.size(),1,"Sample 2 pileup has wrong number of elements");
|
||||
Assert.assertEquals(sample2Pileup.getReads().get(0),read2,"Sample 2 pileup has incorrect read");
|
||||
|
||||
ReadBackedPileup missingSamplePileup = pileup.getPileupForSample(new Sample("missing"));
|
||||
Assert.assertNull(missingSamplePileup,"Pileup for sample 'missing' should be null but isn't");
|
||||
|
||||
missingSamplePileup = pileup.getPileupForSampleName("not here");
|
||||
Assert.assertNull(missingSamplePileup,"Pileup for sample 'not here' should be null but isn't");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue