planet-client-python icon indicating copy to clipboard operation
planet-client-python copied to clipboard

pre-validate band math tool entries

Open jreiberkyle opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe.

Creating an order with invalid band math entries results in the order being run for several minutes before the order finally fails. There is no pre-validation.

Describe the solution you'd like

Pre-validate band math entries before an order is run. This would likely happen in the band_math tool itself.

Describe alternatives you've considered

Additional context Here's an order request with an invalid band math entry for b2.

{
  "name": "name",
  "products": [
    {
      "item_ids": [
        "20230322_161237_04_24ca"
      ],
      "item_type": "PSScene",
      "product_bundle": "analytic_udm2"
    }
  ],
  "tools": [
    {
      "bandmath": {
        "b1": "2*b1",
        "b2": "3*before",
        "pixel_type": "Auto"
      }
    }
  ]
}

jreiberkyle avatar Mar 22 '23 19:03 jreiberkyle

pre-validation could occur on a test 1x1xnum_bands numpy array, using regex to replace e.g. b1 with test_array[:,:,0] then run the expression and look for errors. note: requires numpy, which is currently not a dependency

jreiberkyle avatar Mar 22 '23 19:03 jreiberkyle

for now, hold off on this to discuss a broader strategy for pre-validation of various tools although this is probably the tool that would benefit from pre-validation the most

jreiberkyle avatar Mar 22 '23 20:03 jreiberkyle

This still seems reasonable enough to do using AST parsing

tbarsballe avatar Aug 22 '24 19:08 tbarsballe