SBML import renames colliding user parameters to param_<id>, and the overrides filter then hides them
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start in SBMLImporter where ReservedParamPrefix (param_) is prepended to colliding SBML ids, then read MathOverrides.getFilteredConstantNames() to see why param_-prefixed names are dropped from the overrides table. Use #2043 (which fixed the substring collision but left this rule) as the reference for scope and for tests covering name filtering. Done means genuine user parameters are visible and overridable while preserving the display name where feasible, with a plan for models already saved under param_-prefixed names — note the issue leaves the rename-vs-scope decision open, so confirm direction with maintainers.
Written by the indexing model from the issue text.
Description
Split out of #2043 rather than folded into it, since it is a different cause with a different blast radius.
What happens
SBMLImporter renames an imported parameter to param_<id> when its id collides with a reserved symbol but its value differs — i.e. when the importer has already decided it is not the reserved symbol:
private static final String ReservedParamPrefix = "param_";
...
// if the value is different from the value of the reserved symbol, we consider it to be
// something else and we add ReservedParamPrefix
vcParamName = ReservedParamPrefix + sbmlParamId;
So by construction these are genuine user parameters. They are renamed anyway.
Two costs
The user no longer sees the name they wrote. A parameter the author called _R_ in their SBML shows up in VCell as param__R_. Math symbols should nominally be the same as the biological symbols so the end user is not confused; a rename to dodge a collision trades the user's name away to solve an internal problem.
They cannot be overridden. MathOverrides.getFilteredConstantNames() drops anything matching startsWith("param__"), so these parameters are silently absent from the math overrides table — the same user-visible symptom as #2043, reached by a different route. #2043 fixed the substring collision and deliberately left this rule alone.
Worth deciding
- Is the rename needed at all? The collision is between an SBML id and a VCell reserved symbol; a scoped or mapped resolution would keep the user's name.
- If some rename is unavoidable, should the overrides filter still hide the result? Hiding a user parameter is the part that reads as a bug regardless of what the name looks like.
- Any change here has to consider models already saved with
param_-prefixed names.
Not urgent
No one has reported it — it was found while diagnosing #2043. Filing so the reasoning is not lost in a code comment.
🤖 Generated with Claude Code
- Dominant language
- Java
- Stars
- 140
- Forks
- 35
- Avg merge
- 11h 28m
- Merged PRs (30d)
- 19
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from virtualcell/vcell
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
virtualcell/vcell#2193 ·
Maintainers usually reply within 1 day
-
Accessibility Requirement Java-based User Interface
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
virtualcell/vcell#2138 ·
Maintainers usually reply within 1 day
-
Accessibility Requirement Java-based
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
virtualcell/vcell#2137 ·
Maintainers usually reply within 1 day
-
Accessibility Requirement User Interface
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
virtualcell/vcell#2135 ·
Maintainers usually reply within 1 day
-
Accessibility Requirement Java-based User Interface
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
virtualcell/vcell#2134 ·
Maintainers usually reply within 1 day
All issues in virtualcell/vcell
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
micronaut-projects/micronaut-redis#844 ·
Maintainers usually reply within 4 days
-
ai-driven-fuzzing bug claude Major
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
linagora/tmail-backend#2862 ·
Maintainers usually reply within 1 day
-
ai-driven-fuzzing bug claude Minor
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
linagora/twake-calendar-side-service#1435 ·
Maintainers usually reply within 1 day
-
Poetry updater rejects OR (||) Python constraints in PyprojectPreparer#update_python_requirementOpenL: python L: ruby:bundler
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
dependabot/dependabot-core#16819 ·
Maintainers usually reply within 1 day
-
[Bug] Auto-trusted serialization allow list skips array component classesPossibly taken @Icesource claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day