use of org.gephi.graph.api.Interval in project gephi by gephi.
the class StatisticsControllerImpl method executeDynamic.
private void executeDynamic(DynamicStatistics statistics, DynamicLongTask dynamicLongTask) {
GraphController graphController = Lookup.getDefault().lookup(GraphController.class);
GraphModel graphModel = graphController.getGraphModel();
double window = statistics.getWindow();
double tick = statistics.getTick();
GraphView currentView = graphModel.getVisibleView();
Interval bounds = statistics.getBounds();
if (bounds == null) {
if (currentView.isMainView()) {
bounds = graphModel.getTimeBounds();
} else {
bounds = currentView.getTimeInterval();
}
statistics.setBounds(bounds);
}
if (dynamicLongTask != null) {
//Count
int c = (int) ((bounds.getHigh() - window - bounds.getLow()) / tick);
dynamicLongTask.start(c);
}
//Init
statistics.execute(graphModel);
//Loop
for (double low = bounds.getLow(); low <= bounds.getHigh() - window; low += tick) {
double high = low + window;
Graph graph = graphModel.getGraphVisible();
graph.writeLock();
try {
GraphView view = graphModel.createView();
Subgraph g = graphModel.getGraph(view);
TimeIndex<Node> nodeIndex = graphModel.getNodeTimeIndex(currentView);
if (Double.isInfinite(nodeIndex.getMinTimestamp()) && Double.isInfinite(nodeIndex.getMaxTimestamp())) {
for (Node node : graph.getNodes()) {
g.addNode(node);
}
} else {
for (Node node : nodeIndex.get(new Interval(low, high))) {
g.addNode(node);
}
}
TimeIndex<Edge> edgeIndex = graphModel.getEdgeTimeIndex(currentView);
if (Double.isInfinite(edgeIndex.getMinTimestamp()) && Double.isInfinite(edgeIndex.getMaxTimestamp())) {
for (Edge edge : graph.getEdges()) {
if (g.contains(edge.getSource()) && g.contains(edge.getTarget())) {
g.addEdge(edge);
}
}
} else {
for (Edge edge : edgeIndex.get(new Interval(low, high))) {
if (g.contains(edge.getSource()) && g.contains(edge.getTarget())) {
g.addEdge(edge);
}
}
}
statistics.loop(g.getView(), new Interval(low, high));
} finally {
graph.writeUnlock();
}
//Cancelled?
if (dynamicLongTask != null && dynamicLongTask.isCancelled()) {
return;
} else if (dynamicLongTask != null) {
dynamicLongTask.progress();
}
}
statistics.end();
model.addReport(statistics);
}
use of org.gephi.graph.api.Interval in project gephi by gephi.
the class IntervalMapSparklinesGraphicsComponentProvider method getSparklinesXAndYNumbers.
@Override
public Number[][] getSparklinesXAndYNumbers(Object value) {
IntervalMap intervalMap = (IntervalMap) value;
ArrayList<Number> xValues = new ArrayList<>();
ArrayList<Number> yValues = new ArrayList<>();
if (intervalMap == null) {
return new Number[2][0];
}
Interval[] intervals = intervalMap.toKeysArray();
Object[] values = intervalMap.toValuesArray();
Number n;
for (int i = 0; i < intervals.length; i++) {
n = (Number) values[i];
if (n != null) {
xValues.add(intervals[i].getLow());
yValues.add(n);
}
}
return new Number[][] { xValues.toArray(new Number[0]), yValues.toArray(new Number[0]) };
}
use of org.gephi.graph.api.Interval in project gephi by gephi.
the class ElementDraftImpl method addIntervals.
@Override
public void addIntervals(String intervals) {
if (!container.getTimeRepresentation().equals(TimeRepresentation.INTERVAL)) {
String message = NbBundle.getMessage(ElementDraftImpl.class, "ElementDraftException_NotIntervalRepresentation", id);
container.getReport().logIssue(new Issue(message, Issue.Level.SEVERE));
return;
}
IntervalSet s = (IntervalSet) AttributeUtils.parse(intervals, IntervalSet.class);
if (timeSet == null) {
timeSet = s;
} else {
for (Interval i : s.toArray()) {
timeSet.add(i);
}
}
}
use of org.gephi.graph.api.Interval in project gephi by gephi.
the class ElementDraftImpl method addInterval.
@Override
public void addInterval(double intervalStart, double intervalEnd) {
if (!container.getTimeRepresentation().equals(TimeRepresentation.INTERVAL)) {
String message = NbBundle.getMessage(ElementDraftImpl.class, "ElementDraftException_NotIntervalRepresentation", id);
container.getReport().logIssue(new Issue(message, Issue.Level.SEVERE));
return;
}
try {
Interval interval = new Interval(intervalStart, intervalEnd);
if (timeSet == null) {
timeSet = new IntervalSet();
}
timeSet.add(interval);
} catch (Exception e) {
String interval = "[" + intervalStart + "," + intervalEnd + "]";
String message = NbBundle.getMessage(ElementDraftImpl.class, "ElementDraftException_IntervalSetError", interval, id, e.getMessage());
container.getReport().logIssue(new Issue(message, Issue.Level.SEVERE));
}
}
use of org.gephi.graph.api.Interval in project gephi-plugins-bootcamp by gephi.
the class ConvertColumnToDynamic method execute.
@Override
public void execute(Table table, Column column) {
Class dynamicType = AttributeUtils.getIntervalMapType(column.getTypeClass());
AttributeColumnsController ac = Lookup.getDefault().lookup(AttributeColumnsController.class);
Element[] rows = ac.getTableAttributeRows(table);
Object[] values = new Object[rows.length];
Interval interval = new Interval(Double.parseDouble(start), Double.parseDouble(end));
for (int i = 0; i < values.length; i++) {
try {
IntervalMap val = (IntervalMap) dynamicType.newInstance();
val.put(interval, rows[i].getAttribute(column));
} catch (Exception e) {
}
}
table.removeColumn(column);
Column dynamicColumn = table.addColumn(column.getId(), column.getTitle(), dynamicType, null);
for (int i = 0; i < values.length; i++) {
rows[i].setAttribute(dynamicColumn, values[i]);
}
}
Aggregations