@Override public Object calculate(final List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VTable table = (VTable) args.get(0); VString columnName = (VString) args.get(1); VNumberArray range = (VNumberArray) args.get(2); if (range.getData().size() != 2) { throw new IllegalArgumentException("Range array must be of 2 elements"); } VTable result = VTableFactory.tableRangeFilter(table, columnName.getValue(), ValueFactory.newVDouble(range.getData().getDouble(0)), ValueFactory.newVDouble(range.getData().getDouble(1))); return result; }
public Cell2DDatasetFromVNumberArray(VNumberArray data) { this.data = data; this.values = data.getData(); if (data.getSizes().size() == 1) { this.xBoundaries = data.getDimensionDisplay().get(0).getCellBoundaries(); this.yBoundaries = new ArrayDouble(0, 1); this.array2D = new Array2DDouble(new ArrayInt(1, xBoundaries.size() - 1), false, data.getDimensionDisplay().get(0).isReversed()); } else if (data.getSizes().size() == 2) { this.xBoundaries = data.getDimensionDisplay().get(1).getCellBoundaries(); this.yBoundaries = data.getDimensionDisplay().get(0).getCellBoundaries(); this.array2D = new Array2DDouble(data.getSizes(), data.getDimensionDisplay().get(1).isReversed(), data.getDimensionDisplay().get(0).isReversed()); } else { throw new IllegalArgumentException("Array is 3D or more"); this.yCount = yBoundaries.size() - 1; double low = data.getLowerDisplayLimit(); double high = data.getUpperDisplayLimit(); if (values instanceof ListByte) { if (low == high) {
public static Cell1DDataset cell1DDatasetsFromVNumberArray(VNumberArray data) { return Cell1DDatasets.datasetFrom(data.getData(), data.getDimensionDisplay().get(0).getCellBoundaries(), toRange(data)); } }
@Override public Object calculate(final List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray array = (VNumberArray) args.get(0); if (array.getSizes().size() != args.size() - 1) { throw new IllegalArgumentException("Dimension of the array must match the number of ListNumberProvider"); } List<ArrayDimensionDisplay> dimDisplay = new ArrayList<>(); for (int i = 1; i < args.size(); i++) { ListNumberProvider numberGenerator = (ListNumberProvider) args.get(i); dimDisplay.add(ValueFactory.newDisplay(numberGenerator.createListNumber(array.getSizes().getInt(i-1) + 1), "")); } return ValueFactory.newVNumberArray(array.getData(), array.getSizes(), dimDisplay, array, array, array); }
@Override public Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray numberArray = (VNumberArray) args.get(0); double min = numberArray.getDimensionDisplay().get(0).getCellBoundaries().getDouble(0); double max = numberArray.getDimensionDisplay().get(0).getCellBoundaries().getDouble(numberArray.getSizes().getInt(0)); return newVNumberArray( new ArrayDouble(min, max), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); }
Statistics stats = StatisticsUtil.statisticsOf(numberArray.getData()); int nBins = 100; Range aggregatedRange = Ranges.aggregateRange(stats.getRange(), previousXRange); IteratorNumber newValues = numberArray.getData().iterator(); double minValueRange = xRange.getMinimum(); double maxValueRange = xRange.getMaximum(); String unit = numberArray.getUnits(); int[] binData = new int[nBins]; double maxCount = 0;
return null; if (array.getSizes().size() != 1) { throw new IllegalArgumentException("Only 1D array supported for DFT"); List<ListNumber> fft = ListMath.dft(array.getData(), new ArrayDouble(new double[array.getData().size()])); final ListNumber real = fft.get(0); final ListNumber imaginary = fft.get(1);
ArrayDimensionDisplay xDisplay = data.getDimensionDisplay().get(1); int leftIndex = (int) renderer.getXIndexSelectionRange().getMinimum(); int rightIndex = (int) renderer.getXIndexSelectionRange().getMaximum(); final int xSize = rightIndex - leftIndex + 1; if (xDisplay.isReversed()) { leftIndex = data.getSizes().getInt(1) - 1 - leftIndex; rightIndex = data.getSizes().getInt(1) - 1 - rightIndex; ArrayDimensionDisplay yDisplay = data.getDimensionDisplay().get(0); int bottomIndex = (int) renderer.getYIndexSelectionRange().getMinimum(); int topIndex = (int) renderer.getYIndexSelectionRange().getMaximum(); if (yDisplay.isReversed()) { bottomIndex = data.getSizes().getInt(0) - 1 - bottomIndex; topIndex = data.getSizes().getInt(0) - 1 - topIndex;
@Override public VTable readValue() { VNumberArray xValues = xVDoubleArray.getFunction().readValue(); VNumberArray yValues = yVDoubleArray.getFunction().readValue(); if (xValues == null || yValues == null) { return null; } return ValueFactory.newVTable(Arrays.<Class<?>>asList(double.class, double.class), Arrays.asList("X", "Y"), Arrays.<Object>asList(new ListDoubleView(xValues.getData()), new ListDoubleView(yValues.getData()))); } }, "data");
@Override public final Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray arg1 = (VNumberArray) args.get(0); VNumberArray arg2 = (VNumberArray) args.get(1); return newVNumberArray( calculate(arg1.getData(), arg2.getData()), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); }
@Override public Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumber value = (VNumber) args.get(0); VNumberArray intervals = (VNumberArray) args.get(1); VStringArray labels = (VStringArray) args.get(2); int index = 0; while (index < intervals.getData().size() && value.getValue().doubleValue() >= intervals.getData().getDouble(index)) { index++; } return newVEnum(index, labels.getData(), value, ValueUtil.latestValidTimeOrNowOf(args)); }
@Override public Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray numberArray = (VNumberArray) args.get(0); VNumber index = (VNumber) args.get(1); int i = index.getValue().intValue(); return newVNumber(numberArray.getData().getDouble(i), numberArray, numberArray, displayNone()); }
@Override public final Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumber arg1 = (VNumber) args.get(0); VNumberArray arg2 = (VNumberArray) args.get(1); return newVNumberArray( calculate(arg1.getValue().doubleValue(), arg2.getData()), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); }
@Override public final Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray arg1 = (VNumberArray) args.get(0); VNumber arg2 = (VNumber) args.get(1); return newVNumberArray( calculate(arg1.getData(), arg2.getValue().doubleValue()), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); }
@Override public Object calculate(List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray numberArray = (VNumberArray) args.get(0); int fromIndex = ((VNumber) args.get(1)).getValue().intValue(); int toIndex = ((VNumber) args.get(2)).getValue().intValue(); return newVNumberArray( ListMath.limit(numberArray.getData(), fromIndex, toIndex), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); }
@Override public Object calculate(final List<Object> args) { if (NullUtils.containsNull(args)) { return null; } VNumberArray arg1 = (VNumberArray) args.get(0); VNumber arg2 = (VNumber) args.get(1); VNumber arg3 = (VNumber) args.get(2); return newVNumberArray( ListMath.rescale(arg1.getData(), arg2.getValue().doubleValue(), arg3.getValue().doubleValue()), ValueUtil.highestSeverityOf(args, false), ValueUtil.latestValidTimeOrNowOf(args), displayNone()); } }
@Override public VTable readValue() { VNumberArray values = yArray.getFunction().readValue(); VNumber offset = xInitialOffset.getFunction().readValue(); VNumber increment = xIncrementSize.getFunction().readValue(); if (values == null || offset == null || increment == null) { return null; } return ValueFactory.newVTable(Arrays.<Class<?>>asList(double.class, double.class), Arrays.asList("X", "Y"), Arrays.<Object>asList(ListNumbers.linearList(offset.getValue().doubleValue(), increment.getValue().doubleValue(), values.getData().size()), new ListDoubleView(values.getData()))); } }, "data");
public void pvChanged(PVReaderEvent<VNumberArray> event) { if (event.isValueChanged()) { // New value VNumberArray value = event.getPvReader().getValue(); ListNumber data = value.getData(); for (int i = 0; i < data.size(); i++) { // Get the double representation of the value, // converting it if needed double iValue = data.getDouble(i); System.out.println(iValue); } } } })
static JsonObject toJson(VNumberArray vNumberArray) { return new JsonVTypeBuilder() .addType(vNumberArray) .addObject("value", vNumberArray.getData()) .addAlarm(vNumberArray) .addTime(vNumberArray) .addDisplay(vNumberArray) .build(); }