Skip to content

Thread wizard shows 18 of 175 model configurations: the model tree query accepts only sdm#Model #98

Description

@mosoriob

Question

Which software types belong in the model tree? Then apply that rule to the three queries that
use modelcatalog_software.

Why this blocks the SOW

At TACC the thread wizard cannot reach one single runnable model.

  • TACC holds 175 leaf model configurations. The Models step shows 18. It hides 157.
  • 61 of the 175 have every required input annotated in CKAN, so a thread can bind data to
    them. 0 of those 61 are visible.
  • The Height Above Nearest Drainage (HAND) model has 44 configurations at TACC. All 44 are
    hidden.

This blocks #92, which needs a model with
real data. It also blocks #77: TACC must
meet a Models step that works.

Root cause

Three queries filter the software table on one exact type:

where: { type: { _eq: "https://w3id.org/okn/o/sdm#Model" } }
  • GetModelTreeWithRegionssrc/graphql/generated/modeling.ts:1396 — the wizard Models step
  • GetModelTreesrc/graphql/queries/model-catalog.graphql:7/regions/:id/models
  • GetModelFamiliessrc/graphql/queries/model-catalog.graphql:169 — model registration

sdm#Model is the generic type. The catalog also uses more exact subtypes. At TACC:

type software leaf configurations
sdm#Model 27 18
sdm#EmpiricalModel 7 53
sdm#Theory-GuidedModel 6 72
sdm#CoupledModel 4 21
sd#Software 8 8
sdm#TheoryAndEmpiricalModel 1 2
sdm#TheoryBasedModel 1 1
sdm#DataAssimilation 1 0

The legacy Lit UI reads these types the opposite way. ui/src/model-catalog-api/util.ts:38
drops sdm#Model to find the exact subtype, and util.ts:15-30 maps each subtype to a
display name. So Lit treats the subtypes as models. The React query treats them as not-models.

/models is not affected. ModelsBrowsePage uses SearchModelConfigurations, which reads the
configuration table and applies no type filter. That is why
#76 saw /models render correctly.

Evidence

Measured live in the running app, under a real Tapis token, on the dev cluster. The same
modelcatalog_software traversal, with the predicate changed:

predicate leaf rows HAND rows
type _eq sdm#Model (today) 19 0
no type predicate 174 44
type _neq sd#Software 169 44

In the wizard itself, a search for HAND in the Models step returns
"No models match your search."

What to decide

_neq sd#Software is the obvious candidate, but confirm it:

  1. Is sd#Software the only type that must stay out of the model tree? Check what the 8
    sd#Software entries at TACC are.
  2. Should GetModelFamilies use the same rule? It feeds model registration, so today a new
    version cannot be registered under HAND.
  3. RegionModels shows the same tree per region. Same rule, or a different one?

Metadata

Metadata

Assignees

Labels

wayfinder:taskWayfinder ticket: manual work that unblocks a decision

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions