Cache pileup bases and mapping quals after first call to getBases() and getMappingQuals(), respectively. Subsequent calls to these method will return cached arrays.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2525 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
d6fb19bb67
commit
a17d725c35
|
|
@ -20,6 +20,8 @@ import net.sf.samtools.SAMRecord;
|
||||||
public class ReadBackedPileup implements Iterable<PileupElement> {
|
public class ReadBackedPileup implements Iterable<PileupElement> {
|
||||||
private GenomeLoc loc = null;
|
private GenomeLoc loc = null;
|
||||||
private ArrayList<PileupElement> pileup = null;
|
private ArrayList<PileupElement> pileup = null;
|
||||||
|
byte [] bases = null; // will be used to cache pileup bases after first call to getBases
|
||||||
|
byte [] mapquals = null; // will be used to cache pileup mapping quals after first call to getMappingQuals
|
||||||
|
|
||||||
private int size = 0; // cached value of the size of the pileup
|
private int size = 0; // cached value of the size of the pileup
|
||||||
private int nDeletions = 0; // cached value of the number of deletions
|
private int nDeletions = 0; // cached value of the number of deletions
|
||||||
|
|
@ -395,9 +397,11 @@ public class ReadBackedPileup implements Iterable<PileupElement> {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public byte[] getBases() {
|
public byte[] getBases() {
|
||||||
byte[] v = new byte[size()];
|
if ( bases == null ) {
|
||||||
for ( ExtendedPileupElement pile : this.extendedForeachIterator() ) { v[pile.getPileupOffset()] = pile.getBase(); }
|
bases = new byte[size()];
|
||||||
return v;
|
for ( ExtendedPileupElement pile : this.extendedForeachIterator() ) { bases[pile.getPileupOffset()] = pile.getBase(); }
|
||||||
|
}
|
||||||
|
return bases;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -425,9 +429,11 @@ public class ReadBackedPileup implements Iterable<PileupElement> {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public byte[] getMappingQuals() {
|
public byte[] getMappingQuals() {
|
||||||
byte[] v = new byte[size()];
|
if ( mapquals == null ) {
|
||||||
for ( ExtendedPileupElement pile : this.extendedForeachIterator() ) { v[pile.getPileupOffset()] = (byte)pile.getRead().getMappingQuality(); }
|
mapquals = new byte[size()];
|
||||||
return v;
|
for ( ExtendedPileupElement pile : this.extendedForeachIterator() ) { mapquals[pile.getPileupOffset()] = (byte)pile.getRead().getMappingQuality(); }
|
||||||
|
}
|
||||||
|
return mapquals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue