Made getPileupWithoutMappingQualityZeroReads() and getPileupWithoutDeletions() more efficient, per Mark's cue.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2356 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
ebanks 2009-12-15 04:35:21 +00:00
parent 874552ff75
commit bf7bab754e
1 changed files with 6 additions and 12 deletions

View File

@ -130,16 +130,14 @@ public class ReadBackedPileup implements Iterable<PileupElement> {
*/ */
public ReadBackedPileup getPileupWithoutDeletions() { public ReadBackedPileup getPileupWithoutDeletions() {
if ( getNumberOfDeletions() > 0 ) { if ( getNumberOfDeletions() > 0 ) {
List<SAMRecord> newReads = new ArrayList<SAMRecord>(); ArrayList<PileupElement> filteredPileup = new ArrayList<PileupElement>();
List<Integer> newOffsets = new ArrayList<Integer>();
for ( PileupElement p : pileup ) { for ( PileupElement p : pileup ) {
if ( !p.isDeletion() ) { if ( !p.isDeletion() ) {
newReads.add(p.getRead()); filteredPileup.add(p);
newOffsets.add(p.getOffset());
} }
} }
return new ReadBackedPileup(loc, newReads, newOffsets); return new ReadBackedPileup(loc, filteredPileup);
} else { } else {
return this; return this;
} }
@ -153,19 +151,15 @@ public class ReadBackedPileup implements Iterable<PileupElement> {
* @return * @return
*/ */
public ReadBackedPileup getPileupWithoutMappingQualityZeroReads() { public ReadBackedPileup getPileupWithoutMappingQualityZeroReads() {
// todo -- eric, this can be more efficient, FYI
if ( getNumberOfMappingQualityZeroReads() > 0 ) { if ( getNumberOfMappingQualityZeroReads() > 0 ) {
List<SAMRecord> newReads = new ArrayList<SAMRecord>(); ArrayList<PileupElement> filteredPileup = new ArrayList<PileupElement>();
List<Integer> newOffsets = new ArrayList<Integer>();
for ( PileupElement p : pileup ) { for ( PileupElement p : pileup ) {
if ( p.getRead().getMappingQuality() > 0 ) { if ( p.getRead().getMappingQuality() > 0 ) {
newReads.add(p.getRead()); filteredPileup.add(p);
newOffsets.add(p.getOffset());
} }
} }
return new ReadBackedPileup(loc, newReads, newOffsets); return new ReadBackedPileup(loc, filteredPileup);
} else { } else {
return this; return this;
} }