Added convenience functions for RefHanger
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@585 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
7ed496b859
commit
fd496159a8
|
|
@ -85,7 +85,8 @@ public class RefHanger<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getRightOffset() {
|
protected int getRightOffset() {
|
||||||
return hangers.size() - 1;
|
//return hangers.size() - 1;
|
||||||
|
return isEmpty() ? 0 : hangers.size() - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getOffset(GenomeLoc loc) {
|
protected int getOffset(GenomeLoc loc) {
|
||||||
|
|
@ -101,6 +102,10 @@ public class RefHanger<T> {
|
||||||
return hangers.get(getRightOffset()).loc;
|
return hangers.get(getRightOffset()).loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GenomeLoc getLoc(int i) {
|
||||||
|
return hangers.get(i).loc;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasLocation(GenomeLoc loc) {
|
public boolean hasLocation(GenomeLoc loc) {
|
||||||
return !isEmpty() && loc.isBetween(getLeftLoc(), getRightLoc());
|
return !isEmpty() && loc.isBetween(getLeftLoc(), getRightLoc());
|
||||||
}
|
}
|
||||||
|
|
@ -160,6 +165,14 @@ public class RefHanger<T> {
|
||||||
return hangers.size();
|
return hangers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder s = new StringBuilder();
|
||||||
|
for ( int i = 0; i < size(); i++) {
|
||||||
|
s.append(String.format("%s => %s%n", getLoc(i), Utils.join(",", getHanger(i).data)));
|
||||||
|
}
|
||||||
|
return s.toString();
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Adding data to the left and right
|
// Adding data to the left and right
|
||||||
|
|
@ -178,6 +191,10 @@ public class RefHanger<T> {
|
||||||
hangers.add(0, new Hanger(pos, data));
|
hangers.add(0, new Hanger(pos, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void pushLeft(GenomeLoc pos, List<T> data) {
|
||||||
|
hangers.add(0, new Hanger(pos, new ArrayList<T>(data)));
|
||||||
|
}
|
||||||
|
|
||||||
public void pushRight(GenomeLoc pos) {
|
public void pushRight(GenomeLoc pos) {
|
||||||
pushRight(pos, new ArrayList<T>());
|
pushRight(pos, new ArrayList<T>());
|
||||||
}
|
}
|
||||||
|
|
@ -213,6 +230,17 @@ public class RefHanger<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addDataList(List<GenomeLoc> positions, List<List<T>> dataByPos) {
|
||||||
|
assert (positions.size() == dataByPos.size());
|
||||||
|
|
||||||
|
for (int i = 0; i < positions.size(); i++) {
|
||||||
|
GenomeLoc pos = positions.get(i);
|
||||||
|
for ( T datum : dataByPos.get(i) ) {
|
||||||
|
expandingPut1(pos, datum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void expandingPut1(final GenomeLoc loc, T datum) {
|
public void expandingPut1(final GenomeLoc loc, T datum) {
|
||||||
ensurePos(loc);
|
ensurePos(loc);
|
||||||
extendData(loc, datum);
|
extendData(loc, datum);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue