Skip to content

bug: problem with site-based similarity calculation in US 'rank_soils' function #250

Closed
0 of 1 issue completed
@jjmaynard

Description

@jjmaynard

Description

The US SoilID 'rank_soils' function employs Gower’s distance to quantify similarity between a user’s site/soil measurements and SSURGO data for all soil types mapped within a 1000 m radius of the user’s location. It computes two separate scores—one based on site attributes (elevation, slope, depth‑to‑bedrock) and another on soil characteristics (texture, rock fragments, and color by depth)—then combines them into an overall similarity index.

An error in the current calculation of the site-based similarity has been identified. Calculation of similarity with Gower's requires at least two variables. Site-based elevation is automatically extracted from geospatial data. Therefore the user is required to enter either slope or depth to bedrock for the site-based similarity calculation to run.

The current 'rank_soils' function computes a site‑based similarity score, and therefore returns both "data" and "data‑location" scores, even when the user hasn’t provided any site inputs. In these cases, no "data" or "data-location" similarity scores should be returned.

Steps To Reproduce

Create a site in the app or run the 'rank_soils' function without entering any data.

Expected behavior

The App should return a 'Location Score' but no 'Soil Properties Score' or data-location score (scores listed in 'Top Soil Matches')

The 'rank_soils' function should return values for "score_loc" but no values for "score_data" or "score_data_loc".

Here are the expected results for the test point: 41.66272, -72.68237

Example of correct rank_soils return when no user data is entered
{
   "metadata":{
      "location":"us",
      "model":"v2"
   },
   "soilRank":[
      {
         "name":"Branford1",
         "component":"Branford",
         "componentID":25664309,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.439,
         "rank_loc":"2",
         "componentData":"Location data only"
      },
      {
         "name":"Cheshire1",
         "component":"Cheshire",
         "componentID":25664746,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.251,
         "rank_loc":"4",
         "componentData":"Location data only"
      },
      {
         "name":"Ellington",
         "component":"Ellington",
         "componentID":25663920,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"8",
         "componentData":"Location data only"
      },
      {
         "name":"Holyoke",
         "component":"Holyoke",
         "componentID":25664750,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.195,
         "rank_loc":"10",
         "componentData":"Location data only"
      },
      {
         "name":"Ludlow1",
         "component":"Ludlow",
         "componentID":25665635,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"7",
         "componentData":"Location data only"
      },
      {
         "name":"Manchester1",
         "component":"Manchester",
         "componentID":25664305,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"6",
         "componentData":"Location data only"
      },
      {
         "name":"Scarboro",
         "component":"Scarboro",
         "componentID":25665399,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"9",
         "componentData":"Location data only"
      },
      {
         "name":"Scitico",
         "component":"Scitico",
         "componentID":25664899,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.1,
         "rank_loc":"11",
         "componentData":"Location data only"
      },
      {
         "name":"Shaker",
         "component":"Shaker",
         "componentID":25664900,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.087,
         "rank_loc":"12",
         "componentData":"Location data only"
      },
      {
         "name":"Udorthents1",
         "component":"Udorthents",
         "componentID":25664295,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.5,
         "rank_loc":"1",
         "componentData":"Location data only"
      },
      {
         "name":"Wethersfield1",
         "component":"Wethersfield",
         "componentID":25664745,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.377,
         "rank_loc":"3",
         "componentData":"Location data only"
      },
      {
         "name":"Wilbraham1",
         "component":"Wilbraham",
         "componentID":25665633,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.212,
         "rank_loc":"5",
         "componentData":"Location data only"
      },
      {
         "name":"Branford2",
         "component":"Branford",
         "componentID":25664372,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.439,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Branford3",
         "component":"Branford",
         "componentID":25664315,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.439,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Cheshire2",
         "component":"Cheshire",
         "componentID":25664854,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.251,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Cheshire3",
         "component":"Cheshire",
         "componentID":25664860,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.251,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Ludlow2",
         "component":"Ludlow",
         "componentID":25664415,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Ludlow3",
         "component":"Ludlow",
         "componentID":25664423,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Ludlow4",
         "component":"Ludlow",
         "componentID":25664043,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Manchester2",
         "component":"Manchester",
         "componentID":25664369,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Udorthents2",
         "component":"Udorthents",
         "componentID":25664302,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.5,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Udorthents3",
         "component":"Udorthents",
         "componentID":25664039,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.5,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Wethersfield2",
         "component":"Wethersfield",
         "componentID":25664856,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Wethersfield3",
         "component":"Wethersfield",
         "componentID":25664862,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Wethersfield4",
         "component":"Wethersfield",
         "componentID":25664419,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Wilbraham2",
         "component":"Wilbraham",
         "componentID":25665632,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.212,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      },
      {
         "name":"Wilbraham3",
         "component":"Wilbraham",
         "componentID":25664421,
         "score_data_loc":"",
         "rank_data_loc":"",
         "score_data":"",
         "rank_data":"",
         "score_loc":0.212,
         "rank_loc":"Not Displayed",
         "componentData":"Location data only"
      }
   ]
}

Actual behavior

The App is currently returning values for "score_data" and "score_data_loc" when no user data has been entered.

Current results for the test point: 41.66272, -72.68237

Current rank_soils return when no user data has been entered
{
   "metadata":{
      "location":"us",
      "model":"v2"
   },
   "soilRank":[
      {
         "name":"Udorthents3",
         "component":"Udorthents",
         "componentID":25664039,
         "score_data_loc":0.499,
         "rank_data_loc":"1",
         "score_data":0.499,
         "rank_data":"1",
         "score_loc":0.5,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Branford3",
         "component":"Branford",
         "componentID":25664315,
         "score_data_loc":0.469,
         "rank_data_loc":"2",
         "score_data":0.499,
         "rank_data":"2",
         "score_loc":0.439,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wethersfield2",
         "component":"Wethersfield",
         "componentID":25664856,
         "score_data_loc":0.438,
         "rank_data_loc":"3",
         "score_data":0.5,
         "rank_data":"3",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Cheshire2",
         "component":"Cheshire",
         "componentID":25664854,
         "score_data_loc":0.375,
         "rank_data_loc":"4",
         "score_data":0.5,
         "rank_data":"4",
         "score_loc":0.251,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wilbraham3",
         "component":"Wilbraham",
         "componentID":25664421,
         "score_data_loc":0.354,
         "rank_data_loc":"5",
         "score_data":0.495,
         "rank_data":"5",
         "score_loc":0.212,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Ludlow2",
         "component":"Ludlow",
         "componentID":25664415,
         "score_data_loc":0.35,
         "rank_data_loc":"6",
         "score_data":0.5,
         "rank_data":"7",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Ellington",
         "component":"Ellington",
         "componentID":25663920,
         "score_data_loc":0.348,
         "rank_data_loc":"7",
         "score_data":0.497,
         "rank_data":"8",
         "score_loc":0.2,
         "rank_loc":"8",
         "componentData":"Site data only"
      },
      {
         "name":"Manchester2",
         "component":"Manchester",
         "componentID":25664369,
         "score_data_loc":0.348,
         "rank_data_loc":"8",
         "score_data":0.496,
         "rank_data":"6",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Scarboro",
         "component":"Scarboro",
         "componentID":25665399,
         "score_data_loc":0.347,
         "rank_data_loc":"9",
         "score_data":0.494,
         "rank_data":"9",
         "score_loc":0.2,
         "rank_loc":"9",
         "componentData":"Site data only"
      },
      {
         "name":"Holyoke",
         "component":"Holyoke",
         "componentID":25664750,
         "score_data_loc":0.346,
         "rank_data_loc":"10",
         "score_data":0.496,
         "rank_data":"10",
         "score_loc":0.195,
         "rank_loc":"10",
         "componentData":"Site data only"
      },
      {
         "name":"Scitico",
         "component":"Scitico",
         "componentID":25664899,
         "score_data_loc":0.298,
         "rank_data_loc":"11",
         "score_data":0.495,
         "rank_data":"11",
         "score_loc":0.1,
         "rank_loc":"11",
         "componentData":"Site data only"
      },
      {
         "name":"Shaker",
         "component":"Shaker",
         "componentID":25664900,
         "score_data_loc":0.291,
         "rank_data_loc":"12",
         "score_data":0.495,
         "rank_data":"12",
         "score_loc":0.087,
         "rank_loc":"12",
         "componentData":"Site data only"
      },
      {
         "name":"Udorthents1",
         "component":"Udorthents",
         "componentID":25664295,
         "score_data_loc":0.498,
         "rank_data_loc":"Not Displayed",
         "score_data":0.495,
         "rank_data":"Not Displayed",
         "score_loc":0.5,
         "rank_loc":"1",
         "componentData":"Site data only"
      },
      {
         "name":"Udorthents2",
         "component":"Udorthents",
         "componentID":25664302,
         "score_data_loc":0.493,
         "rank_data_loc":"Not Displayed",
         "score_data":0.486,
         "rank_data":"Not Displayed",
         "score_loc":0.5,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Branford1",
         "component":"Branford",
         "componentID":25664309,
         "score_data_loc":0.467,
         "rank_data_loc":"Not Displayed",
         "score_data":0.495,
         "rank_data":"Not Displayed",
         "score_loc":0.439,
         "rank_loc":"2",
         "componentData":"Site data only"
      },
      {
         "name":"Branford2",
         "component":"Branford",
         "componentID":25664372,
         "score_data_loc":0.466,
         "rank_data_loc":"Not Displayed",
         "score_data":0.493,
         "rank_data":"Not Displayed",
         "score_loc":0.439,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wethersfield4",
         "component":"Wethersfield",
         "componentID":25664419,
         "score_data_loc":0.438,
         "rank_data_loc":"Not Displayed",
         "score_data":0.5,
         "rank_data":"Not Displayed",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wethersfield1",
         "component":"Wethersfield",
         "componentID":25664745,
         "score_data_loc":0.437,
         "rank_data_loc":"Not Displayed",
         "score_data":0.496,
         "rank_data":"Not Displayed",
         "score_loc":0.377,
         "rank_loc":"3",
         "componentData":"Site data only"
      },
      {
         "name":"Wethersfield3",
         "component":"Wethersfield",
         "componentID":25664862,
         "score_data_loc":0.435,
         "rank_data_loc":"Not Displayed",
         "score_data":0.493,
         "rank_data":"Not Displayed",
         "score_loc":0.377,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Cheshire1",
         "component":"Cheshire",
         "componentID":25664746,
         "score_data_loc":0.374,
         "rank_data_loc":"Not Displayed",
         "score_data":0.496,
         "rank_data":"Not Displayed",
         "score_loc":0.251,
         "rank_loc":"4",
         "componentData":"Site data only"
      },
      {
         "name":"Cheshire3",
         "component":"Cheshire",
         "componentID":25664860,
         "score_data_loc":0.372,
         "rank_data_loc":"Not Displayed",
         "score_data":0.493,
         "rank_data":"Not Displayed",
         "score_loc":0.251,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wilbraham2",
         "component":"Wilbraham",
         "componentID":25665632,
         "score_data_loc":0.353,
         "rank_data_loc":"Not Displayed",
         "score_data":0.495,
         "rank_data":"Not Displayed",
         "score_loc":0.212,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Wilbraham1",
         "component":"Wilbraham",
         "componentID":25665633,
         "score_data_loc":0.353,
         "rank_data_loc":"Not Displayed",
         "score_data":0.494,
         "rank_data":"Not Displayed",
         "score_loc":0.212,
         "rank_loc":"5",
         "componentData":"Site data only"
      },
      {
         "name":"Ludlow3",
         "component":"Ludlow",
         "componentID":25664423,
         "score_data_loc":0.349,
         "rank_data_loc":"Not Displayed",
         "score_data":0.499,
         "rank_data":"Not Displayed",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Ludlow4",
         "component":"Ludlow",
         "componentID":25664043,
         "score_data_loc":0.349,
         "rank_data_loc":"Not Displayed",
         "score_data":0.498,
         "rank_data":"Not Displayed",
         "score_loc":0.2,
         "rank_loc":"Not Displayed",
         "componentData":"Site data only"
      },
      {
         "name":"Ludlow1",
         "component":"Ludlow",
         "componentID":25665635,
         "score_data_loc":0.348,
         "rank_data_loc":"Not Displayed",
         "score_data":0.496,
         "rank_data":"Not Displayed",
         "score_loc":0.2,
         "rank_loc":"7",
         "componentData":"Site data only"
      },
      {
         "name":"Manchester1",
         "component":"Manchester",
         "componentID":25664305,
         "score_data_loc":0.348,
         "rank_data_loc":"Not Displayed",
         "score_data":0.495,
         "rank_data":"Not Displayed",
         "score_loc":0.2,
         "rank_loc":"6",
         "componentData":"Site data only"
      }
   ]
}

Additional context

The App is currently extracting location-based elevation data. This data, 'pElev', should be pushed to the API during the 'rank_soils' call. If 'pElev' is missing, rank_soils will attempt to acquire elevation data via an API call to 'https://epqs.nationalmap.gov/v1/json'.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions