torchdeltaflow 0.2.1__tar.gz → 0.2.3.dev21__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.
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/.github/workflows/ci.yml +25 -25
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/.github/workflows/docs.yml +43 -43
- torchdeltaflow-0.2.3.dev21/.github/workflows/publish.yml +78 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/.gitignore +83 -82
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/CHANGELOG.md +94 -58
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/CITATION.cff +11 -11
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/CODE_OF_CONDUCT.md +28 -28
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/CONTRIBUTING.md +26 -26
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/LICENSE +21 -21
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/MANIFEST.in +4 -4
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/PKG-INFO +519 -438
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/README.md +442 -362
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/benchmarks/README.md +7 -7
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/__init__.py +43 -40
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/__init__.py +24 -18
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/base.py +8 -8
- torchdeltaflow-0.2.3.dev21/deltaflow/core/base_coupling.py +22 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/core/base_equilibrium_field.py +31 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/core/base_equilibrium_interpolant.py +41 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/base_interpolant.py +26 -26
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/base_loss.py +19 -19
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/base_solver.py +76 -76
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/core/base_velocity_field.py +20 -20
- torchdeltaflow-0.2.3.dev21/deltaflow/datasets/__init__.py +17 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/datasets/radiograph.py +250 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/interpolants/__init__.py +19 -13
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/base.py +7 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/equilibrium.py +121 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/linear.py +49 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/ot.py +84 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/schrodinger_bridge.py +135 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/interpolants/variance_preserving.py +69 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/inverse/__init__.py +36 -36
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/inverse/likelihood.py +100 -86
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/inverse/operators.py +94 -93
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/inverse/tweedie.py +102 -91
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/losses/__init__.py +13 -11
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/losses/conditional_flow_matching.py +86 -74
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/losses/delta_alignment.py +162 -139
- torchdeltaflow-0.2.3.dev21/deltaflow/losses/equilibrium_matching.py +97 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/losses/flow_matching.py +7 -7
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/models/__init__.py +13 -13
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/models/backbone.py +110 -110
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/models/ema.py +28 -28
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/models/projector.py +96 -96
- torchdeltaflow-0.2.3.dev21/deltaflow/samplers/__init__.py +15 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/samplers/euler.py +8 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/solvers/__init__.py +19 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/solvers/euler.py +69 -61
- torchdeltaflow-0.2.3.dev21/deltaflow/solvers/gradient_descent.py +129 -0
- torchdeltaflow-0.2.3.dev21/deltaflow/solvers/heun.py +41 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/solvers/posterior_solver.py +130 -104
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/trainer/__init__.py +18 -18
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/trainer/coupling.py +50 -57
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/trainer/data.py +104 -104
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/trainer/loop.py +269 -269
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/utils/__init__.py +25 -23
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/deltaflow/utils/numerical.py +66 -66
- torchdeltaflow-0.2.3.dev21/deltaflow/utils/ot.py +52 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/core.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/datasets.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/index.md +18 -18
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/interpolants.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/inverse.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/losses.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/models.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/samplers.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/solvers.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/trainer.md +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/api/utils.md +3 -3
- torchdeltaflow-0.2.3.dev21/docs/assets/algorithm-comparison/comparison.gif +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/algorithm-comparison/comparison.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/algorithm-comparison/trajectories_comparison.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/css/extra.css +139 -139
- torchdeltaflow-0.2.3.dev21/docs/assets/equilibrium-matching/energy_landscape.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/equilibrium-matching/eqm_sampling.gif +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/equilibrium-matching/gd_snapshots.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/equilibrium-matching/gd_trajectories.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/guidance-alignment/features.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/js/mathjax.js +19 -19
- torchdeltaflow-0.2.3.dev21/docs/assets/landmark-detection/landmark_detection.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/logo.svg +77 -77
- torchdeltaflow-0.2.3.dev21/docs/assets/schrodinger-bridge/bridge_paths.gif +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/schrodinger-bridge/bridge_paths.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/schrodinger-bridge/sb_flow.gif +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/schrodinger-bridge/sb_snapshots.png +0 -0
- torchdeltaflow-0.2.3.dev21/docs/assets/schrodinger-bridge/sb_trajectories.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/concepts/architecture.md +75 -75
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/contributing.md +43 -43
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/examples.md +483 -289
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/getting-started/installation.md +50 -46
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/getting-started/quickstart.md +53 -53
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/guides/delta-alignment.md +54 -54
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/guides/flow-matching.md +71 -62
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/guides/inverse-problems.md +66 -66
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/guides/training.md +55 -54
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/index.md +126 -84
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/00-foundations/01-linear-interpolant/main.py +34 -34
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/10-sampling/01-euler-flow/main.py +60 -60
- torchdeltaflow-0.2.3.dev21/examples/10-sampling/02-equilibrium-matching/main.py +72 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/20-training/01-flow-matching/main.py +47 -47
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/20-training/02-delta-alignment/main.py +51 -51
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/30-inverse/01-posterior/main.py +146 -146
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/90-showcase/01-landmark-viz/main.py +253 -253
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/90-showcase/02-sampling-flow-viz/main.py +363 -363
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/90-showcase/03-minibatch-ot-viz/main.py +137 -137
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/90-showcase/04-inverse-posterior-viz/main.py +175 -175
- torchdeltaflow-0.2.3.dev21/examples/90-showcase/05-schrodinger-bridge-viz/main.py +379 -0
- torchdeltaflow-0.2.3.dev21/examples/90-showcase/06-algorithm-comparison/main.py +254 -0
- torchdeltaflow-0.2.3.dev21/examples/90-showcase/07-landmark-detection/main.py +477 -0
- torchdeltaflow-0.2.3.dev21/examples/90-showcase/08-guidance-alignment-pretraining/main.py +377 -0
- torchdeltaflow-0.2.3.dev21/examples/90-showcase/09-equilibrium-matching-viz/main.py +371 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/examples/90-showcase/README.md +7 -7
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/mkdocs.yml +133 -133
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/overrides/main.html +39 -39
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/pyproject.toml +119 -110
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/requirements-docs.txt +3 -3
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/requirements.txt +4 -4
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/setup.cfg +4 -4
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/conftest.py +18 -18
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_coupling.py +100 -58
- torchdeltaflow-0.2.3.dev21/tests/test_equilibrium.py +219 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_interpolants.py +28 -28
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_interpolants_new.py +108 -62
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_inverse.py +94 -94
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_losses.py +31 -31
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_models.py +38 -38
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_samplers.py +26 -26
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_solvers.py +91 -91
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/test_trainer.py +65 -65
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/torchdeltaflow.egg-info/PKG-INFO +519 -438
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/torchdeltaflow.egg-info/SOURCES.txt +30 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/torchdeltaflow.egg-info/requires.txt +1 -0
- torchdeltaflow-0.2.3.dev21/torchdeltaflow.egg-info/scm_file_list.json +143 -0
- torchdeltaflow-0.2.3.dev21/torchdeltaflow.egg-info/scm_version.json +8 -0
- torchdeltaflow-0.2.1/deltaflow/datasets/__init__.py +0 -10
- torchdeltaflow-0.2.1/deltaflow/datasets/radiograph.py +0 -97
- torchdeltaflow-0.2.1/deltaflow/interpolants/base.py +0 -7
- torchdeltaflow-0.2.1/deltaflow/interpolants/linear.py +0 -32
- torchdeltaflow-0.2.1/deltaflow/interpolants/ot.py +0 -90
- torchdeltaflow-0.2.1/deltaflow/interpolants/variance_preserving.py +0 -40
- torchdeltaflow-0.2.1/deltaflow/samplers/__init__.py +0 -7
- torchdeltaflow-0.2.1/deltaflow/samplers/euler.py +0 -8
- torchdeltaflow-0.2.1/deltaflow/solvers/__init__.py +0 -11
- torchdeltaflow-0.2.1/deltaflow/solvers/heun.py +0 -34
- torchdeltaflow-0.2.1/torchdeltaflow.egg-info/scm_file_list.json +0 -113
- torchdeltaflow-0.2.1/torchdeltaflow.egg-info/scm_version.json +0 -8
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/favicon.ico +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/favicon.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/inverse-posterior/inverse_posterior.gif +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/inverse-posterior/inverse_posterior.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/minibatch-ot/minibatch_ot.gif +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/minibatch-ot/minibatch_ot.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/sampling-flow/flow.gif +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/sampling-flow/snapshots.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/sampling-flow/trajectories.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/docs/assets/sampling-flow/velocity_field.png +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/tests/__init__.py +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/torchdeltaflow.egg-info/dependency_links.txt +0 -0
- {torchdeltaflow-0.2.1 → torchdeltaflow-0.2.3.dev21}/torchdeltaflow.egg-info/top_level.txt +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
test:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
strategy:
|
|
13
|
-
matrix:
|
|
14
|
-
python-version: ["3.10", "3.11", "3.12"]
|
|
15
|
-
steps:
|
|
16
|
-
- uses: actions/checkout@v4
|
|
17
|
-
- uses: actions/setup-python@v5
|
|
18
|
-
with:
|
|
19
|
-
python-version: ${{ matrix.python-version }}
|
|
20
|
-
- name: Install
|
|
21
|
-
run: |
|
|
22
|
-
python -m pip install --upgrade pip
|
|
23
|
-
pip install -e ".[dev]"
|
|
24
|
-
- name: Test
|
|
25
|
-
run: pytest --cov=deltaflow
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: ${{ matrix.python-version }}
|
|
20
|
+
- name: Install
|
|
21
|
+
run: |
|
|
22
|
+
python -m pip install --upgrade pip
|
|
23
|
+
pip install -e ".[dev]"
|
|
24
|
+
- name: Test
|
|
25
|
+
run: pytest --cov=deltaflow
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
name: docs
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
workflow_dispatch:
|
|
7
|
-
|
|
8
|
-
permissions:
|
|
9
|
-
contents: read
|
|
10
|
-
pages: write
|
|
11
|
-
id-token: write
|
|
12
|
-
|
|
13
|
-
concurrency:
|
|
14
|
-
group: pages
|
|
15
|
-
cancel-in-progress: false
|
|
16
|
-
|
|
17
|
-
jobs:
|
|
18
|
-
build:
|
|
19
|
-
runs-on: ubuntu-latest
|
|
20
|
-
steps:
|
|
21
|
-
- uses: actions/checkout@v4
|
|
22
|
-
- uses: actions/setup-python@v5
|
|
23
|
-
with:
|
|
24
|
-
python-version: "3.12"
|
|
25
|
-
- name: Install
|
|
26
|
-
run: |
|
|
27
|
-
python -m pip install --upgrade pip
|
|
28
|
-
pip install -e ".[docs]"
|
|
29
|
-
- name: Build site
|
|
30
|
-
run: mkdocs build --strict
|
|
31
|
-
- uses: actions/upload-pages-artifact@v3
|
|
32
|
-
with:
|
|
33
|
-
path: site
|
|
34
|
-
|
|
35
|
-
deploy:
|
|
36
|
-
needs: build
|
|
37
|
-
runs-on: ubuntu-latest
|
|
38
|
-
environment:
|
|
39
|
-
name: github-pages
|
|
40
|
-
url: ${{ steps.deployment.outputs.page_url }}
|
|
41
|
-
steps:
|
|
42
|
-
- id: deployment
|
|
43
|
-
uses: actions/deploy-pages@v4
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pages
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
- name: Install
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip
|
|
28
|
+
pip install -e ".[docs]"
|
|
29
|
+
- name: Build site
|
|
30
|
+
run: mkdocs build --strict
|
|
31
|
+
- uses: actions/upload-pages-artifact@v3
|
|
32
|
+
with:
|
|
33
|
+
path: site
|
|
34
|
+
|
|
35
|
+
deploy:
|
|
36
|
+
needs: build
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
environment:
|
|
39
|
+
name: github-pages
|
|
40
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
41
|
+
steps:
|
|
42
|
+
- id: deployment
|
|
43
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
# Publishes torchdeltaflow to PyPI in two cases:
|
|
4
|
+
#
|
|
5
|
+
# 1. A version tag (e.g. v0.2.2) is pushed -> a stable release. The version is
|
|
6
|
+
# derived from the tag by setuptools_scm, so the tag is the single source
|
|
7
|
+
# of truth. To cut a release, run:
|
|
8
|
+
#
|
|
9
|
+
# git tag v0.2.2
|
|
10
|
+
# git push origin v0.2.2
|
|
11
|
+
#
|
|
12
|
+
# 2. A pull request is merged into main -> a dev pre-release. setuptools_scm
|
|
13
|
+
# derives a clean PEP 440 version from the commit distance to the last tag
|
|
14
|
+
# (e.g. "0.2.3.dev4"), which is unique per merge. "skip-existing" below
|
|
15
|
+
# guards against the rare case where the same version was already uploaded.
|
|
16
|
+
#
|
|
17
|
+
# Authentication uses a PyPI API token stored as the repository secret
|
|
18
|
+
# PYPI_API_TOKEN. Create the token at https://pypi.org/manage/account/token/
|
|
19
|
+
# (scope it to the torchdeltaflow project), then add it under
|
|
20
|
+
# Settings > Secrets and variables > Actions as PYPI_API_TOKEN.
|
|
21
|
+
|
|
22
|
+
on:
|
|
23
|
+
push:
|
|
24
|
+
tags:
|
|
25
|
+
- "v*"
|
|
26
|
+
pull_request:
|
|
27
|
+
branches: [main]
|
|
28
|
+
types: [closed]
|
|
29
|
+
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
build:
|
|
35
|
+
# Run for pushed version tags, or when a PR is actually merged (not just
|
|
36
|
+
# closed). Plain "closed" without merge must not publish.
|
|
37
|
+
if: github.event_name == 'push' || github.event.pull_request.merged == true
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v4
|
|
41
|
+
with:
|
|
42
|
+
# setuptools_scm needs the full history and tags to derive the version.
|
|
43
|
+
fetch-depth: 0
|
|
44
|
+
fetch-tags: true
|
|
45
|
+
- uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.12"
|
|
48
|
+
- name: Build sdist and wheel
|
|
49
|
+
run: |
|
|
50
|
+
python -m pip install --upgrade pip build
|
|
51
|
+
python -m build
|
|
52
|
+
- name: Check distributions
|
|
53
|
+
run: |
|
|
54
|
+
python -m pip install --upgrade twine
|
|
55
|
+
python -m twine check dist/*
|
|
56
|
+
- uses: actions/upload-artifact@v4
|
|
57
|
+
with:
|
|
58
|
+
name: dist
|
|
59
|
+
path: dist/
|
|
60
|
+
|
|
61
|
+
publish:
|
|
62
|
+
needs: build
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
environment:
|
|
65
|
+
name: pypi
|
|
66
|
+
url: https://pypi.org/project/torchdeltaflow/
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/download-artifact@v4
|
|
69
|
+
with:
|
|
70
|
+
name: dist
|
|
71
|
+
path: dist/
|
|
72
|
+
- name: Publish to PyPI
|
|
73
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
74
|
+
with:
|
|
75
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
76
|
+
# Merge builds may reproduce an existing dev version if no new commits
|
|
77
|
+
# changed the distance to the last tag. Skip rather than fail.
|
|
78
|
+
skip-existing: true
|
|
@@ -1,82 +1,83 @@
|
|
|
1
|
-
# --- Python ---
|
|
2
|
-
__pycache__/
|
|
3
|
-
*.py[cod]
|
|
4
|
-
*.pyo
|
|
5
|
-
*.pyd
|
|
6
|
-
*$py.class
|
|
7
|
-
.Python
|
|
8
|
-
|
|
9
|
-
# --- Build / packaging ---
|
|
10
|
-
build/
|
|
11
|
-
dist/
|
|
12
|
-
wheels/
|
|
13
|
-
*.egg-info/
|
|
14
|
-
*.egg
|
|
15
|
-
.eggs/
|
|
16
|
-
pip-wheel-metadata/
|
|
17
|
-
MANIFEST
|
|
18
|
-
|
|
19
|
-
# setuptools_scm writes deltaflow/_version.py; keep it out of git
|
|
20
|
-
deltaflow/_version.py
|
|
21
|
-
|
|
22
|
-
# --- Virtual environments ---
|
|
23
|
-
venv/
|
|
24
|
-
.venv/
|
|
25
|
-
env/
|
|
26
|
-
.env
|
|
27
|
-
.env.*
|
|
28
|
-
|
|
29
|
-
# --- Testing / coverage ---
|
|
30
|
-
.pytest_cache/
|
|
31
|
-
.coverage
|
|
32
|
-
.coverage.*
|
|
33
|
-
htmlcov/
|
|
34
|
-
coverage.xml
|
|
35
|
-
.tox/
|
|
36
|
-
.nox/
|
|
37
|
-
.hypothesis/
|
|
38
|
-
|
|
39
|
-
# --- Type checkers / linters ---
|
|
40
|
-
.mypy_cache/
|
|
41
|
-
.pyright/
|
|
42
|
-
.ruff_cache/
|
|
43
|
-
.pytype/
|
|
44
|
-
|
|
45
|
-
# --- Docs ---
|
|
46
|
-
site/
|
|
47
|
-
docs/_build/
|
|
48
|
-
|
|
49
|
-
# --- Jupyter ---
|
|
50
|
-
.ipynb_checkpoints/
|
|
51
|
-
|
|
52
|
-
# --- Training artifacts (created by deltaflow.trainer + examples) ---
|
|
53
|
-
checkpoints/
|
|
54
|
-
outputs/
|
|
55
|
-
runs/
|
|
56
|
-
wandb/
|
|
57
|
-
logs/
|
|
58
|
-
*.pt
|
|
59
|
-
*.pth
|
|
60
|
-
*.ckpt
|
|
61
|
-
*.safetensors
|
|
62
|
-
|
|
63
|
-
# --- Data ---
|
|
64
|
-
data/
|
|
65
|
-
datasets/local/
|
|
66
|
-
*.h5
|
|
67
|
-
*.hdf5
|
|
68
|
-
*.npy
|
|
69
|
-
*.npz
|
|
70
|
-
|
|
71
|
-
# --- Local agent instructions (not shared) ---
|
|
72
|
-
.github/copilot-instructions.md
|
|
73
|
-
|
|
74
|
-
# --- OS / editor ---
|
|
75
|
-
.DS_Store
|
|
76
|
-
Thumbs.db
|
|
77
|
-
Desktop.ini
|
|
78
|
-
*.swp
|
|
79
|
-
*.swo
|
|
80
|
-
.idea/
|
|
81
|
-
.vscode/
|
|
82
|
-
*.log
|
|
1
|
+
# --- Python ---
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.pyo
|
|
5
|
+
*.pyd
|
|
6
|
+
*$py.class
|
|
7
|
+
.Python
|
|
8
|
+
|
|
9
|
+
# --- Build / packaging ---
|
|
10
|
+
build/
|
|
11
|
+
dist/
|
|
12
|
+
wheels/
|
|
13
|
+
*.egg-info/
|
|
14
|
+
*.egg
|
|
15
|
+
.eggs/
|
|
16
|
+
pip-wheel-metadata/
|
|
17
|
+
MANIFEST
|
|
18
|
+
|
|
19
|
+
# setuptools_scm writes deltaflow/_version.py; keep it out of git
|
|
20
|
+
deltaflow/_version.py
|
|
21
|
+
|
|
22
|
+
# --- Virtual environments ---
|
|
23
|
+
venv/
|
|
24
|
+
.venv/
|
|
25
|
+
env/
|
|
26
|
+
.env
|
|
27
|
+
.env.*
|
|
28
|
+
|
|
29
|
+
# --- Testing / coverage ---
|
|
30
|
+
.pytest_cache/
|
|
31
|
+
.coverage
|
|
32
|
+
.coverage.*
|
|
33
|
+
htmlcov/
|
|
34
|
+
coverage.xml
|
|
35
|
+
.tox/
|
|
36
|
+
.nox/
|
|
37
|
+
.hypothesis/
|
|
38
|
+
|
|
39
|
+
# --- Type checkers / linters ---
|
|
40
|
+
.mypy_cache/
|
|
41
|
+
.pyright/
|
|
42
|
+
.ruff_cache/
|
|
43
|
+
.pytype/
|
|
44
|
+
|
|
45
|
+
# --- Docs ---
|
|
46
|
+
site/
|
|
47
|
+
docs/_build/
|
|
48
|
+
|
|
49
|
+
# --- Jupyter ---
|
|
50
|
+
.ipynb_checkpoints/
|
|
51
|
+
|
|
52
|
+
# --- Training artifacts (created by deltaflow.trainer + examples) ---
|
|
53
|
+
checkpoints/
|
|
54
|
+
outputs/
|
|
55
|
+
runs/
|
|
56
|
+
wandb/
|
|
57
|
+
logs/
|
|
58
|
+
*.pt
|
|
59
|
+
*.pth
|
|
60
|
+
*.ckpt
|
|
61
|
+
*.safetensors
|
|
62
|
+
|
|
63
|
+
# --- Data ---
|
|
64
|
+
data/
|
|
65
|
+
datasets/local/
|
|
66
|
+
*.h5
|
|
67
|
+
*.hdf5
|
|
68
|
+
*.npy
|
|
69
|
+
*.npz
|
|
70
|
+
|
|
71
|
+
# --- Local agent instructions (not shared) ---
|
|
72
|
+
.github/copilot-instructions.md
|
|
73
|
+
|
|
74
|
+
# --- OS / editor ---
|
|
75
|
+
.DS_Store
|
|
76
|
+
Thumbs.db
|
|
77
|
+
Desktop.ini
|
|
78
|
+
*.swp
|
|
79
|
+
*.swo
|
|
80
|
+
.idea/
|
|
81
|
+
.vscode/
|
|
82
|
+
*.log
|
|
83
|
+
SUMMARY.md
|
|
@@ -1,58 +1,94 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project are documented here.
|
|
4
|
-
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
-
|
|
6
|
-
## [Unreleased]
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## [0.2.
|
|
17
|
-
|
|
18
|
-
### Added
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
- `deltaflow.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- Showcase
|
|
34
|
-
`
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- `scipy` is now a core dependency (previously gated behind the `ot`
|
|
11
|
+
extra), so `OTInterpolant`/`OTCoupling` use the exact Hungarian-algorithm
|
|
12
|
+
mini-batch OT assignment by default. The `ot` extra is kept as a
|
|
13
|
+
backwards-compatible no-op, and the greedy nearest-neighbour matcher
|
|
14
|
+
remains as a defensive fallback if `scipy` is ever missing.
|
|
15
|
+
|
|
16
|
+
## [0.2.2]
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- API-reference docstrings now include the underlying mathematics in
|
|
21
|
+
LaTeX (rendered via MathJax/arithmatex): probability paths and target
|
|
22
|
+
velocities for the interpolants (`Linear`, `VariancePreserving`, `OT`,
|
|
23
|
+
`SchrodingerBridge`), the Euler/Heun update rules, the DPS posterior-solver
|
|
24
|
+
step, the conditional-flow-matching and delta-alignment objectives, the
|
|
25
|
+
`LinearTweedie`/`VPTweedie` inversions, and the Gaussian likelihood.
|
|
26
|
+
|
|
27
|
+
- `deltaflow.interpolants.SchrodingerBridgeInterpolant`: an entropic
|
|
28
|
+
Schrödinger-bridge probability path (a Brownian bridge with tunable
|
|
29
|
+
diffusivity `sigma` around the straight-line mean). `sigma=0` recovers
|
|
30
|
+
`LinearInterpolant` exactly. Intended to be paired with
|
|
31
|
+
`deltaflow.trainer.OTCoupling` for a simulation-free approximation of the
|
|
32
|
+
dynamic Schrödinger bridge.
|
|
33
|
+
- Showcase example `05-schrodinger-bridge-viz`: visualises the bridge path
|
|
34
|
+
at increasing `sigma` (`bridge_paths.png` static, `bridge_paths.gif`
|
|
35
|
+
animated), then trains a velocity field against it (with `OTCoupling`)
|
|
36
|
+
and inspects the resulting sampler on a two-moons target.
|
|
37
|
+
- Showcase example `06-algorithm-comparison`: trains the same model on the
|
|
38
|
+
same target under all four interpolant/coupling configurations (linear
|
|
39
|
+
independent, OT coupling, variance-preserving, Schrödinger bridge) and
|
|
40
|
+
compares final samples, sampled trajectories, and an animated side-by-side
|
|
41
|
+
sampling GIF. A README section ("Comparing the paths") links these
|
|
42
|
+
figures, alongside the Schrödinger-bridge sampling animation.
|
|
43
|
+
|
|
44
|
+
## [0.2.1]
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- README images used relative paths (`docs/assets/...`), which don't resolve
|
|
49
|
+
on PyPI's standalone README renderer. Switched to absolute
|
|
50
|
+
`raw.githubusercontent.com` URLs so images load correctly on PyPI.
|
|
51
|
+
|
|
52
|
+
## [0.2.0]
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- `deltaflow.interpolants.OTInterpolant`: the linear path applied after a
|
|
57
|
+
mini-batch optimal-transport re-ordering of `x0`.
|
|
58
|
+
- `deltaflow.trainer` couplings: `IndependentCoupling` and `OTCoupling`
|
|
59
|
+
(Hungarian assignment, greedy fallback) plus `ConditionalFlowMatchingLoss`.
|
|
60
|
+
- `deltaflow.solvers`: `EulerSolver`, `HeunSolver` (second-order integration),
|
|
61
|
+
and `PosteriorSolver`, which wraps a base solver with a per-step
|
|
62
|
+
measurement-likelihood gradient.
|
|
63
|
+
- `deltaflow.inverse`: measurement operators (`MaskOperator`, `BlurOperator`,
|
|
64
|
+
`DownsampleOperator`, `IdentityOperator`), Tweedie estimators
|
|
65
|
+
(`LinearTweedie`, `VPTweedie`), and `GaussianLikelihood` with an optional
|
|
66
|
+
decoder pullback for the latent-space case.
|
|
67
|
+
- `deltaflow.interpolants.VariancePreservingInterpolant` (trigonometric
|
|
68
|
+
diffusion path).
|
|
69
|
+
- Showcase examples: `01-landmark-viz`, `02-sampling-flow-viz`,
|
|
70
|
+
`03-minibatch-ot-viz`, `04-inverse-posterior-viz`, reproducing the README
|
|
71
|
+
figures and animations.
|
|
72
|
+
- MkDocs Material documentation site (`docs/`), published via
|
|
73
|
+
`.github/workflows/docs.yml`.
|
|
74
|
+
- Animated logo, favicon, and algorithm figures under `docs/assets/`.
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
|
|
78
|
+
- Rewrote `README.md` in a component-table style with paper references,
|
|
79
|
+
visuals, and per-method usage snippets (flow matching, OT couplings,
|
|
80
|
+
variance-preserving path, delta alignment, posterior sampling).
|
|
81
|
+
- Fixed paper attributions and introduced a `Likelihood` protocol in
|
|
82
|
+
`deltaflow.inverse`.
|
|
83
|
+
|
|
84
|
+
## [0.1.0]
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
|
|
88
|
+
- Initial scaffold: `core`, `interpolants` (`LinearInterpolant`), `samplers`
|
|
89
|
+
(`FlowSampler`), `losses` (`FlowMatchingLoss`, `DeltaAlignmentLoss`),
|
|
90
|
+
`models` (`MultiScaleProjector`, `EMA`), `datasets` (generic radiograph
|
|
91
|
+
wrappers).
|
|
92
|
+
- Tiered examples (`00-foundations`, `10-sampling`, `20-training`,
|
|
93
|
+
`90-showcase`).
|
|
94
|
+
- Unit tests for interpolants, samplers, losses, and models.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
cff-version: 1.2.0
|
|
2
|
-
message: "If you use this software, please cite it as below."
|
|
3
|
-
title: "torchDeltaFlow: Flow Matching, Optimal-Transport Coupling, and Posterior Sampling for Inverse Problems in PyTorch"
|
|
4
|
-
authors:
|
|
5
|
-
- family-names: "Limbunlom"
|
|
6
|
-
given-names: "Phrugsa"
|
|
7
|
-
email: "phrugsa.lim@gmail.com"
|
|
8
|
-
date-released: 2026-07-22
|
|
9
|
-
url: "https://github.com/phrugsa-limbunlom/deltaflow"
|
|
10
|
-
repository-code: "https://github.com/phrugsa-limbunlom/deltaflow"
|
|
11
|
-
license: MIT
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use this software, please cite it as below."
|
|
3
|
+
title: "torchDeltaFlow: Flow Matching, Optimal-Transport Coupling, and Posterior Sampling for Inverse Problems in PyTorch"
|
|
4
|
+
authors:
|
|
5
|
+
- family-names: "Limbunlom"
|
|
6
|
+
given-names: "Phrugsa"
|
|
7
|
+
email: "phrugsa.lim@gmail.com"
|
|
8
|
+
date-released: 2026-07-22
|
|
9
|
+
url: "https://github.com/phrugsa-limbunlom/deltaflow"
|
|
10
|
+
repository-code: "https://github.com/phrugsa-limbunlom/deltaflow"
|
|
11
|
+
license: MIT
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# Contributor Covenant Code of Conduct
|
|
2
|
-
|
|
3
|
-
## Our Pledge
|
|
4
|
-
|
|
5
|
-
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
-
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
-
size, visible or invisible disability, ethnicity, sex characteristics,
|
|
8
|
-
gender identity and expression, level of experience, education,
|
|
9
|
-
socio-economic status, nationality, personal appearance, race, religion, or
|
|
10
|
-
sexual identity and orientation.
|
|
11
|
-
|
|
12
|
-
## Our Standards
|
|
13
|
-
|
|
14
|
-
Examples of behavior that contributes to a positive environment include
|
|
15
|
-
being respectful of differing opinions, giving and gracefully accepting
|
|
16
|
-
constructive feedback, and focusing on what is best for the community.
|
|
17
|
-
|
|
18
|
-
Examples of unacceptable behavior include harassment, insulting or
|
|
19
|
-
derogatory comments, and other conduct which could reasonably be considered
|
|
20
|
-
inappropriate in a professional setting.
|
|
21
|
-
|
|
22
|
-
## Enforcement
|
|
23
|
-
|
|
24
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
25
|
-
reported to the project maintainers. All complaints will be reviewed and
|
|
26
|
-
investigated promptly and fairly.
|
|
27
|
-
|
|
28
|
-
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics,
|
|
8
|
+
gender identity and expression, level of experience, education,
|
|
9
|
+
socio-economic status, nationality, personal appearance, race, religion, or
|
|
10
|
+
sexual identity and orientation.
|
|
11
|
+
|
|
12
|
+
## Our Standards
|
|
13
|
+
|
|
14
|
+
Examples of behavior that contributes to a positive environment include
|
|
15
|
+
being respectful of differing opinions, giving and gracefully accepting
|
|
16
|
+
constructive feedback, and focusing on what is best for the community.
|
|
17
|
+
|
|
18
|
+
Examples of unacceptable behavior include harassment, insulting or
|
|
19
|
+
derogatory comments, and other conduct which could reasonably be considered
|
|
20
|
+
inappropriate in a professional setting.
|
|
21
|
+
|
|
22
|
+
## Enforcement
|
|
23
|
+
|
|
24
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
25
|
+
reported to the project maintainers. All complaints will be reviewed and
|
|
26
|
+
investigated promptly and fairly.
|
|
27
|
+
|
|
28
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
Contributions are welcome. This project is small and research-oriented, so
|
|
4
|
-
please open an issue to discuss non-trivial changes before sending a PR.
|
|
5
|
-
|
|
6
|
-
## Setup
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
git clone https://github.com/yourname/deltaflow
|
|
10
|
-
cd deltaflow
|
|
11
|
-
pip install -e ".[dev]"
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
## Before opening a PR
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
black deltaflow tests examples
|
|
18
|
-
isort deltaflow tests examples
|
|
19
|
-
pytest
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Adding an example
|
|
23
|
-
|
|
24
|
-
Examples live under `examples/<tier>/<NN-name>/main.py`, where `<tier>` is
|
|
25
|
-
one of `00-foundations`, `10-sampling`, `20-training`, `90-showcase`. Each
|
|
26
|
-
example should run standalone in well under a minute on CPU.
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Contributions are welcome. This project is small and research-oriented, so
|
|
4
|
+
please open an issue to discuss non-trivial changes before sending a PR.
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
git clone https://github.com/yourname/deltaflow
|
|
10
|
+
cd deltaflow
|
|
11
|
+
pip install -e ".[dev]"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Before opening a PR
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
black deltaflow tests examples
|
|
18
|
+
isort deltaflow tests examples
|
|
19
|
+
pytest
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Adding an example
|
|
23
|
+
|
|
24
|
+
Examples live under `examples/<tier>/<NN-name>/main.py`, where `<tier>` is
|
|
25
|
+
one of `00-foundations`, `10-sampling`, `20-training`, `90-showcase`. Each
|
|
26
|
+
example should run standalone in well under a minute on CPU.
|