StochasticForceInference 2.0.1__tar.gz → 2.0.2__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 (158) hide show
  1. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/PKG-INFO +1 -1
  2. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/overdamped.py +19 -5
  3. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/StochasticForceInference.egg-info/PKG-INFO +1 -1
  4. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/pyproject.toml +1 -1
  5. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/AGENTS.md +0 -0
  6. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/CONTRIBUTING.md +0 -0
  7. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/GALLERY_STYLE_GUIDE.md +0 -0
  8. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/LICENSE +0 -0
  9. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/MANIFEST.in +0 -0
  10. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/README.md +0 -0
  11. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/__init__.py +0 -0
  12. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/__init__.py +0 -0
  13. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/constants.py +0 -0
  14. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/linear.py +0 -0
  15. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/monomials.py +0 -0
  16. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/pairs.py +0 -0
  17. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/bases/spde.py +0 -0
  18. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/__init__.py +0 -0
  19. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/assess.py +0 -0
  20. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/dynamics_order.py +0 -0
  21. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/plotting.py +0 -0
  22. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/report.py +0 -0
  23. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/residual_tests.py +0 -0
  24. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/diagnostics/residuals.py +0 -0
  25. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/__init__.py +0 -0
  26. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/base.py +0 -0
  27. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/optimizers.py +0 -0
  28. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/__init__.py +0 -0
  29. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/banded.py +0 -0
  30. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/covariance.py +0 -0
  31. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/driver.py +0 -0
  32. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/flow.py +0 -0
  33. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/flow_multi.py +0 -0
  34. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/flow_ud.py +0 -0
  35. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/gram.py +0 -0
  36. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/jacobians.py +0 -0
  37. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/precompute.py +0 -0
  38. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/runner.py +0 -0
  39. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/parametric_core/solve.py +0 -0
  40. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/result.py +0 -0
  41. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/serialization.py +0 -0
  42. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/__init__.py +0 -0
  43. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/base.py +0 -0
  44. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/beam.py +0 -0
  45. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/greedy.py +0 -0
  46. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/hillclimb.py +0 -0
  47. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/lasso.py +0 -0
  48. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/metrics.py +0 -0
  49. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/result.py +0 -0
  50. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/scorer.py +0 -0
  51. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparse/stlsq.py +0 -0
  52. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/sparsity.py +0 -0
  53. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/inference/underdamped.py +0 -0
  54. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/integrate/__init__.py +0 -0
  55. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/integrate/api.py +0 -0
  56. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/integrate/integrand.py +0 -0
  57. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/integrate/rk4.py +0 -0
  58. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/integrate/timeops.py +0 -0
  59. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/__init__.py +0 -0
  60. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/base.py +0 -0
  61. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/chunked.py +0 -0
  62. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/noise.py +0 -0
  63. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/overdamped.py +0 -0
  64. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/langevin/underdamped.py +0 -0
  65. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/__init__.py +0 -0
  66. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/basis.py +0 -0
  67. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/core/runtime.py +0 -0
  68. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/factory.py +0 -0
  69. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/interactor.py +0 -0
  70. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/__init__.py +0 -0
  71. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/_base.py +0 -0
  72. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/_eval_compiler.py +0 -0
  73. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/_fd_atoms.py +0 -0
  74. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/_grid.py +0 -0
  75. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/layout/_sectors.py +0 -0
  76. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/memhint.py +0 -0
  77. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/__init__.py +0 -0
  78. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/base.py +0 -0
  79. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/contract.py +0 -0
  80. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/interactions/__init__.py +0 -0
  81. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/interactions/dispatcher.py +0 -0
  82. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/interactions/prepare.py +0 -0
  83. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/interactions/specs.py +0 -0
  84. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/interactions/stencils.py +0 -0
  85. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/leaf.py +0 -0
  86. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/__init__.py +0 -0
  87. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/concat.py +0 -0
  88. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/derivative.py +0 -0
  89. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/einsum.py +0 -0
  90. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/linear.py +0 -0
  91. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/mapn.py +0 -0
  92. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/reshape_rank.py +0 -0
  93. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/nodes/ops/slice.py +0 -0
  94. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/params.py +0 -0
  95. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/psf.py +0 -0
  96. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/sf.py +0 -0
  97. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/stateexpr.py +0 -0
  98. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/statefunc/structexpr.py +0 -0
  99. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/__init__.py +0 -0
  100. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/collection.py +0 -0
  101. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/dataset.py +0 -0
  102. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/degrade.py +0 -0
  103. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/io.py +0 -0
  104. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/trajectory/reserved_extras.py +0 -0
  105. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/utils/__init__.py +0 -0
  106. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/utils/formatting.py +0 -0
  107. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/utils/maths.py +0 -0
  108. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/utils/neighbors.py +0 -0
  109. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/SFI/utils/plotting.py +0 -0
  110. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/StochasticForceInference.egg-info/SOURCES.txt +0 -0
  111. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/StochasticForceInference.egg-info/dependency_links.txt +0 -0
  112. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/StochasticForceInference.egg-info/requires.txt +0 -0
  113. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/StochasticForceInference.egg-info/top_level.txt +0 -0
  114. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/__init__.py +0 -0
  115. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/abp.py +0 -0
  116. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/bench_utils.py +0 -0
  117. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/coarse_grain.py +0 -0
  118. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/helpers.py +0 -0
  119. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/_gallery_utils/scenario_picker.py +0 -0
  120. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/experimental_data/_analyze_results.py +0 -0
  121. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/experimental_data/_expanded_basis.py +0 -0
  122. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/experimental_data/generate_tweezer_csv.py +0 -0
  123. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/abp_align_demo.py +0 -0
  124. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/abp_nonreciprocal_demo.py +0 -0
  125. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/abp_to_spde_demo.py +0 -0
  126. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/advanced/flocking_3d_demo.py +0 -0
  127. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/advanced/multi_experiment_demo.py +0 -0
  128. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/advanced/nn_force_demo.py +0 -0
  129. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/anisotropic_diffusion_demo.py +0 -0
  130. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/custom_basis_demo.py +0 -0
  131. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/diagnostics_demo.py +0 -0
  132. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/dynamics_order_demo.py +0 -0
  133. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/entropy_production_demo.py +0 -0
  134. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/entropy_production_underdamped_demo.py +0 -0
  135. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/experimental_workflow_demo.py +0 -0
  136. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/gray_scott_demo.py +0 -0
  137. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/home_range_demo.py +0 -0
  138. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/limitcycle_demo.py +0 -0
  139. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/lorenz_demo.py +0 -0
  140. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/lotka_volterra_demo.py +0 -0
  141. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/multiplicative_diffusion_demo.py +0 -0
  142. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/ou_demo.py +0 -0
  143. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/time_dependent_forcing_demo.py +0 -0
  144. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/time_fourier_demo.py +0 -0
  145. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/van_der_pol_demo.py +0 -0
  146. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/gallery/velocity_dependent_noise_demo.py +0 -0
  147. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_align_demo.py +0 -0
  148. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_largescale_config.py +0 -0
  149. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_largescale_demo.py +0 -0
  150. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_largescale_infer.py +0 -0
  151. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_largescale_plot.py +0 -0
  152. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_largescale_simulate.py +0 -0
  153. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/examples/manual_examples/abp_pursuit_demo.py +0 -0
  154. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/setup.cfg +0 -0
  155. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/tests/test_dual_mask.py +0 -0
  156. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/tests/test_parametric_mask.py +0 -0
  157. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/tests/test_parametric_mask_abp.py +0 -0
  158. {stochasticforceinference-2.0.1 → stochasticforceinference-2.0.2}/tests/test_same_particle_jacobian.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: StochasticForceInference
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Stochastic Force Inference for Langevin SDEs
5
5
  Author-email: Pierre Ronceray <pierre.ronceray@univ-amu.fr>
