Spatial hybrid: combineHybrid keeps no-op particle jump processes that suppress competing Smoldyn reactions
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start at ParticleMathMapping.combineHybrid() where continuous-variable actions are already stripped from ParticleJumpProcess objects; extend that logic to drop a process whose remaining destroy/create multisets cancel on the same particle variables. Then locate the tests (or a runnable headless model) that generate the .smoldynInput so you can confirm the no-op reaction influx O -> O k line disappears while open/close reactions and the .fvinput PDE source stay intact. Done means a cancelling jump process is omitted from the Smoldyn input and the existing particle-hybrid mapping tests still pass.
索引モデルが issue の本文から書いたものです。
説明
Summary. In a spatial PDE/particle hybrid application, a reaction in which a particle species catalyses a continuous species keeps a particle jump process that destroys and re-creates the same particle. That process has no effect on the particles, but it is written to the .smoldynInput as e.g. reaction influx O -> O 6022.14. Smoldyn assigns competing first-order reactions probabilities ∝ k_i/Σk, so a fast no-op suppresses the particle's real reactions.
Examples of such reactions:
O → O + U;- a General kinetics reaction
→ UwithOas a modifier, which VCell turns into the same process.
Example (Schaff et al. 2016, Test 1: calcium sparks).
- Model: channels
C ⇌ Oare particles (k_on = 1, k_off = 5 s⁻¹). CalciumUisForceContinuous, with influxO → O + UatJ·602.214 ≈ 6022 s⁻¹. - Generated Smoldyn reactions:
open C -> O 1.0;,close O -> C 5.0;andinflux O -> O 6022.14076;. - Effect: closing is effectively suppressed. The mean open fraction is ~0.9 instead of k_on/(k_on+k_off) = 1/6, and calcium is ~5× too high.
- Fix confirmed: removing the
influxline from the.smoldynInputrestores the exact open fraction. The PDE sourceRATE ((9.99… * O) - U)in.fvinputis unaffected and correct.
Suggested fix. In ParticleMathMapping.combineHybrid(), after removing actions on continuous variables, also drop a ParticleJumpProcess whose remaining actions cancel: equal destroy/create multisets on the same particle variables. This is the same idea as the existing if (!particleJumpProcess.getActions().isEmpty()) check, extended to cancelling actions.
Context. Found while driving the hybrid solver headlessly (pyvcell → libvcell → pyvcell-fvsolver) in vivarium-collective/viva-pde-particle. The workaround there is viva_pde_particle.reference.vcell_native.drop_noop_reactions.
🤖 Generated with Claude Code
- 主要言語
- Java
- スター
- 140
- フォーク
- 35
- 平均マージ
- 22時間 6分
- マージ済み PR(30日)
- 14
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
virtualcell/vcell のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
virtualcell/vcell#2193 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Accessibility Requirement Java-based User Interface
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
virtualcell/vcell#2138 ·
メンテナーはふだん 1 日以内に返信
-
Accessibility Requirement Java-based
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
virtualcell/vcell#2137 ·
メンテナーはふだん 1 日以内に返信
-
Accessibility Requirement User Interface
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
virtualcell/vcell#2135 ·
メンテナーはふだん 1 日以内に返信
-
Accessibility Requirement Java-based User Interface
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
virtualcell/vcell#2134 ·
メンテナーはふだん 1 日以内に返信
virtualcell/vcell の issue をすべて見る
似ている issue
-
hermes-queue
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
chrisalunlloyd2-sudo/mindpalace#337 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
ucsb-cs156/proj-frontiers#844 ·
-
type: dependency-upgrade
難易度 1/5 1時間未満 初心者へのやさしさ 76/100
spring-projects/spring-security#20057 ·
メンテナーはふだん 1 日以内に返信
-
Spark benchmarks crash with `[INVALID_DRIVER_MEMORY]` on JVMs whose default heap is below Spark's ~450 MB minimum対応中かも @sendaoYan が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
moquette-io/moquette#980 ·