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" } }
GetModelTreeWithRegions — src/graphql/generated/modeling.ts:1396 — the wizard Models step
GetModelTree — src/graphql/queries/model-catalog.graphql:7 — /regions/:id/models
GetModelFamilies — src/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:
- Is
sd#Software the only type that must stay out of the model tree? Check what the 8
sd#Software entries at TACC are.
- Should
GetModelFamilies use the same rule? It feeds model registration, so today a new
version cannot be registered under HAND.
RegionModels shows the same tree per region. Same rule, or a different one?
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.
them. 0 of those 61 are visible.
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:
GetModelTreeWithRegions—src/graphql/generated/modeling.ts:1396— the wizard Models stepGetModelTree—src/graphql/queries/model-catalog.graphql:7—/regions/:id/modelsGetModelFamilies—src/graphql/queries/model-catalog.graphql:169— model registrationsdm#Modelis the generic type. The catalog also uses more exact subtypes. At TACC:sdm#Modelsdm#EmpiricalModelsdm#Theory-GuidedModelsdm#CoupledModelsd#Softwaresdm#TheoryAndEmpiricalModelsdm#TheoryBasedModelsdm#DataAssimilationThe legacy Lit UI reads these types the opposite way.
ui/src/model-catalog-api/util.ts:38drops
sdm#Modelto find the exact subtype, andutil.ts:15-30maps each subtype to adisplay name. So Lit treats the subtypes as models. The React query treats them as not-models.
/modelsis not affected.ModelsBrowsePageusesSearchModelConfigurations, which reads theconfiguration table and applies no type filter. That is why
#76 saw
/modelsrender correctly.Evidence
Measured live in the running app, under a real Tapis token, on the dev cluster. The same
modelcatalog_softwaretraversal, with the predicate changed:type _eq sdm#Model(today)type _neq sd#SoftwareIn the wizard itself, a search for
HANDin the Models step returns"No models match your search."
What to decide
_neq sd#Softwareis the obvious candidate, but confirm it:sd#Softwarethe only type that must stay out of the model tree? Check what the 8sd#Softwareentries at TACC are.GetModelFamiliesuse the same rule? It feeds model registration, so today a newversion cannot be registered under HAND.
RegionModelsshows the same tree per region. Same rule, or a different one?