6
6
  License: MIT
@@ -1069,7 +1069,16 @@ class OverdampedLangevinInference(BaseLangevinInference):
1069
1069
 
1070
1070
  M_a^{\text{S}} = \tfrac{1}{2}\bigl\langle v_t \cdot A^{-1}
1071
1071
  \cdot \bigl[b_a(X_t) + b_a(X_{t+1})\bigr] \bigr\rangle
1072
- \;-\; \bigl\langle D_{\text{inst}} : (A^{-1} \cdot \nabla_x b_a) \bigr\rangle
1072
+ \;-\; \bigl\langle (D_{\text{inst}}\,A^{-1})_{kl}\,
1073
+ \partial_k (b_a)_l \bigr\rangle
1074
+
1075
+ where :math:`k` is the derivative index and :math:`l` the output
1076
+ (force) index of :math:`\nabla_x b_a`. The matrix acting on the
1077
+ Jacobian is :math:`D_{\text{inst}}\,A^{-1}` in this order: contracting
1078
+ :math:`D_{\text{inst}}` with the output index instead would give
1079
+ :math:`A^{-1} D_{\text{inst}}`, which differs whenever
1080
+ :math:`[A^{-1}, D_{\text{inst}}] \neq 0` (anisotropic, non-aligned
1081
+ instantaneous diffusion with a non-trivial decorrelating Gram).
1073
1082
 
