Displaying differences for changeset
 
display as  

src/java/bin/ages/ages-static.zip

 

src/java/m/oms/ages/V1_0.java

@@ -22,11 +22,11 @@
 import ngmf.util.cosu.luca.of.NS;
 import ngmf.util.cosu.luca.of.RMSE;
 import ngmf.util.cosu.luca.of.TRMSE;
+import ngmf.util.cosu.luca.of.NS2LOG;
 import oms.utils.Utils;
 import oms.utils.Utils.PBIAS;
-import oms.utils.Utils.NSLOG;
 import oms.utils.Utils.NSLOG1P;
-import oms.utils.Utils.NS2LOGOP;
+import oms.utils.Utils.NSLOG2;
 import oms3.ObjectiveFunction;
 
 /**
@@ -59,9 +59,9 @@
     static {
         OF.put("kge", new KGE());
         OF.put("ns", new NS());
-        OF.put("nslog", new NSLOG());
+        OF.put("nslog", new NS2LOG());
         OF.put("nslog1p", new NSLOG1P());
-        OF.put("nslogop", new NS2LOGOP());
+        OF.put("nslog2", new NSLOG2());
         OF.put("rmse", new RMSE());
         OF.put("trmse", new TRMSE());
         OF.put("pbias", new PBIAS());

src/java/oms/utils/Utils.java

@@ -69,89 +69,6 @@
     /**
      *
      */
-    public static class NSLOG implements ObjectiveFunction {
-
-        @Override
-        public double calculate(double[] obs, double[] sim, double missing) {
-            int pre_size = sim.length;
-            int val_size = obs.length;
-            int steps = 0;
-            double sum_log_pd = 0;
-            double sum_log_vd = 0;
-
-            /**
-             * checking if both data arrays have the same number of elements
-             */
-            if (pre_size != val_size) {
-                return missing;
-            } else {
-                steps = pre_size;
-            }
-
-            /**
-             * calculating logarithmic values of both data sets. Sets 0 if data
-             * is 0
-             */
-            double[] log_preData = new double[pre_size];
-            double[] log_valData = new double[val_size];
-
-            for (int i = 0; i < steps; i++) {
-                if (sim[i] >= 0 && obs[i] >= 0) {
-
-                    if (sim[i] == 0) {
-                        log_preData[i] = 0;
-                    } else {
-                        log_preData[i] = Math.log(sim[i]);
-                    }
-
-                    if (obs[i] == 0) {
-                        log_valData[i] = 0;
-                    } else {
-                        log_valData[i] = Math.log(obs[i]);
-                    }
-                }
-            }
-
-            /**
-             * summing up both data sets
-             */
-            for (int i = 0; i < log_valData.length; i++) {
-                sum_log_pd += log_preData[i];
-                sum_log_vd += log_valData[i];
-            }
-
-            /**
-             * calculating mean values for both data sets
-             */
-            double mean_log_pd = sum_log_pd / log_valData.length;
-            double mean_log_vd = sum_log_vd / log_valData.length;
-
-            /**
-             * calculating mean pow deviations
-             */
-            double pd_log_vd = 0;
-            double vd_log_mean = 0;
-            for (int i = 0; i < log_valData.length; i++) {
-                pd_log_vd = pd_log_vd + (Math.pow(Math.abs(log_valData[i] - log_preData[i]), 2));
-                vd_log_mean = vd_log_mean + (Math.pow(Math.abs(log_valData[i] - mean_log_vd), 2));
-            }
-
-            /**
-             * calculating efficiency after Nash & Sutcliffe (1970)
-             */
-            double log_efficiency = 1 - (pd_log_vd / vd_log_mean);
-            return log_efficiency;
-        }
-
-        @Override
-        public boolean positiveDirection() {
-            return true;
-        }
-    }
-
-    /**
-     *
-     */
     public static class NSLOG1P implements ObjectiveFunction {
 
         @Override
@@ -214,7 +131,7 @@
     /**
      *
      */
-    public static class NS2LOGOP implements ObjectiveFunction {
+    public static class NSLOG2 implements ObjectiveFunction {
 
         @Override
         public double calculate(double m[], double s[], double missing) {
@@ -237,7 +154,11 @@
                     var += Math.pow(Math.abs(Math.log(m[i]) - avg), pow);
                 }
             }
-            return 1.0 - (rsme / var);
+            double result = 1.0 - (rsme / var);
+            if (Double.isNaN(result)) {
+                result = 0;
+            }
+            return result;
         }
 
         @Override