PyAntiGen 1.0.9__tar.gz → 1.0.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. {pyantigen-1.0.9 → pyantigen-1.0.10}/PKG-INFO +1 -1
  2. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/PKG-INFO +1 -1
  3. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/RxnDict_to_antimony.py +21 -2
  4. {pyantigen-1.0.9 → pyantigen-1.0.10}/pyproject.toml +1 -1
  5. {pyantigen-1.0.9 → pyantigen-1.0.10}/setup.py +1 -1
  6. {pyantigen-1.0.9 → pyantigen-1.0.10}/LICENSE +0 -0
  7. {pyantigen-1.0.9 → pyantigen-1.0.10}/MANIFEST.in +0 -0
  8. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/SOURCES.txt +0 -0
  9. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/dependency_links.txt +0 -0
  10. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/entry_points.txt +0 -0
  11. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/requires.txt +0 -0
  12. {pyantigen-1.0.9 → pyantigen-1.0.10}/PyAntiGen.egg-info/top_level.txt +0 -0
  13. {pyantigen-1.0.9 → pyantigen-1.0.10}/README.md +0 -0
  14. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/AntimonyGen.py +0 -0
  15. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/TelluriumGen.py +0 -0
  16. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/__init__.py +0 -0
  17. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/antimony_utils.py +0 -0
  18. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/cli.py +0 -0
  19. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/data_interpolation.py +0 -0
  20. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/isotopomer_tools.py +0 -0
  21. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/model_generation.py +0 -0
  22. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/models.py +0 -0
  23. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/module_base.py +0 -0
  24. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/pyantigen.py +0 -0
  25. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/rate_laws.py +0 -0
  26. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/reaction_creation.py +0 -0
  27. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/AntiGen_paths.py +0 -0
  28. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Anchor_cache.py +0 -0
  29. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Deadline.py +0 -0
  30. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Evaluator.py +0 -0
  31. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Event_times.py +0 -0
  32. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Fast_profile.py +0 -0
  33. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Fit_cache.py +0 -0
  34. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Identifiability.py +0 -0
  35. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Model_optimize.py +0 -0
  36. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Model_simulate.py +0 -0
  37. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Nuisance_sensitivity.py +0 -0
  38. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Optimize.py +0 -0
  39. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Petab_export.py +0 -0
  40. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Preequil_cache.py +0 -0
  41. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Profile_checkpoint.py +0 -0
  42. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Results.py +0 -0
  43. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Sensitivity_analysis.py +0 -0
  44. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Engine/Simulate.py +0 -0
  45. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Flipflop_reference.py +0 -0
  46. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Model_generate.py +0 -0
  47. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Model_run.py +0 -0
  48. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Data.py +0 -0
  49. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Events.py +0 -0
  50. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Experiment.py +0 -0
  51. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Loss_config.py +0 -0
  52. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Observed_species.py +0 -0
  53. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Optimizer_settings.py +0 -0
  54. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Plots.py +0 -0
  55. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Solver_settings.py +0 -0
  56. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Update_opt_parameters.py +0 -0
  57. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/Example/Modules/Update_parameters.py +0 -0
  58. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/data/ADneg.csv +0 -0
  59. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/data/ADpos.csv +0 -0
  60. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/data/Flipflop.csv +0 -0
  61. {pyantigen-1.0.9 → pyantigen-1.0.10}/framework/template/data/make_flipflop_data.py +0 -0
  62. {pyantigen-1.0.9 → pyantigen-1.0.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyAntiGen
3
- Version: 1.0.9
3
+ Version: 1.0.10
4
4
  Summary: Short one-line description of what PyAntiGen does
5
5
  Author: Open Source Contributor
6
6
  Author-email: Don <you@example.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyAntiGen
3
- Version: 1.0.9
3
+ Version: 1.0.10
4
4
  Summary: Short one-line description of what PyAntiGen does
5
5
  Author: Open Source Contributor
6
6
  Author-email: Don <you@example.com>
@@ -504,9 +504,28 @@ def generate_antimony_from_txt(txt_file_path, name):
504
504
  # Generate the complete script with compartments, species, and reactions
505
505
  complete_script = ""
506
506
 
507
- # Add compartment declarations
507
+ # Add compartment declarations.
508
+ #
509
+ # ":=" and not "=", deliberately. With "=" Antimony emits an SBML
510
+ # initialAssignment and marks the compartment constant, so the compartment
511
+ # takes a *copy* of V_<name> at t=0 and nothing ever refreshes it. Rate laws
512
+ # reference the V_<name> parameter directly, so the dynamics stay correct,
513
+ # but every concentration -- amount/compartment for a substanceOnly species
514
+ # -- is then computed against a stale size, and setting V_<name> at runtime
515
+ # does not resize the compartment at all.
516
+ #
517
+ # That diverges silently whenever V_<name> is driven by an assignment rule
518
+ # or is assigned between runs. Measured in the Elbert_Esguerra amyloid model
519
+ # on 2026-09-08, where V_LV grows with atrophy: at age 72 the LV compartment
520
+ # was 10.3x smaller than V_LV, so [X_LV] read 10.3x high while the ODEs were
521
+ # right.
522
+ #
523
+ # ":=" makes the compartment an assignment-rule variable that tracks its
524
+ # parameter. Amounts are unaffected (no spurious dilution flux), every rate
525
+ # law is unchanged since they use V_<name>, and concentrations become
526
+ # consistent with the volume the dynamics actually use.
508
527
  for compartment in sorted(unique_compartments):
509
- complete_script += f"compartment {compartment} = V_{compartment}\n"
528
+ complete_script += f"compartment {compartment} := V_{compartment}\n"
510
529
  complete_script += "\n" # Add blank line after compartments
511
530
 
512
531
  # Add species declarations (use explicit compartment map when available)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyAntiGen"
7
- version = "1.0.9"
7
+ version = "1.0.10"
8
8
  description = "Short one-line description of what PyAntiGen does"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" } # adjust if needed
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='pyantigen',
5
- version='1.0.9',
5
+ version='1.0.10',
6
6
  description='A declarative framework for building compartmental Antimony models',
7
7
  author='Open Source Contributor',
8
8
  packages=find_packages(include=['framework*']),
File without changes
File without changes
File without changes
File without changes
File without changes