Mercurial > dive4elements > river
changeset 9363:0274c7444b2d
Fixed: missing commit
Outliers in fixation calculation are now shown within the other 'B' event themes and get a separate symbol (triangle).
Removed old outliers theme.
Also consider showpoints property.
Also consider pointsize property.
author | gernotbelger |
---|---|
date | Thu, 02 Aug 2018 09:59:48 +0200 |
parents | 392745cccede |
children | 0124d67ce5ab |
files | artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixCalculation.java |
diffstat | 1 files changed, 22 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixCalculation.java Wed Aug 01 18:40:57 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixCalculation.java Thu Aug 02 09:59:48 2018 +0200 @@ -42,31 +42,22 @@ protected static class FitResult { - protected Parameters parameters; - protected KMIndex<QWD[]> referenced; - protected KMIndex<QWD[]> outliers; + private final Parameters parameters; + private final KMIndex<QWD[]> fixings; - public FitResult() { - } - - public FitResult(final Parameters parameters, final KMIndex<QWD[]> referenced, final KMIndex<QWD[]> outliers) { + public FitResult(final Parameters parameters, final KMIndex<QWD[]> fixings) { this.parameters = parameters; - this.referenced = referenced; - this.outliers = outliers; + this.fixings = fixings; } public Parameters getParameters() { return this.parameters; } - public KMIndex<QWD[]> getReferenced() { - return this.referenced; + public KMIndex<QWD[]> getFixings() { + return this.fixings; } - - public KMIndex<QWD[]> getOutliers() { - return this.outliers; - } - } // class FitResult + } /** * Helper class to bundle the meta information of a column @@ -270,13 +261,13 @@ final Fitting.QWDFactory qwdFactory = new Fitting.QWDFactory() { @Override - public QWD create(final double q, final double w, boolean isOutlier) { + public QWD create(final double q, final double w, double deltaW, boolean isOutlier) { // Check all the event columns for close match // and take the description and the date from meta. for (int i = 0; i < qs.length; ++i) { if (Math.abs(qs[i] - q) < EPSILON && Math.abs(ws[i] - w) < EPSILON) { final Column column = eventColumns.get(i); - return new QWD(qs[i], ws[i], column.getDescription(), column.getDate(), interpolated[i], 0d, column.getId(), isOutlier); // Use database id here + return new QWD(qs[i], ws[i], column.getDescription(), column.getDate(), interpolated[i], deltaW, column.getId(), isOutlier); // Use database id here } } log.warn("cannot find column for (" + q + ", " + w + ")"); @@ -284,8 +275,6 @@ } }; - final Fitting fitting = new Fitting(func, qwdFactory, this.preprocessing); - final String[] parameterNames = func.getParameterNames(); final Parameters results = new Parameters(StringUtils.join(STANDARD_COLUMNS, parameterNames)); @@ -298,8 +287,7 @@ log.debug("number of kms: " + kms.length); } - final KMIndex<QWD[]> outliers = new KMIndex<>(); - final KMIndex<QWD[]> referenced = new KMIndex<>(kms.length); + final KMIndex<QWD[]> fixings = new KMIndex<>(); final int kmIndex = results.columnIndex("km"); final int chiSqrIndex = results.columnIndex("chi_sqr"); @@ -309,30 +297,22 @@ int numFailed = 0; - for (final double km2 : kms) { - final double km = km2; + for (final double km : kms) { // Fill Qs and Ws from event columns. - for (int j = 0; j < ws.length; ++j) { + for (int j = 0; j < ws.length; ++j) interpolated[j] = !eventColumns.get(j).getQW(km, qs, ws, j); - } - fitting.reset(); - - if (!fitting.fit(qs, ws)) { + final Fitting fitting = Fitting.fit(func, qwdFactory, this.preprocessing, qs, ws); + if (fitting == null) { log.debug("Fitting for km: " + km + " failed"); ++numFailed; addProblem(km, "fix.fitting.failed"); continue; } - - final QWD[] refs = fitting.referencedToArray(); - - referenced.add(km, refs); - - if (fitting.hasOutliers()) { - outliers.add(km, fitting.outliersToArray()); - } + + final QWD[] fixingsArray = fitting.getFixingsArray(); + fixings.add(km, fixingsArray); final int row = results.newRow(); final double[] values = fitting.getParameters(); @@ -358,10 +338,9 @@ results.removeNaNs(); } - outliers.sort(); - referenced.sort(); + fixings.sort(); - return new FitResult(results, referenced, outliers); + return new FitResult(results, fixings); } public CalculationResult calculate() { @@ -387,8 +366,8 @@ final Object o = result.getData(); if (o instanceof FixResult) { final FixResult fr = (FixResult) o; - fr.makeReferenceEventsDatesUnique(); - fr.remapReferenceIndicesToRank(); + fr.makeEventsDatesUnique(); + fr.remapEventIndicesToRank(); } } @@ -396,5 +375,4 @@ } protected abstract CalculationResult innerCalculate(FixingsOverview overview, Function function); -} -// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : +} \ No newline at end of file