Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht

### Added
- Initial public release of Jump-Diffusion-Engine.
- Core simulation and stochastic stability analysis methods in `jump_diffusion_engine.py`.
- Core simulation and stochastic stability analysis methods in the `jump_diffusion_engine` package.
- Automated test suite and CI workflow for Python 3.9–3.12.
- Packaging metadata for setuptools-based builds.

5 changes: 4 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,15 @@
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format in question. We also recommend
that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2026 S.M.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ subject to continuous diffusion and discrete jump noise.
- `f(Δ) = kΔ + gΔ²/(K²+Δ²)` — the nonlinear sink (linear + saturating)
- `Δ* : Λ = f(Δ), f′(Δ*) > 0` — a stable equilibrium (basin centre)

Use `jump_diffusion_engine.py` to **analyse** stochastic systems and **steer** trajectories toward stable basins:
Use the `jump_diffusion_engine/` package to **analyse** stochastic systems and **steer** trajectories toward stable basins:

| # | Action | Method | What it does |
|:-|:---|:---|:---|
Expand Down Expand Up @@ -47,7 +47,7 @@ Replace `v0.1.0` with the tag you want. All releases are listed on the
```bash
git clone https://github.com/beanapologist/Jump-Diffusion-Engine.git
cd Jump-Diffusion-Engine
pip install -e .
pip install -e ".[dev]"
```

**Manual dependency install**
Expand All @@ -58,7 +58,7 @@ If you prefer not to install the package, install dependencies directly:
pip install numpy scipy matplotlib
```

Then add the repository root to your Python path and import:
Then add the repository root to your Python path and import from the package:

```python
from jump_diffusion_engine import JumpDiffusionEngine
Expand Down
3 changes: 3 additions & 0 deletions jump_diffusion_engine/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .engine import JumpDiffusionEngine

__all__ = ["JumpDiffusionEngine"]
File renamed without changes.
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ Changelog = "https://github.com/beanapologist/Jump-Diffusion-Engine/blob/main/CH
[project.optional-dependencies]
dev = ["pytest>=7.0"]

[tool.setuptools]
py-modules = ["jump_diffusion_engine"]
[tool.setuptools.packages.find]
include = ["jump_diffusion_engine"]

[tool.pytest.ini_options]
testpaths = ["tests"]
10 changes: 5 additions & 5 deletions tests/test_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@
"""
import numpy as np
import pytest
import sys
import os

# Allow importing engine from the repo root when running with pytest from any cwd
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))

from jump_diffusion_engine import JumpDiffusionEngine

Expand All @@ -33,6 +28,11 @@ def engine():
)


def test_public_import_uses_package_layout():
"""The public import should resolve through the dedicated package."""
assert JumpDiffusionEngine.__module__ == "jump_diffusion_engine.engine"


# ---------------------------------------------------------------------------
# find_fixed_points
# ---------------------------------------------------------------------------
Expand Down
Loading