Date
(MOST RECENT at top)
|
New Additions & Bug Fixes
(all main branch unless otherwise specified) |
Sept. 8, 2024
Beta 38
|
Upgrade in progress. THIS SECTION IS BEING EDITED
EXPERIMENTS (listing of all experiments)
- Updated experiments "reactions_single_compartment\react_2_b"
- Completed new experiment "react_3_b"
- Expanded experiment "react_2_c"
- New experiment "mystery_reaction_2.py"
- Simplified experiment "mystery_reaction_1"
MAIN INFRASTRUCTURE
- Renamed class "ReactionDynamics" to "VariableTimeSteps"
- New class "ReactionDynamics"
SUPPORTING LIBRARIES
- New methods UniformCompartment.get_chem_data(), and estimate_rate_constants_association()
- The argument "columns" of get_history() is also allowed to be a string
- Renamed UniformCompartment.compute_reaction_delta_rate() to compute_reaction_rate()
- New methods ReactionDynamics.approx_solution_combination_rxn() and exact_solution_combination_rxn()
- Moved method solve_exactly() from class "UniformCompartment" to "ReactionDynamics"
- Tweaks to ReactionDynamics._exact_solution()
- New methods Numerical.two_vector_least_square(), simple_least_square()
- Absorbed the class Heuristics into ReactionDynamics
VISUALIZATION
- Relocated method UniformCompartment,plot_data() as PlotlyHelper.plot_pandas()
- Added argument "legend_header" to plot_data()
|
July 25, 2024
Beta 37
|
EXPERIMENTS (listing of all experiments)
- Expanded experiments
react_2_a and react_2_b
- Updated experiments
react_1, react_2_c and enzyme_4
- Simplified the export of logs with the library
ipynbname
- Started introducing notebook tips about dealing with failed python imports
MAIN INFRASTRUCTURE
- Reaction rates are now saved alongside other diagnostic data
- Diagnostics-related parts of class
UniformCompartment moved to a separate class, Diagnostics , in "diagnostics.py"
- Chemicals passed to
add_reaction() , in various modules, no longer have to be pre-registered
- Added new function
check_version() to file "__init__.py"
SUPPORTING LIBRARIES
- ReactionDynamics :
Renamed class RxnDynamics to ReactionDynamics , and moved it into a separate file, "reaction_dynamics.py";
moved into it several object variables and methods from the class UniformCompartment
Ditched un-necessary fields formerly stored in the diagnostic history of individual reactions
- UniformCompartment :
Tweaks to plot_history()
Changes to compute_all_reaction_rates() , formerly named compute_all_reaction_deltas()
Renamed set_diagnostics() to enable_diagnostics()
- AllReactions :
New method get_chemicals_indexes_in_reaction()
VISUALIZATION
- New method
UniformCompartment.plot_data()
DOCUMENTATION
- Expansion and restructuring of the Reactions page
- Started added categorization tags to the notebooks listed in the Experiments page
- Fixed broken repository links in the Guide (from the major project restructuring of the previous release)
DEPLOYMENT
- Set version
jsonschema==4.17.3 in requirements.txt
- Upgraded version of the
neoaccess library to 4.4.1
- Dropped requirements for libraries
ipywidgets and jupyter-dash
- Tweaks to "quick.bat", the batch file to start JupyterLab
|
June 23, 2024
Beta 36
(Beta 34 and 35 not released)
|
CORE / NEW FEATURES
- Life123 is now available from the standard PyPI release :
pip install life123
EXPERIMENTS (listing of all experiments)
- Updated all experiments, to reflect the new import names
MAIN INFRASTRUCTURE
- Major overhaul of file structure, readied for PyPI release
SUPPORTING LIBRARIES
- Ditched obsolete class "ReactionDynamics" and obsolete method
UniformCompartment.curve_intersection()
VISUALIZATION
- Ditched
matplotlib and a test notebook using it. (Note: plotly has long been used instead.)
DEPLOYMENT
- Faulty releases Beta34 and 35 were withdrawn (PyPI release is the same for 35 and 36)
DOCUMENTATION
|
June 15, 2024
Beta 33
|
CORE / NEW FEATURES
- Improved management of variable time steps for networks of reactions,
employing new norms (measures of change/imminent onset of instability), more presets, and better integration of the norm values
EXPERIMENTS (listing of all experiments)
- Updated a large number of experiments, to reflect all code changes
- Variable-timestep presets are now used in all experiments that previously set individual low-level parameters
MAIN INFRASTRUCTURE
- Renamed class
ReactionDynamics to UniformCompartment
SUPPORTING LIBRARIES
- UniformCompartment (formerly named ReactionDynamics) :
Taken out several methods, and moved them to new separate static class, "RxnDynamics"
New methods update_thresholds() and delete_thresholds()
For variable time steps, added several new presets and two new norms (measures of change), norm_C and norm_D
Previous system state at tn-1 is now kept, and used by the new norms
Norm usage is now stored and displayed
Changes in the return value of adjust_timestep() , and other enhancements
Absorbed the "error_abort_step_factor" class property into the "step_factors" dict class property
In single_compartment_react() , argument name change from "reaction_duration" to "duration", and
changed argument "explain_variable_steps" from Boolean to pair (start-end time)
Tweaks to output when using argument "explain_variable_steps"
Replaced the method curve_intersection() with the new curve_intersect()
Tweaks to plot_history()
Ditched obsolete criterion_fast_reaction()
- AllReactions:
New method number_of_active_chemicals()
DOCUMENTATION
BUG FIX
- Bugfix, and additional validation, in
set_thresholds()
|
May 31, 2024
Beta 32
|
CORE / NEW FEATURES
- Implementation of additional termination criteria for reaction simulations
EXPERIMENTS (listing of all experiments)
MAIN INFRASTRUCTURE
- Added file
src/__init__.py
SUPPORTING LIBRARIES
- ReactionDynamics
Added argument "preset" in class constructor; deprecated argument "shared"
Added arguments "max_steps" and "stop" to single_compartment_react() ;
renamed argument "reaction_duration" to "duration"
Added new "slower" preset to use_adaptive_preset()
Changes to set_conc()
Small correction to display_thresholds()
Streamlined method curve_intersection() , now renamed curve_intersect()
New argument "verbose" to is_in_equilibrium() ; tweaks to reaction_in_equilibrium()
- ChemData:
Light re-organization
Enforcement of unique chemical names
New method name_exists()
Added argument "name" to Diffusion.get_diffusion_rate()
Renamed argument "diffusion_rate" to "diff_rate" in add_chemical_with_diffusion()
New methods AllReactions.inactivate_reaction(), active_reaction_indices(), indexes_of_active_chemicals()
Added argument "include_inactive" to number_of_reactions()
- Reaction:
Major change in internal data structure: chemical names now used instead of their indices;
the "AllReactions" class is no longer passed during object instantiation
New methods extract_reactant_names() and extract_product_names()
Enhancement to reaction_quotient()
- Numerical:
Extended curve_intersect_interpolate()
New method reach_threshold()
Overhauled the implementation of curve_intersect_interpolate() , now renamed curve_intersect()
DOCUMENTATION
- Updated the affected Reference Guides
- Misc. enhancements and problem fixes on the website
BUG FIX
- Bugfix to
AllReactions.clear_reactions_data()
- Bugfix to
ReactionDynamics.plot_history()
|
May 7, 2024
Beta 31
|
CORE / NEW FEATURES
- Improved visualization of networks of reactions (details below). Development has been shared with sister project BrainAnnex.org
EXPERIMENTS
- Updated all experiments affected by the changes
MAIN INFRASTRUCTURE
SUPPORTING LIBRARIES
- Added
utilities\comparisons.py
VISUALIZATION
- Enhanced visualization of networks of reactions, using Vue component
vue_cytoscape_2
- New class
PyGraphVisual
- New method
HtmlLog.export_plot_Vue_unpack_args()
- New argument "unpack" to
GraphicLog.export_plot()
- New method
ReactionDynamics.plot_reaction_network()
- Changes to
ChemData.prepare_graph_network()
DOCUMENTATION
BUG FIX
- In network visualizations, corrected issue of some reactions parameters being incorrectly shown on nodes of graph structure, when they should have appeared on edges
- Corrected relative paths in
src\modules\visualization\graphic_log.py
EXAMPLE. From experiment
A cycle of reactions (CLICK ON IMAGE BELOW FOR INTERACTIVE VERSION):
|
Dec. 9, 2023
Beta 30.1
|
CORE / NEW FEATURES
- Streamlined and simplified the programming interface
- Added more data-analysis tools
EXPERIMENTS
MAIN INFRASTRUCTURE
- For single-compartment reactions, the new default is variable adaptive time steps
- Changed default reaction orders to the stoichiometry coefficients
SUPPORTING LIBRARIES
- ReactionDynamics:
New methods estimate_rate_constants(), find_equilibrium_conc(), solve_exactly(),
number_of_reactions(), add_reaction(), describe_reactions(), prepare_graph_network(),
show_adaptive_parameters(), use_adaptive_preset()
Added "columns" argument to get_history()
Simplified reaction_in_equilibrium() ; added handling of pathological cases
Improvements to stoichiometry_checker() ; dropped argument "suppress_warning"
Enhancements to set_single_conc()
Added arguments "names" and "shared" to the class constructor
Cleanup of obsolete code; adjustments to some default values
- Reaction:
New methods extract_equilibrium_constant(), reaction_quotient()
- ChemData:
Change in value returned by add_reaction()
- Numerical:
New methods gradient_uneven_grid(), _finite_diff_weights()
Tweaks to _compute_gradient() , now renamed _compute_derivative()
VISUALIZATION
- New class "PlotlyHelper", with methods
get_default_colors(), plot_curves(), combine_plots() ;
- Using this new class, streamlined
ReactionDynamics.plot_curves() , and renamed it plot_history() ; added arguments "show" and "ylabel", and dropped "suppress"
DOCUMENTATION
- Added section on "Exact Solution of the 1st Order Reaction A <=> B" to the Reactions page
- Updated all the Reference Guides, and overhauled their graphic appearance (especially their Tables of Contents navigation)
- Improved layout and navigation in the Experiments page
|
Nov. 4, 2023
Beta 29
|
CORE / NEW FEATURES
- Expanded support for enzymes
EXPERIMENTS
SUPPORTING LIBRARIES
- Split off the class
ThermoDynamics from "reactions.py" into its own file, "thermodynamics.py"
- Tighten check for identical reaction sides when instantiating class
Reaction
- Expanded the data now returned by
Reaction.extract_rxn_properties()
- Added object property "active_enzymes" to class
ChemCore ; updated add_reaction() accordingly,
- The class
ChemData now also accepts a string as "name" argument, in case of a single chemical
- New method
ChemCore.all_chemicals()
- Tweaks to
ChemCore.get_all_names() and add_chemical_species()
- Renamed
ReactionDynamics.set_chem_conc() to set_single_conc()
VISUALIZATION
- Enhancement to
ReactionDynamics.plot_curves()
DOCUMENTATION
|
July 14, 2023
Beta 28.2
|
CORE
- Early support for macro-molecules : binding affinities (dissociation constants) and fractional occupancy based on ligand concentration
- Methods for macromolecule data struncture:
Macromolecules.add_macromolecules(), get_macromolecules(),
set_binding_site_affinity(), get_binding_site_affinity(), get_binding_sites(), get_binding_sites_and_ligands(),
get_ligand_name(), show_binding_affinities(), reset_macromolecule(), clear_macromolecules()
- Methods for macromolecule dynamic simulation:
ReactionDynamics.set_macromolecules(), set_occupancy(), get_occupancy(), update_occupancy(),
sigmoid(), logistic()
- New data class
ChemicalAffinity
- Added object variables
ReactionDynamics.macro_system_state and macro_system
- Exteded the method
describe_state() , to cover macromolecules
EXPERIMENTS
- New experiment, in folder "reactions_single_compartment/" :
macromolecules_1
(listing of all experiments)
- Updated all the other experiments, to reflect the change in the location of the
ChemData library
MAIN INFRASTRUCTURE
- New method
ReactionDynamics.get_chem_conc()
- Renamed constructor argument, and object variable, from "reaction_data" to "chem_data", in class
ReactionDynamics
SUPPORTING LIBRARIES
- Renamed "reactions/reaction_data.py" to "chemicals/chem_data.py"
- Dropped argument "n_species" from instantiation of class
ChemData
- Split off from the class
ChemData the new classes ChemCore, Diffusion, AllReactions, Macromolecules
- Diffusion data is now internally stored differently – and separately from other molecular data
- Dropped the object property
ChemData.n_species and the method _internal_reactions_data()
- New method
MovieTabular.clear_dataframe()
- Updated version of the
NeoAccess library to 4.3.1
VISUALIZATION
- New argument "range_x" to
ReactionDynamics.plot_curves() ; tweaks to default colors
DOCUMENTATION
BUG FIX
- Bugfix in method
ReactionDynamics.set_conc()
EXAMPLE. From experiment
macromolecules_1:
|
June 4, 2023
Beta 27
|
CORE
- Support for enzymes, including data structure, detection, reporting, and efficient computing
EXPERIMENTS
- New experiments (all in folder "reactions_single_compartment/") :
enzyme_1 and state_space_1
MAIN INFRASTRUCTURE
- Changes to the class
ReactionDynamics , for increased modularity, in the context of the
new class Reaction
SUPPORTING LIBRARIES
- Split the class
ReactionData into ChemData and Reaction ,
and more pytests
- Renamed some arguments in
ChemData.add_reaction()
- Tweaks to
ChemData.multiple_reactions_describe() and Reaction.describe()
VISUALIZATION
- New argument, "title_prefix", in method
ReactionDynamics.plot_curves()
BUG FIX
- Small bugfix in method
ReactionDynamics.single_compartment_react()
EXAMPLE. From experiment
enzyme_1:
|
May 31, 2023
Beta 26.3
|
CORE
- Substantial refinement, polishing and expansion of the automated, adaptive variable time steps introduced in the previous release
- Eliminated the deprecated earlier approach of "dynamic substeps" (first introduced in Beta 18)
EXPERIMENTS
- Updated, verified - and revised as needed - all of the experiments
- Moved 4 single-compartment reaction experiments to a new "archived" subfolder
- Renamed experiment
substeps_2 to variable_steps_2
MAIN INFRASTRUCTURE
- The automated, adaptive step-size decisions are now guided by multiple norms (measures)
- Added a new norm based on the max relative concentration changes
- Major code reorganization and cleanup in the
ReactionDynamics class.
- Streamlined and expanded the diagnostic data, and its methods
- Simplifications to the
set_path.py script, and to all the notebooks that use it
- Reorganization of class
ReactionData
SUPPORTING LIBRARIES
- Early introduction of the Neo4j graph database, by means of the
NeoAccess library
from the sister open-source project BrainAnnex.org
- Added several new lookup options to
MovieTabular.get_dataframe()
- Upgraded
jupyterlab version to 3.4.8
- Changes to environment.yml, to install the needed Neo4j libraries
BUG FIX
- Bugfix in
ReactionDynamics.reaction_step_common()
- Bugfix in timestep change in case of "soft aborts" (automated re-try)
|
Mar. 6, 2023
Beta 25
|
CORE
- Introduced the option of automated, adaptive variable time steps, including supporting methods
such as
step_determiner_1() (implemented in class ReactionDynamics )
- Deprecated the earlier approach of "dynamic substeps" (introduced in Beta 18); they will be eliminated in the next beta release
EXPERIMENTS
- New experiments (all in folder "reactions_single_compartment/") :
up_regulate_3, variable_steps_1, substeps_1, substeps_2
- Small additions to experiment
negative_concentrations_1
MAIN INFRASTRUCTURE
- More diagnostics in case of steps aborted because leading to overly large concentration changes, or to negative concentrations
- New methods
get_diagnostic_rxn_data(), get_diagnostic_conc_data(), get_diagnostic_delta_data(), _delta_conc_dict()
- Added `silent` argument to
ReactionDynamics.explain_time_advance() ; step sizes are now returned as well
- The values produced by the function
diagnostic_delta_conc_data are now saved during the run, rather than re-computed
- New object attribute
ReactionDynamics.diagnostic_delta_conc_data
- Renamed object attribute
ReactionDynamics.diagnostic_data to diagnostic_rxn_data
- Arguments `variable_steps` and `n_steps` no longer both allowed in
ReactionDynamics.single_compartment_react()
- Additional pytests
VISUALIZATION
- New method
plot_step_sizes()
- Tweaks to
plot_curves() , including new `show_intervals` argument
DOCUMENTATION
BUG FIX
- Small bugfix to
single_compartment_react()
EXAMPLE. From experiment
variable_steps_1:
|
Feb. 11, 2023
Beta 24
|
CORE
- A more thorough check for - and automatic remediation of - concentrations values dipping into negative values
EXPERIMENTS
- New experiments
reactions_single_compartment/up_regulate_2 , large_time_steps_2 and negative_concentrations_1
MAIN INFRASTRUCTURE
- Expanded output in
ReactionDynamics.explain_time_advance()
- Change in default values for arg "snapshot" in
ReactionDynamics.set_conc() and set_chem_conc()
- New experimental method
_reaction_elemental_step_SINGLE_REACTION()
- Removed method
explain_time_advance_OLD()
SUPPORTING LIBRARIES
- Dropped support for (confusing!) chemical indices in
ReactionData.add_reaction()
DOCUMENTATION
- Added new section about "Numerical Instability" on the reactions page
- Updated section on "Adaptive Variable Time Sub-steps" on that same page
BUG FIX
- Bugfix in
ReactionDynamics._explain_time_advance_helper()
EXAMPLE. From experiment
negative_concentrations_1:
|
Feb. 5, 2023
Beta 23
|
CORE
- Major change in folder structure: all the core code and libraries
(exclusive of experiments and pytests) moved under top-level folder
src
EXPERIMENTS
- New experiment
reactions_single_compartment/impossible_1
- Updated several experiments in
reaction_single_compartment to utilize
newer functions such as plot_curves() and get_diagnostic_data() ,
and to change argument name in single_compartment_react() from "fast_threshold" to "rel_fast_threshold"
MAIN INFRASTRUCTURE
- In
ReactionDynamics.single_compartment_react() , reactions get
reset to "fast" whenever the threshold (of what makes a reaction be regarded as fast) is lowered
- New method
set_rxn_speed_all_fast()
- Added new argument to
get_diagnostic_data() and to get_diagnostic_data()
- Tweak to
stoichiometry_checker_entire_run()
- In several methods in class
ReactionDynamics ,
renamed argument "fast_threshold" to "rel_fast_threshold", and "dynamic_steps" to "dynamic_substeps"
- Renamed
reaction_step_NEW() to _reaction_elemental_step() ,
and advance_variable_time_steps() to _advance_variable_substeps()
- Correction in status returned from
single_compartment_react()
- Added edge cases and pytests to
explain_time_advance()
SUPPORTING LIBRARIES
- Additional argument "Delta_G" to
ReactionData.add_reaction()
VISUALIZATION
- New argument to
ReactionDynamics.plot_curves()
EXAMPLE. From experiment
impossible_1:
|
Jan. 30, 2023
Beta 22
|
CORE
- Automatic throttling down of time-step size, as needed, to catch and immediately remedy errors from negative concentrations
arising from excessive time steps (including pytests)
EXPERIMENTS
- New experiments:
reactions_single_compartment/up_regulate_1
and reactions_single_compartment/large_time_steps_1
- Corrections & enhancements to experiments
reactions_single_compartment/cycles_1, down_regulate_1
- Small corrections/tweaks to experiments
reactions_single_compartment/down_regulate_2 , 1D/reaction/down_regulation_1 , 1D/reaction/up_regulation_1
MAIN INFRASTRUCTURE
- Improvements, including better precision, to
ReactionDynamics.curve_intersection()
- Added features to
ReactionDynamics.get_history()
- Improved status reporting of
single_compartment_react()
- New function
save_diagnostic_data()
- Consolidated the 2 overlapping functions
reaction_step_FIXED_RESOLUTION() and
reaction_step_VARIABLE_RESOLUTION() into reaction_step_NEW()
- Introduced custom Exception
ExcessiveTimeStep in class ReactionDynamics ;
used it in reaction_step_orchestrator() , to catch and automatically remedy such errors
SUPPORTING LIBRARIES
- New functions
Numerical.segment_intersect(), line_intersect(), curve_intersect_interpolate()
BUG FIX
- Bugfix, and simplifications, in
ReactionDynamics.explain_time_advance()
EXAMPLE. From experiment
large_time_steps_1:
|
Jan. 24, 2023
Beta 21
|
CORE
- Major change in the criterion of tagging a reaction as "fast", implemented in the new function
criterion_fast_reaction() .
This new approach has led to much-better results.
EXPERIMENTS
- New experiments:
cycles_1 and reactions_single_compartment/down_regulate_2
- Tweaks to experiments
react_2, react_3 , and react_4
MAIN INFRASTRUCTURE
- New functions
ReactionDynamics.curve_intersection() and set_chem_conc()
- Expanded reaction diagnostic data, and new function
explain_time_advance() to utilize it
- Reaction speeds are reset whenever concentrations are altered
- New argument "abs_fast_threshold" to
single_compartment_react()
- Added "t_start" and "t_end" arguments to
get_history()
- Added argument "stop_time" to
single_compartment_react()
- Added argument "species_name" to
set_chem_conc()
- Now allowing dict argument to
set_conc()
- Change to return value of
is_in_equilibrium()
- Tweaks to
examine_increment_array(), get_conc_dict() and reaction_in_equilibrium()
SUPPORTING LIBRARIES
- New functions
Numerical.deep_flatten() and compare_results()
- Renamed
ReactionData.assert_valid_index() to assert_valid_species_index()
- Tweaks to
assert_valid_rxn_index() and to get_reaction()
- Added argument "tail" to
MovieTabular.get()
VISUALIZATION
- New function
ReactionDynamics.plot_curves()
DOCUMENTATION
BUG FIX
- Bugfix and pytests for
ReactionData.get_chemicals_in_reaction()
EXAMPLE. From experiment cycles_1:
|
Jan. 16, 2023
Beta 20
|
CORE
- Major refinement in the handling of the variable substeps for the time resolution of the reactions
EXPERIMENTS
- New experiment
reactions_single_compartment/down_regulate_1
- Renamed experiment
react_5 to cascade_1
MAIN INFRASTRUCTURE
- New function
ReactionDynamics.advance_variable_time_steps()
- Enhancements to function
reaction_step_VARIABLE_RESOLUTION()
- Replaced function
examine_increment() with a new approach, implemented in
examine_increment_array()
- Streamlined the function
reaction_step_orchestrator()
- The "tolerance" argument of
is_in_equilibrium() changed from absolute to relative
SUPPORTING LIBRARIES
- New function
ReactionData.get_chemicals_in_reaction()
- Tweaks to
describe_reactions() and its helper functions
- Removed the deprecated class
Movie
DOCUMENTATION
- New section and diagram on "Adaptive variable time substeps" added to the Experiments page
BUG FIX
- Bugfix to
ReactionData.add_chemical() and to ReactionDynamics._explain_reactions_helper()
EXAMPLE. From experiment
down_regulate_1:
|
Jan. 9, 2023
Beta 19
|
CORE
- Deeper scrutiny (and optional debug mode) of time substeps for reactions
- Extensive additional diagnostic information for adaptive time substeps
EXPERIMENTS
- New experiments:
reactions_single_compartment/react_3, react_4, react_5
- Expanded experiment
1D/reaction/reaction1
- Small enhancements to experiments
1D/reaction/reaction_4
- Tweak to experiment
1D/reaction/reaction_7
- Update most experiments of the
1D/reaction_reaction_x types, to save more results in the histories and plots
- Small additions, utilizing
stoichiometry_checker() , to experiments 1D/reaction/reaction_6 and 1D/reaction/reaction_7
MAIN INFRASTRUCTURE
- New methods added to the
ReactionDynamics class:
stoichiometry_checker(), clear_reactions(),
diagnose_variable_time_steps(), get_historical_concentrations(),
stoichiometry_checker_from_deltas(), stoichiometry_checker_entire_run(), delta_names(),
explain_reactions(), examine_run()
- Efficiency improvements to
single_reaction_step() : more detailed optional debugging output,
and split into 2 versions, for fixed time resolutions and for time substeps
- Change in argument name from "total_duration" to "reaction_duration" in
single_compartment_react() ,
and from "delta_time" to "delta_time_full" in reaction_step_orchestrator()
- Split
examine_increment() into 2 functions; adjust pytests accordingly
- Introduction of the
self.diagnostics attribute in the class ReactionDynamics ; misc. enhancements to diagnostics options
- Generalized
is_in_equilibrium() to multiple reactions, and used it in all the "react_X" series of experiments
- Tweaks to
compute_all_reaction_deltas() , and needed adjustments to pytests and to calling code
- Changed the
ReactionDynamics.diagnostic_data attribute to be a Python dictionary, with an entry per reaction.
- Switched the class
ReactionDynamics to use a "verbose_list" attribute
in lieu of the earlier "debug_code" and "debug" attributes
- New pytests for adaptive time substeps in reactions
- A few more validations across various functions in the class
ReactionDynamics
- Renamed
BioSim1D.save_snapshot() to add_snapshot()
SUPPORTING LIBRARIES
- Tweaks to
ReactionData.describe_reactions()
- Additional validations in
add_reaction() , with pytests
- Deprecated and completely phased out the class
Movie
BUG FIX
- 2 bugfixes in class
ReactionDynamics
- Fixed bug in 2 pytests
EXAMPLE. From experiment
cascade_1:
|
Dec. 21, 2022
Beta 18
|
CORE
- Adaptive variable time substeps for reactions (implemented in class
ReactionDynamics )
- Substantially expanded and revised the class
ReactionDynamics , including data structure management, data snapshots,
display of thermodynamic quantities, and estimation of reaction speeds. Pytests
EXPERIMENTS
- New experiment
reactions_single_compartment/react_2 , to demonstrate adaptive variable time substeps for reactions
- Expanded experiment
reactions_single_compartment/react_1
LIBRARIES
- 2 new classes:
MovieGeneral and MovieTabular , plus tweaks to MovieArray , with pytests
- Dropped the deprecated libraries
Reactions and Chemicals
DOCUMENTATION
|
Nov. 28, 2022
Beta 17
|
CORE
- Elevated "single-compartment reactions" to top-tier module, alongside simulations in 1D, 2D and 3D.
LIBRARIES
- Merged the classes
Reactions and Chemicals (now both deprecated.)
Their merger was split into 2 new classes: ReactionData (to managed the data structures for the chemicals and the reactions)
and ReactionDynamics (to simulate the dynamics of reactions)
Pytests for the new classes.
- Expanded the
ReactionData class to manage thermodynamic data (Enthalpy, Entropy, Gibbs free energy)
- New method
ReactionDynamics.single_compartment_react()
- New methods
ReactionData.missing_diffusion_rate() and set_diffusion_rate()
INFRASTRUCTURE
- Extensive changes throughout, to deal with the restructuring of the libraries described above
EXPERIMENTS
- Updated all experiments, as needed by the restructuring of the libraries described above
- New experiment directory "reactions_single_compartment"
- New experiment
reactions_single_compartment/react_1
DOCUMENTATION
|
Oct. 17, 2022
Beta 16
|
CORE
- Introduced diffusion in 2D. New BioSim2D methods:
diffuse(), diffuse_step(), diffuse_step_single_species(), convolution_5_point_stencil(), system_snapshot(), system_size(), describe_state(), lookup_species()
inject_conc_to_bin(), set_species_conc() , with pytests.
- New BioSim1D methods:
inject_gradient(), inject_bell_curve(), system_size() , with pytests
LIBRARIES
- New method
Numerical.expand_matrix_boundary() , with pytests
EXPERIMENTS
- New 2D experiment:
2D/diffusion/diffusion_1
- New 1D experiments:
1D/diffusion/diffusion_along_gradient_1, 1D/diffusion/diffusion_along_gradient_2
- Updated experiment
1D/diffusion/gradient_1
VISUALIZATION
- Visualization for 2D system states, using plotly
- New method
BioSim1D.visualize_system()
DOCUMENTATION
INFRASTRUCTURE
- Split off pytests for diffusion in 1D into a separate file:
test_biosim_1d_diffusion.py
|
Oct. 7, 2022
Beta 15
|
CORE
- New methods
BioSim1D.diffuse_step_single_species_5_1_stencils() ,
and double_spacial_resolution_linear() , with pytests
BioSim1D.diffuse() , and related methods, now accept an "algorithm" argument
- Added argument "copy" to
BioSim1D.lookup_species()
- Generalized
BioSim1D.is_excessive() and max_time_step() , to allow for arbitrary delta_x
- Updated the class
BioSim2D to conform to changes recently made to BioSim1D :
both classes are now designed to be instantiated
- Re-organization of the methods of
BioSim1D class; moved compare_states() to class Numerical
- Ditched
self.verbose from BioSim1D
LIBRARIES
- New class
Numerical ,
with methods gradient_order4_1d(), gradient_order4() , and compare_vectors() , with pytests
- New class
MovieArray with 2 methods and pytests
EXPERIMENTS
- New trio of experiments:
1D/diffusion/validate_diffusion_1 , _2 , and _3
- Expanded the experiment
1D/diffusion/overly_large_single_timestep
- Updated the experiment
1D/diffusion/spacial_resolution_1
- Brought the experiment
2D/reaction/reaction_1 up-to-date with recent changes, and fixed a bug
INFRASTRUCTURE
- More pytests for
BioSim1D.diffuse_step_single_species() and for diffuse()
DOCUMENTATION
- Expanded the section on Diffusion in 2-D
- Added 3 diagrams to the site's home page
|
Sep. 14, 2022
Beta 14.1
|
INFRASTRUCTURE
- Incorporated delta_x (grid spacing) into 1D diffusion computations
- Converted class
BioSim1D from static to instantiated
(refactored all notebooks and pytests)
- Add method
BioSim1D.frequency_analysis() , with pytests, to provide frequency-component analysis with Discrete Fourier Transforms
- Add SciPy to the project requirements
- New method
BioSim1D.inject_sine_conc() , with pytests
- New methods
BioSim1D.save_system(), restore_system(), compare_states()
- The various
BioSim1D methods that change spacial resolution, now update the system state
- Added new argument to
BioSim1D.set_species_conc() ; slight tweaks to other methods that set concentrations
- Renamed method
Movie.append() to store()
EXPERIMENTS
- New experiments
1D/diffusion/low_pass_1 and 1D/diffusion/low_pass_2
- New experiment
1D/diffusion/spacial_resolution_1
- Added plotly heatmaps to experiment
1D/diffusion/gradient_1
DOCUMENTATION
BUG FIX
- Bugfix in
BioSim1D.inject_conc_to_bin()
|
Aug. 31, 2022
Beta 13
|
INFRASTRUCTURE
- Extended support for membranes in 1D, including expanded data structure in class
BioSim1D ,
and expansion of several methods for data management, visualization and reactions:
set_membranes(), show_membranes(), describe_state(), set_bin_conc(), set_uniform_concentration(), lookup_species(), bin_concentration(),
react(), reaction_step()
New methods: uses_membranes() and bins_with_membranes()
- Implemented
system_length and mapping bin numbers to x-coordinats in class BioSim1D ,
incl. class variable global_Dx , and new methods set_dimensions() and x_coord()
- New utility methods:
assert_valid_bin_number(), reset_system()
- Changed name of argument in
BioSim1D.set_bin_conc() and inject_conc_to_bin() from "bin" to "bin_address";
refactored all notebooks
- Changed default of "zero_clip" argument in
inject_conc_to_bin()
- More pytests, and general reorganization of them
EXPERIMENTS
- New experiment
1D/reaction/membrane_1
- Added plotly heatmap to experiment
1D/diffusion/diffusion_1
- Simplified experiment
1D/diffusion/reach_equilibrium_1
DOCUMENTATION
|
Aug. 22, 2022
Beta 12
|
INFRASTRUCTURE
- Implementation of reactions in 2D.
Added several methods to class BioSim2D , and pytests, for management of data structure, and for reactions
- Major re-organization, to take out of
BioSim1D any reaction-related methods also applicable to higher dimensions;
relocated several to Reactions
- Added "(state) snapshots" feature to
BioSim1D.react()
Reactions class: new methods is_in_equilibrium() and define_series()
- Early implementation of methods for the data structure to be used to model membranes
- Parallel tweaks to the constructors of
BioSim1D and BioSim2D
- Renamed argument `time_duration` of
BioSim1D.diffuse() to `total_duration`
- New method
Chemicals.assert_valid_index() ; simplifications to BioSim1D using it
Tweak to Chemicals.get_index() ; added extra validation and pytests for the class
EXPERIMENTS
- First 2-D experiment:
2D/reaction/reaction_1
- New experiments:
1D/reaction_diffusion/state_space_1 , 1D/reaction/up_regulation_1 , 1D/reaction/down_regulation_1
- Renamed the experiment folders from
life_1D to 1D , to avoid confusion with the location of
the simulation libraries. Likewise for life_2D
- Streamlined most experiments by using the new method
Reactions.is_in_equilibrium()
- Simplifications and additional visualizations to experiment
1D/diffusion/diffusion_1
VISUALIZATION
- Expanded the class
GraphicLog to allow use of graphic libraries stored remotely,
to avoid a JupyterLab bug preventing the correct display of HTML log files with links to locally-stored files (typically .CSS and .JS),
when using the "Open in New Browser Tab" feature in JupyterLab.
Changed all experiments to use remote linked files in the HTML log files they create
- Broader use of
plotly (only plotly EXPRESS had been used thus far)
|
Aug. 13, 2022
Beta 11.3
|
INFRASTRUCTURE
- Introduced wide support for SYSTEM TIME throughout
BioSim1D
- New methods to facilitate creation and use of snapshots of the state of the systems,
incl.
system_snapshot() , bin_snapshot() , show_system_snapshot() ,
save_snapshot() and get_history()
- Added "tabular" option to
Movie class. Incorporated Movie object in BioSim1D class
- In class
Reactions , added argument to describe_reactions()
- Added new argument to
BioSim1D.set_uniform_concentration()
- Started using Jupytext: added it to
requirements.txt , and added config file jupytext.toml .
All notebooks are now linked to .py files by the same name.
This is useful to refactor notebooks upon changes in the underlying code libraries
(discussion)
EXPERIMENTS
- New experiment:
diffusion/gradient_1
- Added extra visualization with
plotly to most existing experiments
- Revised, added comments, and simplified most existing experiments, in particular to take advantage of the new support for SYSTEM TIME
VISUALIZATION
- Added the visualization libraries
plotly and matplotlib to the standard setup,
and provided support for plotly .
- Added support for arbitrary color mapping to
vue_curves_4 , incl. new method pale_version()
- Added argument `color_mapping` to
BioSim1D.line_plot()
- Changes to
vue_cytoscape_1 and HtmlLog.export_plot_Vue() to allow multiple network plots on same page
DEPLOYMENT
- For compatibility with optional deployment to mybinder.org, added
file
environment.yml , to specify Python version 3.8 and other requirements
(details)
DOCUMENTATION
|
July 13, 2022
Beta 10
|
VISUALIZATION
- New Vue/D3 component
vue_cytoscape_1 (with tests), for visualizing networks ("directed graphs"), with re-positionable and clickable nodes. Based on the open-source cytoscape.js library.
EXPERIMENTS
INFRASTRUCTURE
-
Changed HtmlLog.config() and GraphicLog.config() , to accept multiple JavaScript files, to incorporate links to the cytoscape.js library.
-
Enhancements, incl. new methods, to class Reactions ; in particular, to generate visualization data
-
Added methods number_of_chemicals() and get_diffusion_rate() to class Chemicals .
-
Changed file naming conventions in experiments/visualization/logs_with_Vue_component_tests
-
Added and updated pytests
DOCUMENTATION
|
July 6, 2022
Beta 9.1
|
VISUALIZATION
EXPERIMENTS
INFRASTRUCTURE
- Switched to python 3.8
New method BioSim1D.line_plot() , to provide support for the new graphic module vue_curves_4
Cleanup and various enhancement to class Chemicals , plus pytests for most of its methods
Tweaks to BioSim1D.describe_state() , and corresponding adjustments to affected notebooks
Tests on the use of the multiprocessing library (not yet included in main repository)
DOCUMENTATION
|
June 13, 2022
Beta 8.2
|
DEPLOYMENT
- Life123 can now be
TRIED LIVE at Binder, with 1 click!
(akin to Google's Colab: short-term runs on a hosted JupyterLab environment)
- Introduced several utilities, and made corresponding changes to all notebooks, to work on Binder.
In particular, forked and modified the notebook utility library ipynbname , and also changed all notebooks to utilize the new set_path.py utility
INFRASTRUCTURE
- New class
Movies , to organize snapshots of system data for combined visualization
DOCUMENTATION
- Documented the newly-available Binder hosting environment
|
June 4, 2022
Beta 7
|
EXPERIMENTS
- All experiments with heatmap plots now expanded to also show results as line charts (and interpolating curves) with the new graphic module
vue_curves_3
- Reorganization of 1D diffusion experiments
VISUALIZATION
- New Vue/D3 component
vue_curves_3 , with tests
- Simplified the combined use of
HtmlLog and Vue components with new class GraphicLog
- In class
BioSim1D , the method single_species_heatmap() now makes use of the new GraphicLog class. Fixes to allow coexistence of multiple plots. Added method single_species_line_plot()
- Reorganization of visualization files, and streamlining of naming convention
- New methods for horizontal axes added to library SVGhelper (now in version 1.2)
INFRASTRUCTURE
- New utility file
get_notebook_info.py , to extract notebook names at runtime
- Tweaks to error messages in class
HtmlLog
- Prepared the website for future interface with a BrainAnnex-based content management system
DOCUMENTATION
- Greatly expanded website sections on "Visualization" and "Experiments", including summaries of all experiments
- Expanded README
|
May 13, 2022
Beta 6
|
EXPERIMENTS
- Revised all applicable notebooks to make use of the improved graphic component
heatmap-11 (with range slider and value tooltips)
- Simplified all applicable notebooks by making use of the recently-added method
BioSim1D.single_species_heatmap()
VISUALIZATION
- New Vue/D3 components:
heatmap-10 , heatmap-11 and curves-1
- Expansion and enhancements to library SVGhelper (now in version 1.1)
- Reorganization of tests for visualization components
LIBRARIES
- Simplification of the data handover from Python to Vue.js in HtmlLog (to log graphical elements)
DOCUMENTATION
|
Apr. 30, 2022
Beta 5
|
INFRASTRUCTURE
- Converted all the remaining Python files for the experiments into Jupyter Notebooks
- Re-oriented from the classic Jupyter Notebooks to JupyterLab. New batch file:
quick.bat to start JupyterLab
- New utility/testing notebooks: "diagnostics" and "html_display_test"
BUGFIXES
- Bugfixes to the early experiments
- Restored the linear scale for heatmaps in the Vue component
heatmap9.js
LIBRARIES
- Enhancements to HtmlLog; in particular, to operate with JupyterLab notebooks
CORE
- Tweaks to the BioSim1D and Reactions classes
|
Apr. 17, 2022
Beta 4
|
- Much-expanded support and documentation for Jupyter Notebooks (used for the experiments); in particular, a major new "How to Run" section in the README, a
quickstart.bat file, and a diagnostic script.
- Continued conversion of the Python files for the experiments into Jupyter Notebooks
|
Apr. 8, 2022
Beta 3
|
- New methods to increase/decrease spacial resolution (1D)
-
New methods replace_system() , in 1D, and initialize_system() , in 3D
-
Introduction of Jupyter Notebooks for the experiments
-
General re-organization
|
Mar. 15, 2022
Beta 2
|
- Introduced combined reaction-diffusion in 1D
- Both the diffusion and reaction steps are now non-destructive on the system data, and buffer the "Delta concentrations"
- Early development for a new class dealing with "heuristics" for deciding accuracy parameters
|
Mar. 14, 2022
Beta 1
|
Initial public release
|
Dec. 2021 -
Mar. 2022
Alpha (late)
|
- Early draft of data structure for systems in 1-, 2- and 3-D
- Diffusion and reactions in 1-D, with testing and heatmap visualization
- A module for HTML logs, integrated with Vue/D3 visualization
|
Spring 2020
Alpha (early)
|
Early prototype
|