use of jebl.evolution.graphs.Node in project beast-mcmc by beast-dev.
the class TempestPanel method treeSelectionChanged.
private void treeSelectionChanged() {
Set<Node> selectedTips = treePanel.getTreeViewer().getSelectedTips();
frame.getCopyAction().setEnabled(selectedTips != null && selectedTips.size() > 0);
selectedPoints = new HashSet<Integer>();
for (Node node : selectedTips) {
selectedPoints.add(pointMap.get(node));
}
if (rootToTipPlot != null) {
rootToTipPlot.setSelectedPoints(selectedPoints);
}
if (residualPlot != null) {
residualPlot.setSelectedPoints(selectedPoints);
}
if (SHOW_NODE_DENSITY && nodeDensityPlot != null) {
nodeDensityPlot.setSelectedPoints(selectedPoints);
}
selectMRCA();
}
use of jebl.evolution.graphs.Node in project beast-mcmc by beast-dev.
the class TreeGeoJSONGenerator method traverseTree.
private GeoPoint traverseTree(RootedTree tree, Node node) {
GeoPoint point = new GeoPoint();
point.time = tree.getHeight(node);
point.location = (String) node.getAttribute("location");
point.host = (String) node.getAttribute("host");
point.longitude = locationMap.get(point.location).getLongitude();
point.latitude = locationMap.get(point.location).getLatitude();
if (tree.isExternal(node)) {
point.label = tree.getTaxon(node).getName();
point.probability = 1;
} else {
point.label = "";
point.probability = (Double) node.getAttribute("posterior");
for (Node child : tree.getChildren(node)) {
GeoPoint point1 = traverseTree(tree, child);
GeoLine line = new GeoLine();
line.label = "";
line.time0 = point.time;
line.time1 = point1.time;
line.location0 = point.location;
line.location1 = point1.location;
line.host0 = point.host;
line.host1 = point1.host;
line.longitude0 = point.longitude;
line.longitude1 = point1.longitude;
line.latitude0 = point.latitude;
line.latitude1 = point1.latitude;
lines.add(line);
}
}
points.add(point);
return point;
}
use of jebl.evolution.graphs.Node in project beast-mcmc by beast-dev.
the class LineageCountThroughTime method getLTT.
public static Variate[] getLTT(String treeFile, double minTime, double maxTime, int binCount, // number of trees to skip
int skip) throws IOException, ImportException {
double delta = (maxTime - minTime) / (binCount - 1);
BufferedReader reader = new BufferedReader(new FileReader(treeFile));
String line = reader.readLine();
TreeImporter importer;
if (line.toUpperCase().startsWith("#NEXUS")) {
importer = new NexusImporter(reader);
} else {
importer = new NewickImporter(reader, false);
}
int state = 0;
while (importer.hasTree() && state < skip) {
importer.importNextTree();
state += 1;
}
// the age of the end of this group
List<double[]> branchingTimes = new ArrayList<double[]>();
state = 0;
while (importer.hasTree()) {
RootedTree tree = (RootedTree) importer.importNextTree();
double[] bt = new double[tree.getInternalNodes().size()];
int i = 0;
for (Node node : tree.getInternalNodes()) {
bt[i] = tree.getHeight(node);
i++;
}
Arrays.sort(bt);
branchingTimes.add(bt);
state += 1;
}
Variate[] bins = new Variate[binCount];
double height = 0;
double n = branchingTimes.get(0).length;
for (int k = 0; k < binCount; k++) {
bins[k] = new Variate.D();
if (height >= 0.0 && height <= maxTime) {
for (state = 0; state < branchingTimes.size(); state++) {
int index = 0;
while (index < branchingTimes.get(state).length && branchingTimes.get(state)[index] < height) {
index += 1;
}
double lineageCount = 1;
if (index < branchingTimes.get(state).length) {
lineageCount = n - index + 1;
}
bins[k].add(lineageCount);
}
}
height += delta;
}
Variate xData = new Variate.D();
Variate yDataMean = new Variate.D();
Variate yDataMedian = new Variate.D();
Variate yDataUpper = new Variate.D();
Variate yDataLower = new Variate.D();
double t = minTime;
for (Variate bin : bins) {
xData.add(t);
if (bin.getCount() > 0) {
yDataMean.add(bin.getMean());
yDataMedian.add(bin.getQuantile(0.5));
yDataLower.add(bin.getQuantile(0.025));
yDataUpper.add(bin.getQuantile(0.975));
} else {
yDataMean.add(Double.NaN);
yDataMedian.add(Double.NaN);
yDataLower.add(Double.NaN);
yDataUpper.add(Double.NaN);
}
t += delta;
}
return new Variate[] { xData, yDataMean };
}
Aggregations