| … | … | @@ -111,15 +111,31 @@ def main(): |
| 111 | 111 | for name, rms, cc, cs, sh in rows: |
| 112 | 112 | print(f"{name:>34} {rms:>8.2f} {cc:>12.3f} {cs:>11.3f} {sh:>9.3f}") |
| 113 | 113 | |
| 114 | | ref_best = max(abs(r[2]) for r in rows[:2]) |
| 115 | | our_best = max(abs(r[2]) for r in rows[2:]) |
| 116 | | print(f"\nreference best |corr concav| {ref_best:.3f} ours {our_best:.3f}") |
| 117 | | if ref_best > 0.15 and our_best < 0.10: |
| 118 | | print("CONFIRMED: the reference follows the field's existing valleys and\n" |
| 119 | | " our path does not. The difference is the unit conversion.") |
| 120 | | elif ref_best < 0.15: |
| 121 | | print("NOT CONFIRMED: the reference does not score high either, so the\n" |
| 122 | | " unit conversion is NOT the explanation. Look elsewhere.") |
| 114 | # THE VERDICT KEYS ON SLOPE, NOT CONCAVITY. |
| 115 | # |
| 116 | # The first version of this keyed on concavity and printed "the unit |
| 117 | # conversion is NOT the explanation" -- while the slope column in the SAME |
| 118 | # table showed 0.559/0.368 for the reference against 0.020 for ours. The |
| 119 | # conclusion was false and the evidence refuting it was already on screen. |
| 120 | # |
| 121 | # Concavity was the wrong question: NEITHER implementation deepens ground |
| 122 | # that is already a valley, so "enhances existing lines" is not what the |
| 123 | # reference does either. What it does is cut HARDER ON STEEPER GROUND, and |
| 124 | # that is what reads as following the terrain. |
| 125 | ref_s = max(abs(r[3]) for r in rows[:2]) |
| 126 | our_s = max(abs(r[3]) for r in rows[2:]) |
| 127 | ref_c = max(abs(r[2]) for r in rows[:2]) |
| 128 | our_c = max(abs(r[2]) for r in rows[2:]) |
| 129 | print(f"\ncorr SLOPE reference {ref_s:.3f} ours {our_s:.3f}" |
| 130 | f" ({ref_s/our_s if our_s else float('inf'):.1f}x)") |
| 131 | print(f"corr CONCAV reference {ref_c:.3f} ours {our_c:.3f}" |
| 132 | " (both ~0 -- neither follows existing valleys)") |
| 133 | if our_s < 0.5 * ref_s: |
| 134 | print("\nREADS AS: ours cuts far more uniformly than the reference. The\n" |
| 135 | " erosion is placed without regard to the terrain under it.") |
| 136 | else: |
| 137 | print("\nREADS AS: ours now follows the terrain's slope comparably to the\n" |
| 138 | " reference.") |
| 123 | 139 | |
| 124 | 140 | |
| 125 | 141 | if __name__ == "__main__": |