fix for RBP getPileupsForSamples()
do not differentiate per sample pileups from generic pileups. Do the same for both -- it's O(n) either way.
This commit is contained in:
parent
82b4798913
commit
902277856e
|
|
@ -696,32 +696,26 @@ public abstract class AbstractReadBackedPileup<RBP extends AbstractReadBackedPil
|
|||
@Override
|
||||
public Map<String, ReadBackedPileup> getPileupsForSamples(Collection<String> sampleNames) {
|
||||
Map<String, ReadBackedPileup> result = new HashMap<String, ReadBackedPileup>();
|
||||
if (pileupElementTracker instanceof PerSamplePileupElementTracker) {
|
||||
PerSamplePileupElementTracker<PE> tracker = (PerSamplePileupElementTracker<PE>) pileupElementTracker;
|
||||
for (String sample : sampleNames) {
|
||||
PileupElementTracker<PE> filteredElements = tracker.getElements(sampleNames);
|
||||
if (filteredElements != null)
|
||||
result.put(sample, createNewPileup(loc, filteredElements));
|
||||
}
|
||||
} else {
|
||||
Map<String, UnifiedPileupElementTracker<PE>> trackerMap = new HashMap<String, UnifiedPileupElementTracker<PE>>();
|
||||
|
||||
for (String sample : sampleNames) { // initialize pileups for each sample
|
||||
UnifiedPileupElementTracker<PE> filteredTracker = new UnifiedPileupElementTracker<PE>();
|
||||
trackerMap.put(sample, filteredTracker);
|
||||
}
|
||||
for (PE p : pileupElementTracker) { // go through all pileup elements only once and add them to the respective sample's pileup
|
||||
GATKSAMRecord read = p.getRead();
|
||||
if (read.getReadGroup() != null) {
|
||||
String sample = read.getReadGroup().getSample();
|
||||
UnifiedPileupElementTracker<PE> tracker = trackerMap.get(sample);
|
||||
if (tracker != null) // we only add the pileup the requested samples. Completely ignore the rest
|
||||
tracker.add(p);
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, UnifiedPileupElementTracker<PE>> entry : trackerMap.entrySet()) // create the RBP for each sample
|
||||
result.put(entry.getKey(), createNewPileup(loc, entry.getValue()));
|
||||
Map<String, UnifiedPileupElementTracker<PE>> trackerMap = new HashMap<String, UnifiedPileupElementTracker<PE>>();
|
||||
|
||||
for (String sample : sampleNames) { // initialize pileups for each sample
|
||||
UnifiedPileupElementTracker<PE> filteredTracker = new UnifiedPileupElementTracker<PE>();
|
||||
trackerMap.put(sample, filteredTracker);
|
||||
}
|
||||
|
||||
for (PE p : pileupElementTracker) { // go through all pileup elements only once and add them to the respective sample's pileup
|
||||
GATKSAMRecord read = p.getRead();
|
||||
if (read.getReadGroup() != null) {
|
||||
String sample = read.getReadGroup().getSample();
|
||||
UnifiedPileupElementTracker<PE> tracker = trackerMap.get(sample);
|
||||
if (tracker != null) // we only add the pileup the requested samples. Completely ignore the rest
|
||||
tracker.add(p);
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<String, UnifiedPileupElementTracker<PE>> entry : trackerMap.entrySet()) // create the RBP for each sample
|
||||
result.put(entry.getKey(), createNewPileup(loc, entry.getValue()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue