- Added fixed membrane vertex attachments, including initialization and force field. (#129)
- Fixed the issue where the max force was not updated after recovery operation during conjugate gradient minimization. (#128)
- Fixed the memory leak issue during minimization. (#130)
- In visualization, fixed the issue where the line visualization was not disabled when the trajectory is disabled (99e6925).
- Membrane
- Surface protein binding will consume accessible area of a vertex, which affects future binding rates on this vertex. (#120)
- Some integral properties (such as species copy number) on vertices are better redistributed during modification. (#121)
- Re-enabled triangle protect FF, removing border forces. (#121)
- Added another option for curvature computation which is used in Mem3DG. (#121)
- Re-enabled membrane global stretching FF. (#121)
- Added membrane equilibrium volume increase protocol. (#121)
- Added configuration option to mesh adaptation. (#121)
- Enabled optional remeshing during minimization. (#121)
- Added adsorption along with surface diffusion in side routine. (#121)
- Enable more robust border vertex pinning. (#122)
- Visualization
- Others
- Update rates right after adsorption or surface diffusion reaction happens. (#121)
- Fixed curvature mismatch energy computation and smoothen copy number used in curvature generation using diffusion. (#121)
- Fixed rate constant for surface internal reactions. (#121)
- Fixed command line
-i
option autofill. (#121)
- Fixed energy curve display on GUI with multiple trajectories. (#118)
- Added Boolean data "header/finished" in the h5 trajectory to indicate simulation status. (#118)
- Improved NRM heap error report, and fixed heap corruption when infinite propensity is encountered. (#118)
- Fixed
CGMethod::maxF
function. Only firstnumDof
items will be considered. (#118)
- IO
- Added experimental HDF5 format output, including simulation configuration, element snapshots, energies and diffusing species copy numbers. (#95, #96, #100, #103, #112, #117)
- While invoking medyan with command line arguments, the input directory will be inferred as the directory of the system input file if
-i
option is not provided. (#111) - The
config
command can now normalize the input files if-s
option gives a system input file. (#111) - s-expression printing now auto indents. (#111)
- Mechanics
- Added a consistency test for volume exclusion between the integral formula and the monomer-based formula. (#96)
- Bubble force fields will not move bubbles that are fixed. (#107, #108)
- Add force-induced mechanochemical activation on MTOC and AFM structures. (#109, #110)
- Protein curvature mismatch energy at each vertex is now scaled by area fraction instead of molar fraction. (#115)
- Protein curvature mismatch energy is computed on border vertices as well for curvature sensing only. It does not affect curvature generation. (#115)
- Membrane vertex equilibrium area is the same as current area if the membrane is attached to a lipid reservoir. (#115)
- Energy relative change convergence criterion is formally added, with
energy-change-relative-tolerance
key in the input file. (#115) - Added a special protocol to increase membrane equilibrium area with a constant rate. (#117)
- Membrane remeshing is now placed after minimization (#117), because
- Membrane-filament shortest distance can be larger after minimization, reducing the chance that some beads go out of the membrane during remeshing.
- Artifacts on vertex species copy numbers introduced by remeshing can be smoothened by chemical reactions.
- Chemistry
- Added support for membrane adsorption/desorption involving bulk species. (#96)
- GUI
- Fixed a bug in data dump involving bulk species. (#96)
- Fixed an assertion failure issue when the window has zero size. (#96)
- Framebuffer size is no longer assumed to be equal to the window size. (#96)
- Fixed incorrect free energy of the curvature mismatch model. (#97)
- Fixed incorrect number of lipids in curvature mismatch model. (#100)
- Fixed memory problem at the end of simulation, arising from membrane reactions incorrectly destructed. (#100)
- Fixed incorrect filament ring initialization angle constraint. (#104)
- Fixed membrane bending constant not correctly registered after remeshing. (#111)
- Fixed membrane geometry not computed before computing energies/forces during force field diagnosis. (#115)
- Max distance during minimization recovery applies to vertices as well. (#115)
- Fixed parser output for
SPECIALPROTOCOL pin-initial-filament-below-z
. (#115) - Fixed accuracy issue for
toString
for arithmetic types. (#115) - Fixed file dialog problem on Linux using Zenity. (#115)
- Membrane surface diffusion also respects the curvature mismatch energy. (#116)
- In chemistry input file, the diffusion coefficient, instead of the diffusion reaction rate (scaled by the size of a cubic compartment), is specified in
SPECIESDIFFUSING
. This enables the fix of incorrect diffusion rate scaling with non-cubic compartments. (#75) - In output file
snapshot.traj
, the brancher is now represented as a linker, where the coordinates on both mother and daughter filaments are recorded. Previously, only coordinates on the mother filament was recorded. (#79)
- Added membrane adsorption/desorption reactions. (#62, #73, #88, #94)
- Added an alternative cylinder excluded volume force field. (#92)
- Duration for timed chemistry step is now exact (#13, #18, #21).
- Largely refactored codes in conjugate gradient method. Specifically, 3 search direction update methods are now grouped into one file. (#23, #27, #28, #58, #59)
- Reaction/species signals are now implemented using C++ standard library components instead of boost's signals2 library, which provides faster compile speed (#38).
- Different Species are now differentiated using an enum type member
Species::type_
instead of multiple distinct types (#42). - Optimized function to obtain compartment list from
CompartmentGrid
instance (#44). - A more secure procedure is used for cylinder information packing (for SIMD line search algorithm). (#46)
- Simplified filament initialization and
FilamentData
structure. (#60) - Compartment neighbor information are now index-based instead of pointer-based. (#66, #70)
- Uses spdlog library for logging. (#83)
- In visualization, enhanced keyboard shortcut and prevented mouse acting simultaneously on GUI and the scene for MEDYAN objects (#30).
- Added simple force field diagnosis upon line search errors, if
try_to_recover_in_line_search_error
is explicitly set tofalse
in the input file. (#34) - Added branching point visualization. (#50, #79)
- Added depth cueing feature in visualization. (#51)
- Linker binding on different types of filaments is now supported. (#78, #79)
- Added automatic camera adjustment in GUI. (#81)
- In GUI, using native file selector, the last opened directory will be remembered. (#81)
- Fixed bugs related to severing (#15).
- Fixed motor unbinding free energy tracking (0a97196).
- Fixed a bug that breaks the restart protocol (#32, #37).
- Fixed compiling issue when
FLOAT_PRECISION
is a predefined macro (whenfloatingpoint
isfloat
) (#35). - Fixed an issue in parsing string variables during command line parsing (#36).
- Fixed vcpkg creating cache outside repository. (#48)
- Fixed infinite loop issue in branching nucleation callback. (#53, #55)
- Fixed use of freed memory in some chemistry callbacks. (#57)
- Fixed undefined behavior and memory problem in hybrid neighbor list when no linker is specified. (#74)
- Fixed missing special protocol inputs. (#89)
- Fixed filament type parsing issue when dissipation tracking is disabled. (#93)
- Added membrane simulation.
- Added visualization and GUI.
- Dropped support for pre C++17 compilers.
- Added simulation configuration generator, and enhanced input file parser to allow structured input using S-Expressions (4d71a27).
- Added
ReactionDy
type that supports reactions with dynamic number of reactants and products (e37feb3).
- Refactored the data structure in the energy minimization, such that it allows for non-coordinate degrees of freedom (9a02e0f6d).
- Improved reference semantics for
Vec
-like structures as function arguments (27b296ad4).
- Force components that reach >1e15 will trigger an alarm in addition to NaN and Inf values (39ce574).
- Removed thread pool usage (c78fb5e).
- Optimized filament and branching force field calculations (df76443, 4d523e7).
- Added source groups corresponding to the file tree structure in
CMakeLists.txt
(8fc9ead). OPTIMOUT
macro offers more detailed timings of various parts of the code so the user has better understanding of the rate limiting steps in the simulation (873c814).- Optimized species searching when cloning reactions (52f4c47).
- Optimized addition of dependent reactions (7b86dcd).
- Hessian analysis
- Eigenvalue computation can be optionally disabled with
EIGENTRACKING: OFF
while computing Hessian matrix (0c455b5). - Add output to visualize all eigenmodes in Hessian tracking (16155a6).
- Eigenvalue computation can be optionally disabled with
-
Restart
- During restart phase, motor walking rate was not turned off under a couple of conditions. Fixed that (39ce574).
- During restart phase, reactions for motor/linker is now turned off (39ce574).
- During restart phase,
Cylinder::_filID
was not set. Fixed that (106c1e2). - Fixed restarted trajectories not having diffusion of chemical species (2903f54).
-
Force fields
- Fixed branching interactions when the offspring filament is attached to the plus end of parent filament (c87d3d9, 840de95).
- Fixed initial force computation for combined-filament-stretching-and-bending force field, which is no longer enabled by default (99c9bd6).
- Fixed incorrect forces for branching position cosine (4d523e7).
- Fixed wrong constant used in branching bending energy computation (a68e859).
- Fixed incorrect volume exclusion force expressions (49dd9d1).
- Volume exclusion potential now considers cylinder equilibrium lengths (5d12d11).
-
Others
- After chemistry, when the diffusing species copy numbers are set, now use
up()
anddown()
functions instead of onlysetN()
to trigger crosschecks and signals (4b8a5e5). - Replaced
std::bind2nd
with lambda function (805b221). - Fixed reaction rate scaling by volume in newly created compartments (f6c7783).
- Fixed the coordinate calculation for binding sites using the
Cylinder::adjustedrelativeposition
function. However, to ensure backward compatibility, it is turned off by default (dbf7527, dbecef5). - The cloned reaction is fixed to be non-proto-compartment (e0e6fac).
- Fixed incorrect filament nucleation when bubbles exist (78a8f8c).
- Fixed incorrect creation of
FilamentCreationCallback
(7b77123). - Fixed build and test workflows on GitHub Actions (bf63f6f).
- After chemistry, when the diffusing species copy numbers are set, now use
- New building procedure using
CMake
is supported and recommended (a1b28e254). - Added a force field that combines filament stretching and bending (772133585).
- Added quadratic line search in gradient descent method (772133585).
- The copy number of chemical species are now assigned before dynamic rate initialization (7175987be).
- Fixed branching dihedral force field cosine form (772133585).
- Myosin duty ratio is now calculated at runtime (772133585).
- The system input file no longer requires species number of types specification (b887ba2).
- Rearranged examples and added new ones (48993f8).
- Refactored the logger (a2c69f9).
- Integrated the tests (8de0a0f).
- Increased readability of on-screen outputs.
Makefile
default optimization changed from-Os
to-O2
(b8468c3).
- Fixed distribution generation in chemistry algorithm (5897eed).
- Fixed bugs related to SIMD macros (13fe728).
- Fixed volume exclusion not including short filaments (d0961d4).
- Fixed Myosin motor duty ratio calculation. Now it is based on binding/unbinding rates. (6f57531)
- Added a thread pool implementation, which may facilitate multi-threading computations (fd69e22).
- Added new MTOC functions (e286a3d).
- Added AFM pulling simulation (b581d1a).
- Added mechanical Hessian analysis (b581d1a).
- Added branching dihedral quadratic force field (37b6173).
- Added a cell list data structure for elements contained in the compartments (586f8f5).
- Used a double linked list data structure instead of
std::unordered_set
forReactable
s andMovable
s (0f32b73). - The dissipation tracking can now have higher resolution, reflecting the mechanical energy change for every force field (5e7eed8).
- Refactored the
Database
class (bc0222c, 3c71316). - Removed stretched energy computations (ee6220f).
- Various improvements on the restarting procedure (0f32b73).
- Fixed motor stretch force not reset before minimization.
- Distance between the boundary and the filaments can be negative now.
- Cylinder neighbor list for volume exclusion will generate multiple neighbor list if there is more than one filament type.
- Filament creation by nucleation and branching is not allowed in partially activated compartment with volume fraction < 0.5. It potentially prevents the infinite while loop during filament creation.
- Fixed
BoundaryCylinderRepulsionIn
force field. - Fixed
MTOCAttachment
potential. - Fixed mechanochemical feedback on motor initialization under
PLOSFEEDBACK
version (1fcd9cf). - Fixed cases where 2 ends a motor binds on the same binding site.
- Fixed compartment transfer/share axis (befaf74).
- Fixed the way of counting number of interactions for filament bending (75bc733).
- Fixed the newly created filament not having mechanochemical feedback (9dc5d27).
- Fixed the problem that the type
floatingpoint
cannot be aliased todouble
(87fad88). - Fixed
dist_avx.h
not compatible with AVX mode (ce314fa). - Fixed the issue with changing number of binding sites per cylinder in SIMD binding search (9a39874).
- Fixed the boundary pinning force field (49e254b).
- Fixed minor portability issues on different compilers (eb10ca1).
- Fixed ending simulation message not displayed when simulation finishes (4a2f610).
PLOSFEEDBACK
is now turned off by default (3ff0837).- Fixed the documents for MEDYAN 4.0 speed up comparison (3ff0837).
- Dropped support for pre C++14 compilers.
- Added support for MSVC compilers and added Visual Studio solution file.
- Added cylindrical boundary type.
- Added support for runtime modification of filament polymerization/depolymerization rate.
- Added support for energy dissipation tracking.
- Used flattened storage for force field computations.
- Improved performance for neighbor list and binding site search. Binding site search now gains SIMD support. (See file for detailed performance benchmark)
- Fixed a bug in boundary repulsion potential.
- Fixed numerical errors that might occur in cylinder volume exclusion potential.
- Rewrote
Makefile
and fixed the incorrect dependency generation. Also addedPLOSFEEDBACK
to the macro list. - Fixed a typo in the source.
- Fixed some bugs related to mechanochemical feedback when
PLOSFEEDBACK
is defined.
-
Filament
-
Fixed a bug on filament severing by cofilin.
Colfilin reactions required certain callback modifications to effectively simulate them without crashing the program. Those changes are included in this version.
-
Load force computation now considers directionality of filaments.
Previous models of Brownian ratchet feedback in Medyan considered just the distance from boundary. In this version, both the distance and angle are considered. This leads to a more accurate model for brownian ratchet.
-
Fixed a bug on load force clearing.
In the previous implementations of MEDYAN, brownian ratchet forces were cleared improperly before being overwritten. As a result, the filament polymerization/depolymerization rates were inaccurate. This is especially true in high χ parameter cases.
-
-
Motors and Linkers
- Fixed a bug on stretch force computation for motors and linkers.
-
Restart protocol can now effectively restart networks with shorter filaments compared to the earlier version.
-
Other
-
Improved arrangement of main controller procedure.
-
Bug fix on retrieving compartment grid center coordinate. (used rarely in MEDYAN)
-
Reviewed example files to ensure accuracy of parameters mentioned.
-
MOTORWALKINGFORWARD
string was used instead ofMOTORWALKINGBACKWARD
. This bug only affects simulations with bi-directional motors. -
Fixed diffusion bug in
moveBoundary
function.Previous version of MEDYAN had a bug which resulted in partial activation of diffusion reactions when a new comaprtment is activated. This has been addressed in this version.
-
-
Simulations can now control chemical reaction volume based on network span if necessary. Please refer to Usage guide for more details.
-
Added output files for trajectory of concentration, plus end type / coordinate and chemical reaction counter on filament.
-
Added feature to visualize plus ends in trajectories using VMD. Please refer to UsageGuide for more information.
-
Added plotting function to the analysis script in
AnalyzeTrajectory.py
. -
Added example input files for different systems.
-
Added a nucleation example input files.
-
Added treadmilling tracking.
Simulations can now track treadmilling in each filament by tracking the total number of polymerization, and depolymerization reactions explicitly in plus and minus ends in addition to nucleation reactions during each chemical evolution cycle.
-
Added macro
DEBUGCONSTANTSEED
.It helps simulate trajectories without stochasticity thereby helping in faster debugging/cross comparison of codes. Simulations might be slower in this mode and so it is better to use smaller systems while debugging.
-
Added macro
PLOSFEEDBACK
.As many mechanochemical models have been used in publications from Papoian lab, this macro ensures that the feedback model is the same as mentioned in PLOS computatinal biology paper.
Please refer to Model Guide on Mechanochemical feedback for more information.
Note: macro changes require edition of
Makefile
and so code should be recompiled to effect the updates.