1074
1083
  The force coefficients solve :math:`G \cdot C = M`
1075
1084
  where :math:`G_{ab} = \langle b_a \cdot b_b \rangle` (with mode variants).
@@ -1087,11 +1096,16 @@ class OverdampedLangevinInference(BaseLangevinInference):
1087
1096
  trapezoid average over X and X_plus, same rhs contraction on each, then 0.5*(...+...)
1088
1097
 
1089
1098
  - Stratonovich gradient correction:
1090
- eq='imn,ioma,no->ia' with ops (D, G, A)
1099
+ eq='imn,inoa,om->ia' with ops (D, G, A)
1091
1100
  shapes:
1092
1101
  D: (i, m, n) instantaneous diffusion (N, d, d) e.g. noisy
1093
- G: (i, o, m, a) basis.d_x()(X) shape (N, d_deriv, d_force, F)
1094
- A: (m, n) A_inv (d, d)
1102
+ G: (i, n, o, a) basis.d_x()(X) shape (N, d_deriv, d_force, F)
1103
+ A: (o, m) A_inv (d, d)
1104
+ The derivative axis n of G is contracted with D and the output
1105
+ (force) axis o with A_inv, i.e. the correction is
1106
+ (D_inst . A_inv) : grad b. Contracting D with the output axis
1107
+ instead computes A_inv . D_inst, which differs whenever D_inst and
1108
+ A_inv do not commute.
1095
1109
 
1096
1110
  Masking
1097
1111
  -------
@@ -1159,7 +1173,7 @@ class OverdampedLangevinInference(BaseLangevinInference):
1159
1173
  exprs=[G],
1160
1174
  times=[D],
1161
1175
  consts=[A],
1162
- terms=[Term(eq="imn,ioma,no->ia", ops=(D.alias, "G", "A"))],
1176
+ terms=[Term(eq="imn,inoa,om->ia", ops=(D.alias, "G", "A"))],
1163
1177
  )
1164
1178
  self._force_D_grad_b_average = integrate(
1165
1179
  self.data, prog_grad, reduce="sum", chunk_target_bytes=self._chunk_target_bytes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: StochasticForceInference
3
- Version: 2.0.1
3
+ Version: 2.0.2
4
4
  Summary: Stochastic Force Inference for Langevin SDEs
5
5
  Author-email: Pierre Ronceray <pierre.ronceray@univ-amu.fr>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "StochasticForceInference"
7
- version = "2.0.1"
7
+ version = "2.0.2"
8
8
  description = "Stochastic Force Inference for Langevin SDEs"
9
9
  authors = [{name = "Pierre Ronceray", email = "pierre.ronceray@univ-amu.fr"}]
10
10
  readme = "README.md"