DHI / DHI/modelskill

Selective/lazy from_res1d ingestion by quantity, for calibration loops

Open
#679 4 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
56
Forks
9
Avg merge
57m
Merged PRs (30d)
3

Description

## Summary

`from_res1d` takes about 18-25 seconds on a moderately sized network file. The documented `nodes=[...], reaches=[]` filtering cuts that to around 5 seconds, but the remaining time is still mostly spent building topology rather than reading data.

In a calibration loop that rebuilds the network for every trial, this dominates the runtime — matching itself is already fast in comparison.

## Request

Support selective or lazy ingestion by quantity, on top of the existing node/reach filtering, so calibration workflows can build only what a given trial needs.

## Relevant entry points

- `Network.from_res1d` (`src/modelskill/network.py:351-447`)
- `Network._load_res1d_network` (`network.py:448-487`)

Found by a test user evaluating the network functionality ahead of a 1.4.0 release.

Contributor guide

Open the contributing guide

Research direction

Start with Network.from_res1d in src/modelskill/network.py:351-447 and Network._load_res1d_network in network.py:448-487. Trace how the existing nodes and reaches filters avoid work, then determine how quantity selection or lazy ingestion should compose with them. Done means calibration trials can load only the quantities they need without breaking the current filtering behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.