chore(copier): update from template - #105
Open
liblaf-copier[bot] wants to merge 109 commits into
Open
Conversation
…ctivation This commit introduces a set of scripts and data for inverse toy experiments, specifically focusing on forward simulations and muscle activation models. The additions include: - Generation scripts for initial data and configurations. - Multiple forward simulation implementations (`20-forward.py`, `20-forward-newton.py`, `20-forward-muscle.py`) to explore different solver methods and muscle models. - Data files including VTU/VTP meshes and simulation results. - A orchestration script `run-all.sh` to facilitate batch processing of experiments with varying parameters. These changes provide the foundational infrastructure for investigating inverse problems in tissue simulation. Why: These experiments are necessary to validate the forward model accuracy and establish a baseline for subsequent inverse optimization tasks.
Introduce a unified modeling architecture that supports both JAX and Warp energy terms within a single model. This change allows the framework to leverage JAX's flexible auto-differentiation and Warp's high-performance physics kernels where they are most effective, facilitating more complex simulation scenarios like prestrained mass-spring systems. - implement JaxEnergy and JaxModel to support JAX-native energy terms - add JaxMassSpring and JaxMassSpringPrestrain energy implementations - introduce WarpPhaceV2 and WarpVolumePreservationDeterminant for the Warp backend - refactor WarpElastic base class to support kernel overloading and improved material handling - update ModelBuilder to compose models from both JAX and Warp energy components - enhance WarpModelAdapter with value_and_grad support and improved JAX FFI integration - update experiment scripts and diagnostic settings to facilitate better debugging and simulation runs
Implement mesh generation, subface mass-spring simulations, and whole-mesh solvers for SMAS modeling. These scripts facilitate testing hierarchical simulation workflows where surface deformations drive volumetric results. Clean up Warp configuration and enable the optimization step in the inverse-toy forward script to transition from debugging to execution.
Add visualization figures for input data, Phace solutions, and SMAS solutions to document the results of the inverse modeling experiment.
Add SMAS_FRACTION constant and update ARAP energy kernels to support volume fraction scaling. This allows for modeling heterogeneous material compositions within a single mesh element, which is necessary for accurately simulating complex anatomical structures like the SMAS layer. - Implement SMAS geometry generation and volume fraction computation - Support scaling energy, gradient, and Hessian by volume fraction in Warp kernels - Fix launch dimensions for Hessian diagonal computations - Clean up Warp energy implementations and add experiments for SMAS simulation
- Add new inverse physics module with loss functions and adjoint solving - Add scene module with PHACE v3 implementation - Extract common material utilities from elastic energy functions - Consolidate warp energy function files into base implementations - Remove deprecated _phace_v2 implementation - Add model type definitions and scene builders - Update dependencies and configuration BREAKING CHANGE: Refactored warp elastic energy module structure
- adjust muscle and SMAS layer dimensions in mesh generation - increase stiffness constants (MU and LAMBDA) in Phace V3 model - update simulation scripts to support suffixed experimental outputs - add new VTU data files and visualization figures for SMAS experiments - update warp-lang dependency in lockfile Refine simulation geometry and material properties to improve accuracy and better organize experimental results across different configurations.
url: https://www.comet.com/liblaf/apple/af1d1c7273504bb2aab67bac7a11c5f1 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu outputs: - exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/19f667ae24654fddafa6f1792bfb37d6 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu inputs: - exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu
url: https://www.comet.com/liblaf/apple/52f0a256e597412c86ec37ec51f5f57a exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu inputs: - exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu outputs: - exp/2026/01/28/smas/data/30-inverse-whole-smas02-muscle02-act2.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-whole-smas02-muscle02-act2.vtu.series
url: https://www.comet.com/liblaf/apple/12d6ffc86d774e6796f4cd8fab6b23d5 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu inputs: - exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu outputs: - exp/2026/01/28/smas/data/30-inverse-unreachable-whole-smas02-muscle02-act2.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-unreachable-whole-smas02-muscle02-act2.vtu.series
url: https://www.comet.com/liblaf/apple/bf816a8eb8ca477b8e8f789de003d1b1 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu inputs: - exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-whole-smas02-muscle02-act2.vtu.series
url: https://www.comet.com/liblaf/apple/103468443470454b92e1a262d37506d1 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu inputs: - exp/2026/01/28/smas/data/20-forward-whole-smas02-muscle02-act2.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-whole-smas02-muscle02-act2.vtu.series
Refresh diff and solution PNGs to improve visual clarity and ensure the figures match the latest analysis output.
url: https://www.comet.com/liblaf/apple/8640797b5ccd412884214e5609981201 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu curr_step: 43 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/6dfc30bfd99647beabfd968fab237019 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu curr_step: 187 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/34f583710a954b7aa32bca352b5a6aea exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 172 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/034e956f6f2b4076824de78ad772cbf9 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 17 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/74c0fff49dbe4ddc8bbfe50b1cb0cdc3 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 73 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/43ac158f190b4914bb61426ace85f5b4 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 39 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/c1c204788e9a4a4c89a0dd6e9769598c exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 282 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/33fce96f96044911a4241a82679cc857 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse-test.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu curr_step: 270 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain-test.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain-test.vtu.series
url: https://www.comet.com/liblaf/apple/4e2f36d6fcfd47bb8062b5cd1f593164 exp_dir: exp/2026/03/11/test-inverse cwd: exp/2026/03/11/test-inverse cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/03/11/test-inverse/data/20-forward.vtu inputs: - exp/2026/03/11/test-inverse/data/20-forward.vtu
url: https://www.comet.com/liblaf/apple/3ff96e7d7dc9448284f04b90e29e321a exp_dir: exp/2026/03/11/test-inverse cwd: exp/2026/03/11/test-inverse cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/03/11/test-inverse/data/20-forward.vtu curr_step: 199 inputs: - exp/2026/03/11/test-inverse/data/20-forward.vtu temps: - exp/2026/03/11/test-inverse/temp/30-inverse.vtu.series
url: https://www.comet.com/liblaf/apple/a1c0ad14503b4daca70ced6634842c9b exp_dir: exp/2026/03/11/test-inverse cwd: exp/2026/03/11/test-inverse cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/03/11/test-inverse/data/20-forward.vtu curr_step: 376 inputs: - exp/2026/03/11/test-inverse/data/20-forward.vtu temps: - exp/2026/03/11/test-inverse/temp/30-inverse.vtu.series
url: https://www.comet.com/liblaf/apple/0628067a514c41d9971777371bc590bb exp_dir: exp/2026/03/11/test-inverse cwd: exp/2026/03/11/test-inverse cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/03/11/test-inverse/data/20-forward.vtu curr_step: 447 inputs: - exp/2026/03/11/test-inverse/data/20-forward.vtu temps: - exp/2026/03/11/test-inverse/temp/30-inverse.vtu.series
url: https://www.comet.com/liblaf/apple/244eb9c9c36941d7b83bfe76a3a739d9 exp_dir: exp/2026/03/11/test-inverse cwd: exp/2026/03/11/test-inverse cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/03/11/test-inverse/data/20-forward.vtu curr_step: 98 inputs: - exp/2026/03/11/test-inverse/data/20-forward.vtu temps: - exp/2026/03/11/test-inverse/temp/30-inverse.vtu.series
url: https://www.comet.com/liblaf/apple/cf0aed1dc78248728f44d8aff53e4662 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/cdfc558c7554462ea2a86bcbe5e78bc9 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu curr_step: 1001 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu outputs: - exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/17fb0bc849744850a547a2ea6e7571f2 exp_dir: exp/2026/01/28/smas cwd: exp/2026/01/28/smas cmd: python ./src/30-inverse.py params: target: /home/liblaf/github/liblaf/apple/exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu curr_step: 1001 inputs: - exp/2026/01/28/smas/data/20-forward-smas46-muscle46-prestrain.vtu outputs: - exp/2026/01/28/smas/data/30-inverse-smas46-muscle46-prestrain.vtu temps: - exp/2026/01/28/smas/temp/30-inverse-smas46-muscle46-prestrain.vtu.series
url: https://www.comet.com/liblaf/apple/2fdc3c911a4d47e4b566fed0550097dc exp_dir: exp/2026/05/20/inverse-face cwd: . cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 exp/2026/05/20/inverse-face/src/20-inverse-face.py --inverse_max_steps 40 --inverse_min_steps 20 --series_stride 20 params: inverse_max_steps: 40 inverse_min_steps: 20 series_stride: 20 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: null adjoint_atol_first_forward_residual_ratio: 0.5 adjoint_maxiter: 5000 adjoint_rtol: 0.0005 forward_atol: 0.0 forward_max_steps: 5000 forward_rtol: 0.0005 input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 loss_tol: 1.0e-07 lr_reduction_factor: 0.5 lr_reduction_patience: 12 max_lr_reductions: 6 max_point_error_cm: 0.2 min_inverse_lr: 0.0001 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu report: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/docs/20-inverse-face.md require_adjoint_convergence: true require_forward_convergence: true smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 24 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 0 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json
url: https://www.comet.com/liblaf/apple/0494054fc36b4c4da9ce32fbccb69338 exp_dir: exp/2026/05/20/inverse-face cwd: . cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 exp/2026/05/20/inverse-face/src/20-inverse-face.py --inverse_max_steps 20 --inverse_min_steps 20 --series_stride 10 params: inverse_max_steps: 20 inverse_min_steps: 20 series_stride: 10 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: null adjoint_atol_first_forward_residual_ratio: 0.5 adjoint_maxiter: 5000 adjoint_rtol: 0.0005 forward_atol: 0.0 forward_max_steps: 5000 forward_rtol: 0.0005 input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.02 loss_tol: 1.0e-07 lr_reduction_factor: 0.5 lr_reduction_patience: 12 max_lr_reductions: 6 max_point_error_cm: 0.2 min_inverse_lr: 0.0001 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu report: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/docs/20-inverse-face.md require_adjoint_convergence: true require_forward_convergence: true smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 24 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 6 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json
url: https://www.comet.com/liblaf/apple/9bc59088fa324a26ac47ce95e23932ac exp_dir: exp/2026/05/20/inverse-face cwd: . cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 exp/2026/05/20/inverse-face/src/20-inverse-face.py --inverse_max_steps 1 --inverse_min_steps 1 --series_stride 1000 params: inverse_max_steps: 1 inverse_min_steps: 1 series_stride: 1000 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 5000 adjoint_rtol: 0.0005 forward_atol: 0.0 forward_max_steps: 5000 forward_rtol: 0.0005 input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.02 loss_tol: 1.0e-07 lr_reduction_factor: 0.5 lr_reduction_patience: 12 max_lr_reductions: 6 max_point_error_cm: 0.2 min_inverse_lr: 0.0001 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu report: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/docs/20-inverse-face.md require_adjoint_convergence: true require_forward_convergence: true smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 24 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 1 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json
url: https://www.comet.com/liblaf/apple/06f32dcbc54045948d374807b8cc62b5 exp_dir: exp/2026/05/20/inverse-face cwd: . cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 exp/2026/05/20/inverse-face/src/20-inverse-face.py --inverse_max_steps 20 --inverse_min_steps 20 --series_stride 10 params: inverse_max_steps: 20 inverse_min_steps: 20 series_stride: 10 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 5000 adjoint_rtol: 0.0005 forward_atol: 0.0 forward_max_steps: 5000 forward_rtol: 0.0005 input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.02 loss_tol: 1.0e-07 lr_reduction_factor: 0.5 lr_reduction_patience: 12 max_lr_reductions: 6 max_point_error_cm: 0.2 min_inverse_lr: 0.0001 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu report: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/docs/20-inverse-face.md require_adjoint_convergence: true require_forward_convergence: true smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 24 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 20 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json
name: prepare inverse face inputs url: https://www.comet.com/liblaf/apple/0bc114f1f0d542fe8a0d411591473ecc exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/10-prepare-inverse-face.py params: E: 1.0 active_fraction_tol: 0.001 expression: Expression000 fixed_point_mask: IsCranium nu: 0.49 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu smas_stiffness_ratio: 100.0 source: /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu target_point_mask: IsFace target_scale: 1.0 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu
name: inverse face activation solve url: https://www.comet.com/liblaf/apple/358ba59407d04c889952a2fc923bf6a4 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --initial-activation-inv data/20-inverse-face-checkpoint.npz --inverse-lr 0.08 --inverse-max-steps 240 --series-stride 10 params: initial-activation-inv: data/20-inverse-face-checkpoint.npz inverse-lr: 0.08 inverse-max-steps: 240 series-stride: 10 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 checkpoint: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: data/20-inverse-face-checkpoint.npz input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.08 inverse_max_steps: 240 inverse_min_steps: 5 loss_tol: 1.0e-07 lr_reduction_factor: 0.5 lr_reduction_patience: 1000000000 max_lr_reductions: 0 max_point_error_cm: 0.2 min_inverse_lr: 0.0001 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu report: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/docs/20-inverse-face.md require_adjoint_convergence: false require_forward_convergence: false series_stride: 10 smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 40 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace exception: 'AttributeError: ''NoneType'' object has no attribute ''suffix'' ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
name: inverse face small lr every step url: https://www.comet.com/liblaf/apple/0156228cae0f43838b5680a31dae767a exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --initial-activation-inv tmp/probe-lr01-checkpoint.npz --inverse-lr 0.03 --inverse-max-steps 2000 --inverse-min-steps 20 --stagnation-patience 120 params: initial-activation-inv: tmp/probe-lr01-checkpoint.npz inverse-lr: 0.03 inverse-max-steps: 2000 inverse-min-steps: 20 stagnation-patience: 120 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 checkpoint: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: tmp/probe-lr01-checkpoint.npz input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 2000 inverse_min_steps: 20 loss_tol: 1.0e-07 max_point_error_cm: 0.2 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-07 stagnation_patience: 120 stagnation_rel_tol: 0.0001 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 0 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
name: inverse face fresh conservative url: https://www.comet.com/liblaf/apple/466c4fdf7bee4d5ea5b7329bb2e3b334 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: python ./src/20-inverse-face.py params: E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 checkpoint: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 0 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
name: prepare inverse face 515k url: https://www.comet.com/liblaf/apple/ebe61930a825417ebb4a3353ce6f0987 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/10-prepare-inverse-face.py params: E: 1.0 active_fraction_tol: 0.001 expression: Expression000 fixed_point_mask: IsCranium nu: 0.49 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu smas_stiffness_ratio: 100.0 source: /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-515k.vtu target_point_mask: IsFace target_scale: 1.0 outputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu
name: inverse face 515k fresh conservative url: https://www.comet.com/liblaf/apple/2cc143305cc642baae4918113fa92075 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --inverse-lr 0.01 --adam-beta1 0.3 --adam-beta2 0.9 --inverse-max-steps 1000 --inverse-min-steps 80 --stagnation-patience 250 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 params: inverse-lr: 0.01 adam-beta1: 0.3 adam-beta2: 0.9 inverse-max-steps: 1000 inverse-min-steps: 80 stagnation-patience: 250 stagnation-rel-tol: 1.0e-05 stagnation-abs-tol: 1.0e-08 E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 checkpoint: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.01 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 137 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
…3 beta1 0.5 name: inverse face 515k fresh smooth 0.1 l2 0.1 mse only lr 0.03 beta1 0.5 url: https://www.comet.com/liblaf/apple/392524890bc846eaa955f8ead18f46f0 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --activation-smooth-weight 0.1 --activation-l2-weight 0.1 --inverse-lr 0.03 --adam-beta1 0.5 --adam-beta2 0.9 --inverse-max-steps 3000 --inverse-min-steps 80 --stagnation-patience 300 --stagnation-rel-tol 1e-5 --stagnation-abs-tol 1e-8 --output data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu --output-series data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series --output-summary data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-summary.json --output-snapshot data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.png --checkpoint data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz params: activation-smooth-weight: 0.1 activation-l2-weight: 0.1 inverse-lr: 0.03 adam-beta1: 0.5 adam-beta2: 0.9 inverse-max-steps: 3000 inverse-min-steps: 80 stagnation-patience: 300 stagnation-rel-tol: 1.0e-05 stagnation-abs-tol: 1.0e-08 output: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu output-series: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series output-summary: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-summary.json output-snapshot: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.png checkpoint: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-checkpoint.npz E: 1.0 activation_inv_diag_max: 8.0 activation_inv_diag_min: -8.0 activation_inv_shear_abs_max: 3.0 activation_l2_weight: 0.1 activation_smooth_weight: 0.1 active_fraction_tol: 0.001 adam_beta1: 0.5 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 3000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 nu: 0.49 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.vtu.series output_snapshot: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105.png output_summary: data/20-inverse-face-fresh-smooth-w01-l2-01-mseonly-lr003-beta105-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 300 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 159 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
name: inverse face 515k fresh nu 0.4 smas 1 no clamp url: https://www.comet.com/liblaf/apple/c0dc5a55b43f4f9d82a3b577d050e445 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --nu 0.4 --smas-stiffness-ratio 1 --output data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu --output-series data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series --output-summary data/20-inverse-face-fresh-nu04-smas1-noclamp-summary.json --output-snapshot data/20-inverse-face-fresh-nu04-smas1-noclamp.png --checkpoint data/20-inverse-face-fresh-nu04-smas1-noclamp-checkpoint.npz params: nu: 0.4 smas-stiffness-ratio: 1 output: data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu output-series: data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series output-summary: data/20-inverse-face-fresh-nu04-smas1-noclamp-summary.json output-snapshot: data/20-inverse-face-fresh-nu04-smas1-noclamp.png checkpoint: data/20-inverse-face-fresh-nu04-smas1-noclamp-checkpoint.npz E: 1.0 activation_l2_weight: 0.1 activation_smooth_weight: 0.1 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-nu04-smas1-noclamp.vtu.series output_snapshot: data/20-inverse-face-fresh-nu04-smas1-noclamp.png output_summary: data/20-inverse-face-fresh-nu04-smas1-noclamp-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 1.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 112 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
name: inverse face 515k fresh nu 0.4 smas 1 no clamp loose l2 url: https://www.comet.com/liblaf/apple/7e5cd7b88cbb47aca10ab74f18571a3e exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --nu 0.4 --smas-stiffness-ratio 1 --activation-smooth-weight 0.1 --activation-l2-weight 1e-2 --output data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu --output-series data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series --output-summary data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-summary.json --output-snapshot data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.png --checkpoint data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-checkpoint.npz params: nu: 0.4 smas-stiffness-ratio: 1 activation-smooth-weight: 0.1 activation-l2-weight: 0.01 output: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu output-series: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series output-summary: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-summary.json output-snapshot: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.png checkpoint: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-checkpoint.npz E: 1.0 activation_l2_weight: 0.01 activation_smooth_weight: 0.1 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.vtu.series output_snapshot: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg.png output_summary: data/20-inverse-face-fresh-nu04-smas1-noclamp-loose-reg-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 1.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 50 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
…se reg name: inverse face 515k fresh nu 0.49 smas 1 no clamp super loose reg url: https://www.comet.com/liblaf/apple/f1f986bbef454961a8532dcc9b219001 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --nu 0.49 --smas-stiffness-ratio 1 --activation-smooth-weight 1e-3 --activation-l2-weight 1e-5 --output data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu --output-series data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series --output-summary data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json --output-snapshot data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png --checkpoint data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-checkpoint.npz params: nu: 0.49 smas-stiffness-ratio: 1 activation-smooth-weight: 0.001 activation-l2-weight: 1.0e-05 output: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu output-series: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series output-summary: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json output-snapshot: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png checkpoint: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-checkpoint.npz E: 1.0 activation_l2_weight: 1.0e-05 activation_smooth_weight: 0.001 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.vtu.series output_snapshot: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg.png output_summary: data/20-inverse-face-fresh-nu049-smas1-noclamp-super-loose-reg-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 1.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 286 inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
….375 name: inverse face 515k fresh default loose regularization nu 0.375 url: https://www.comet.com/liblaf/apple/c2f9b869093c477abb555e5476e2f754 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --nu 0.375 --activation-smooth-weight 1e-3 --activation-l2-weight 1e-5 --output data/20-inverse-face-fresh-default-nu0375.vtu --output-series data/20-inverse-face-fresh-default-nu0375.vtu.series --output-summary data/20-inverse-face-fresh-default-nu0375-summary.json --output-snapshot data/20-inverse-face-fresh-default-nu0375.png --checkpoint data/20-inverse-face-fresh-default-nu0375-checkpoint.npz params: nu: 0.375 activation-smooth-weight: 0.001 activation-l2-weight: 1.0e-05 output: data/20-inverse-face-fresh-default-nu0375.vtu output-series: data/20-inverse-face-fresh-default-nu0375.vtu.series output-summary: data/20-inverse-face-fresh-default-nu0375-summary.json output-snapshot: data/20-inverse-face-fresh-default-nu0375.png checkpoint: data/20-inverse-face-fresh-default-nu0375-checkpoint.npz E: 1.0 activation_l2_weight: 1.0e-05 activation_smooth_weight: 0.001 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-default-nu0375.vtu.series output_snapshot: data/20-inverse-face-fresh-default-nu0375.png output_summary: data/20-inverse-face-fresh-default-nu0375-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 100.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 384 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
….375 smas stiffness 1 name: inverse face 515k fresh default loose regularization nu 0.375 smas stiffness 1 url: https://www.comet.com/liblaf/apple/4684d9226980479e94efbea8d94a8ef6 exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/20-inverse-face.py --nu 0.375 --smas-stiffness-ratio 1 --activation-smooth-weight 1e-3 --activation-l2-weight 1e-5 --output data/20-inverse-face-fresh-default-nu0375-smas1.vtu --output-series data/20-inverse-face-fresh-default-nu0375-smas1.vtu.series --output-summary data/20-inverse-face-fresh-default-nu0375-smas1-summary.json --output-snapshot data/20-inverse-face-fresh-default-nu0375-smas1.png --checkpoint data/20-inverse-face-fresh-default-nu0375-smas1-checkpoint.npz params: nu: 0.375 smas-stiffness-ratio: 1 activation-smooth-weight: 0.001 activation-l2-weight: 1.0e-05 output: data/20-inverse-face-fresh-default-nu0375-smas1.vtu output-series: data/20-inverse-face-fresh-default-nu0375-smas1.vtu.series output-summary: data/20-inverse-face-fresh-default-nu0375-smas1-summary.json output-snapshot: data/20-inverse-face-fresh-default-nu0375-smas1.png checkpoint: data/20-inverse-face-fresh-default-nu0375-smas1-checkpoint.npz E: 1.0 activation_l2_weight: 1.0e-05 activation_smooth_weight: 0.001 active_fraction_tol: 0.001 adam_beta1: 0.3 adam_beta2: 0.9 adam_eps: 1.0e-08 adjoint_atol: 0.0 adjoint_maxiter: 10000 adjoint_rtol: 0.0005 failure_patience: 3 forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 initial_activation_inv: null input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu inverse_lr: 0.03 inverse_max_steps: 1000 inverse_min_steps: 80 loss_tol: 1.0e-07 max_point_error_cm: 0.2 output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu output_series: data/20-inverse-face-fresh-default-nu0375-smas1.vtu.series output_snapshot: data/20-inverse-face-fresh-default-nu0375-smas1.png output_summary: data/20-inverse-face-fresh-default-nu0375-smas1-summary.json output_target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu smas_stiffness_ratio: 1.0 stagnation_abs_tol: 1.0e-08 stagnation_patience: 250 stagnation_rel_tol: 1.0e-05 target: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu target_point_mask: IsFace curr_step: 289 exception: 'KeyboardInterrupt ' inputs: - exp/2026/05/20/inverse-face/data/10-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/10-inverse-face-target.vtu outputs: - exp/2026/05/20/inverse-face/data/20-inverse-face-input.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-target.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face.vtu.series - exp/2026/05/20/inverse-face/data/20-inverse-face-summary.json - exp/2026/05/20/inverse-face/data/20-inverse-face-checkpoint.npz
Refresh the May 20 inverse-face run artifacts with new nu049 SMAS regularization outputs and figures, replacing the previous default nu04 rerun data.
name: transfer activation 3152k forward url: https://www.comet.com/liblaf/apple/1708acd3c5f34abf8276c32b4d73351a exp_dir: exp/2026/05/20/inverse-face cwd: exp/2026/05/20/inverse-face cmd: /home/liblaf/github/liblaf/apple/.venv/bin/python3 src/30-transfer-activation-3152k.py params: E: 1.0 active_fraction_tol: 0.001 expression: Expression000 fixed_point_mask: IsCranium forward_atol: 0.0 forward_max_steps: 10000 forward_rtol: 0.0005 nu: 0.49 output: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu output_input: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu output_series: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series output_summary: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json smas_stiffness_ratio: 100.0 solved: /home/liblaf/github/liblaf/apple/exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series solved_frame_index: -1 source: /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu target_point_mask: IsFace target_scale: 1.0 transfer_chunk_size: 200000 transfer_k: 4 transfer_power: 2.0 inputs: - /home/liblaf/github/liblaf/melon/exp/2025/04/30/human-head-anatomy/data/41-expression-3152k.vtu - exp/2026/05/20/inverse-face/data/20-inverse-face-smooth-w1-lr003.vtu.series outputs: - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-input.vtu - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k.vtu.series - exp/2026/05/20/inverse-face/data/30-transfer-activation-3152k-summary.json
Use disjoint material fractions for inverse-face preparation and transfer runs so muscle tets receive active stiff material, SMAS-only regions receive passive stiff material, and background remains passive with the base modulus.
for more information, see https://pre-commit.ci
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ BASH | shellcheck | 2 | 0 | 0 | 0.49s | |
| ✅ BASH | shfmt | 2 | 0 | 0 | 0 | 1.8s |
| jscpd | yes | 464 | no | 9.69s | ||
| ✅ JSON | prettier | 19 | 15 | 0 | 0 | 2.76s |
| ✅ JSON | v8r | 19 | 0 | 0 | 5.38s | |
| ✅ MARKDOWN | rumdl | 28 | 0 | 0 | 0 | 1.81s |
| ruff | yes | yes | 47 | no | 1.18s | |
| ✅ PYTHON | ruff-format | yes | yes | no | no | 0.17s |
| ✅ REPOSITORY | git_diff | yes | no | no | 2.23s | |
| cspell | yes | 15 | no | 7.2s |
Detailed Issues
⚠️ SPELL / cspell - 15 errors
.github/workflows/release-pr.yaml:72:15 - Unknown word (orhun) -- uses: orhun/git-cliff-action@f5
Suggestions: [oahu, oran, ordn, oren, orin]
.github/workflows/release-pr.yaml:80:15 - Unknown word (orhun) -- uses: orhun/git-cliff-action@f5
Suggestions: [oahu, oran, ordn, oren, orin]
exp/2026/05/13/toy/data/30-inverse-activation-diff-forward-no-collision-summary.json:13:4 - Unknown word (bbox) -- "bbox_diagonal": 1.732050
Suggestions: [box, mbox, vbox, xbox, Xbox]
exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-summary.json:17:12 - Unknown word (atol) -- "forward_atol": 0.001,
Suggestions: [atob, atom, aton, atop, awol]
exp/2026/05/13/toy/data/40-inverse-activation-diff-forward-collision-summary.json:19:4 - Unknown word (bbox) -- "bbox_diagonal": 2.872281
Suggestions: [box, mbox, vbox, xbox, Xbox]
exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-summary.json:23:12 - Unknown word (atol) -- "forward_atol": 0.001,
Suggestions: [atob, atom, aton, atop, awol]
exp/2026/05/13/toy/data/41-inverse-active-tet-activation-diff-forward-collision-summary.json:29:4 - Unknown word (bbox) -- "bbox_diagonal": 2.872281
Suggestions: [box, mbox, vbox, xbox, Xbox]
exp/2026/05/13/toy/src/20-smas-layer-bottom-force-collision.py:151:22 - Unknown word (Efat) -- mesh.field_data["Efat"] = np.asarray([cfg
Suggestions: [Efta, Feat, Erat, Eat, Eft]
exp/2026/05/13/toy/src/20-smas-layer-bottom-force-collision.py:152:22 - Unknown word (Esmas) -- mesh.field_data["Esmas"] = np.asarray([cfg
Suggestions: [Smas, Seams, Seas, edams, Edams]
exp/2026/05/20/inverse-face/docs/20-inverse-face.md:42:38 - Unknown word (atol) -- tolerance: `rtol=0.0005`, `atol=0`
Suggestions: [atob, atom, aton, atop, awol]
exp/2026/05/20/inverse-face/docs/20-inverse-face.md:43:38 - Unknown word (atol) -- tolerance: `rtol=0.0005`, `atol=0`
Suggestions: [atob, atom, aton, atop, awol]
exp/2026/05/20/inverse-face/docs/30-transfer-activation-3152k.md:75:11 - Unknown word (atol) -- forward_atol: 0.0
Suggestions: [atob, atom, aton, atop, awol]
exp/2026/05/20/inverse-face/docs/31-transfer-activation-3152k-smas1.md:72:11 - Unknown word (atol) -- forward_atol: 0.0
Suggestions: [atob, atom, aton, atop, awol]
src/liblaf/apple/inverse/_diff_forward.py:92:9 - Unknown word (rprecondition) -- def rprecondition(self, p_free: Free)
Suggestions: [precondition, preCondition, PRECONDITION, recondition, rpreconditioner]
src/liblaf/apple/inverse/_diff_forward.py:99:21 - Unknown word (rprecondition) -- return self.rprecondition(p_free)
Suggestions: [precondition, preCondition, PRECONDITION, recondition, rpreconditioner]
CSpell: Files checked: 320, skipped: 5, Issues found: 15 in 9 files.
You can skip this misspellings by defining the following .cspell.json file at the root of your repository
Of course, please correct real typos before :)
{
"version": "0.2",
"language": "en",
"ignorePaths": [
"**/node_modules/**",
"**/vscode-extension/**",
"**/.git/**",
"**/.pnpm-lock.json",
".vscode",
"package-lock.json",
"megalinter-reports"
],
"words": [
"Efat",
"Esmas",
"atol",
"bbox",
"orhun",
"rprecondition"
]
}
You can also copy-paste megalinter-reports/LINTER_DEFAULT at the root of your repository
⚠️ COPYPASTE / jscpd - 464 errors
inverse-segement/src/30-inverse.py [138:39 - 242:24]
Clone found (python):
- exp/2025/08/27/inverse/src/20-forward.py [1:1 - 29:42] (28 lines, 244 tokens)
exp/2025/08/27/inverse-segement/src/20-forward.py [1:1 - 29:43]
Clone found (python):
- exp/2025/08/27/inverse/src/20-forward.py [33:40 - 51:24] (18 lines, 191 tokens)
exp/2025/08/27/inverse-segement/src/20-forward.py [33:30 - 51:24]
Clone found (python):
- exp/2025/08/27/inverse/src/10-gen.py [32:5 - 39:24] (7 lines, 85 tokens)
exp/2025/08/27/inverse-segement/src/10-gen.py [46:5 - 53:24]
Clone found (python):
- exp/2025/07/30/phace/wind/main.py [126:5 - 136:14] (10 lines, 144 tokens)
exp/2025/07/30/dynamics/collision/inter-collision/main.py [132:84 - 142:15]
Clone found (python):
- exp/2025/07/30/phace/wind/main.py [139:9 - 152:46] (13 lines, 156 tokens)
exp/2025/07/30/dynamics/collision/inter-collision/main.py [142:9 - 155:46]
Clone found (python):
- exp/2025/07/30/phace/open-mouth/main.py [9:1 - 19:13] (10 lines, 102 tokens)
exp/2025/07/30/phace/wind/main.py [8:1 - 18:12]
Clone found (python):
- exp/2025/07/30/phace/open-mouth/main.py [24:5 - 36:14] (12 lines, 94 tokens)
exp/2025/07/30/dynamics/collision/collision-bunny-bunny/main.py [19:5 - 31:9]
Clone found (python):
- exp/2025/07/30/phace/open-mouth/main.py [25:21 - 55:12] (30 lines, 315 tokens)
exp/2025/07/30/phace/wind/main.py [30:19 - 60:15]
Clone found (python):
- exp/2025/07/30/phace/open-mouth/main.py [95:85 - 105:33] (10 lines, 148 tokens)
exp/2025/07/30/dynamics/collision/inter-collision/main.py [132:84 - 136:38]
Clone found (python):
- exp/2025/07/30/phace/open-mouth/main.py [105:88 - 119:25] (14 lines, 153 tokens)
exp/2025/07/30/phace/wind/main.py [138:9 - 155:23]
Clone found (python):
- exp/2025/07/30/phace/grin/main.py [1:1 - 12:59] (11 lines, 103 tokens)
exp/2025/07/30/phace/wind/main.py [1:1 - 12:60]
Clone found (python):
- exp/2025/07/30/phace/grin/main.py [19:5 - 36:12] (17 lines, 142 tokens)
exp/2025/07/30/phace/open-mouth/main.py [20:5 - 42:12]
Clone found (python):
- exp/2025/07/30/phace/grin/main.py [101:5 - 107:45] (6 lines, 74 tokens)
exp/2025/07/30/dynamics/collision/inter-collision/main.py [132:84 - 138:36]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [1:1 - 14:29] (13 lines, 106 tokens)
exp/2025/07/30/phace/wind/main.py [1:1 - 15:6]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [35:5 - 53:37] (18 lines, 164 tokens)
exp/2025/07/30/phace/wind/main.py [32:5 - 44:44]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [53:37 - 66:12] (13 lines, 146 tokens)
exp/2025/07/30/phace/grin/main.py [44:44 - 56:11]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [90:54 - 97:67] (7 lines, 77 tokens)
exp/2025/07/30/phace/grin/main.py [90:27 - 97:67]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [107:5 - 117:13] (10 lines, 142 tokens)
exp/2025/07/30/dynamics/collision/inter-collision/main.py [132:84 - 111:26]
Clone found (python):
- exp/2025/07/30/phace/dynamics/main.py [118:81 - 126:43] (8 lines, 101 tokens)
exp/2025/07/30/phace/grin/main.py [112:77 - 120:41]
Clone found (python):
- exp/2025/07/30/phace/collide-ball/main.py [9:1 - 18:26] (9 lines, 95 tokens)
exp/2025/07/30/phace/wind/main.py [9:1 - 19:26]
Clone found (python):
- exp/2025/07/30/phace/collide-ball/main.py [12:60 - 35:40] (23 lines, 195 tokens)
exp/2025/07/30/phace/grin/main.py [12:52 - 36:47]
Clone found (python):
- exp/2025/07/30/phace/collide-ball/main.py [35:40 - 42:66] (7 lines, 122 tokens)
exp/2025/07/30/phace/wind/main.py [41:47 - 48:64]
Clone found (python):
- exp/2025/07/30/phace/close-mouth/main.py [1:1 - 22:12] (21 lines, 180 tokens)
exp/2025/07/30/phace/open-mouth/main.py [1:1 - 21:10]
Clone found (python):
- exp/2025/07/30/phace/close-mouth/main.py [29:5 - 57:12] (28 lines, 311 tokens)
exp/2025/07/30/phace/wind/main.py [32:5 - 60:15]
Clone found (python):
- exp/2025/07/30/phace/close-mouth/main.py [101:5 - 140:21] (39 lines, 450 tokens)
exp/2025/07/30/phace/open-mouth/main.py [55:5 - 124:9]
Clone found (python):
- exp/2025/07/30/phace/close-mouth/main.py [140:47 - 165:46] (25 lines, 356 tokens)
exp/2025/07/30/phace/open-mouth/main.py [94:46 - 155:46]
Clone found (python):
- exp/2025/07/30/dynamics/free-falling/main.py [25:21 - 58:8] (33 lines, 358 tokens)
exp/2025/07/30/dynamics/collision/collision-bunny/main.py [24:19 - 57:11]
Clone found (python):
- exp/2025/07/30/dynamics/free-falling/main.py [78:5 - 84:11] (6 lines, 86 tokens)
exp/2025/07/30/dynamics/collision/collision-bunny/main.py [75:5 - 81:11]
Clone found (python):
- exp/2025/07/30/dynamics/free-falling/main.py [137:5 - 151:14] (14 lines, 138 tokens)
exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [69:5 - 83:14]
Clone found (python):
- exp/2025/04/30/fat-muscle/src/20-simulate.py [17:5 - 30:35] (13 lines, 138 tokens)
exp/2025/04/30/human-head/src/10-simulate.py [18:5 - 31:37]
Clone found (python):
- exp/2025/04/30/fat-muscle/src/20-simulate.py [48:43 - 58:61] (10 lines, 136 tokens)
exp/2025/04/30/human-head/src/10-simulate.py [47:56 - 57:63]
Clone found (python):
- exp/2025/04/30/fat-muscle/src/20-simulate.py [59:60 - 72:3] (13 lines, 107 tokens)
exp/2025/04/30/human-head/src/10-simulate.py [58:62 - 71:4]
Clone found (python):
- exp/2025/04/30/cubic/src/10-gen.py [21:54 - 44:35] (23 lines, 196 tokens)
exp/2025/04/30/human-head/src/10-simulate.py [24:76 - 46:40]
Clone found (python):
- exp/2025/04/30/cubic/src/10-gen.py [44:66 - 71:24] (27 lines, 303 tokens)
exp/2025/04/30/fat-muscle/src/20-simulate.py [46:74 - 73:24]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [57:1 - 63:31] (6 lines, 83 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [36:67 - 42:13]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [81:46 - 93:11] (12 lines, 171 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [36:35 - 69:48]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [102:36 - 108:6] (6 lines, 82 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [21:28 - 26:7]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [103:14 - 116:12] (13 lines, 166 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [57:11 - 94:12]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean.py [25:18 - 35:7] (10 lines, 126 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [27:18 - 37:10]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean.py [74:78 - 84:12] (10 lines, 127 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [53:1 - 63:48]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean.py [93:14 - 103:12] (10 lines, 121 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [53:11 - 63:48]
Clone found (python):
- src/liblaf/apple/warp/fem/_stable_neo_hookean.py [116:43 - 150:6] (34 lines, 323 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [135:10 - 169:6]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [1:1 - 28:18] (27 lines, 251 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [1:1 - 28:17]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [29:51 - 39:17] (10 lines, 105 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [29:58 - 39:17]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [39:44 - 60:17] (21 lines, 193 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [39:47 - 60:17]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [62:63 - 84:12] (22 lines, 280 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [62:22 - 63:48]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [83:63 - 103:12] (20 lines, 280 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [83:22 - 63:48]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [102:63 - 110:17] (8 lines, 92 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [102:22 - 110:23]
Clone found (python):
- src/liblaf/apple/warp/fem/_neo_hookean.py [110:17 - 150:6] (40 lines, 380 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [110:23 - 169:6]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [189:37 - 196:14] (7 lines, 90 tokens)
src/liblaf/apple/warp/fem/_base.py [166:40 - 173:19]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [211:31 - 218:16] (7 lines, 92 tokens)
src/liblaf/apple/warp/fem/_base.py [166:31 - 173:19]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [235:36 - 243:22] (8 lines, 108 tokens)
src/liblaf/apple/warp/fem/_base.py [166:40 - 197:19]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [266:9 - 272:19] (6 lines, 86 tokens)
src/liblaf/apple/warp/fem/_base.py [167:9 - 173:19]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [292:14 - 300:19] (8 lines, 102 tokens)
src/liblaf/apple/warp/fem/_base.py [262:14 - 270:22]
Clone found (python):
- src/liblaf/apple/warp/fem/_base.py [327:9 - 334:19] (7 lines, 103 tokens)
src/liblaf/apple/warp/fem/_base.py [296:9 - 303:19]
Clone found (python):
- src/liblaf/apple/warp/fem/_arap.py [7:33 - 22:7] (15 lines, 106 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean.py [7:41 - 22:7]
Clone found (python):
- src/liblaf/apple/warp/fem/_arap.py [89:53 - 121:6] (32 lines, 288 tokens)
src/liblaf/apple/warp/fem/_stable_neo_hookean_active.py [137:55 - 169:6]
Clone found (python):
- exp/2025/07/30/static/stretch.py [12:5 - 19:52] (7 lines, 105 tokens)
exp/2025/07/30/static/random/main.py [19:5 - 25:53]
Clone found (python):
- exp/2025/07/30/static/stretch.py [28:9 - 39:30] (11 lines, 124 tokens)
exp/2025/07/30/static/random/main.py [40:9 - 51:35]
Clone found (python):
- exp/2025/07/30/static/stretch.py [49:1 - 54:10] (5 lines, 83 tokens)
exp/2025/07/30/static/random/main.py [60:44 - 65:10]
Clone found (python):
- exp/2025/07/30/static/stretch.py [67:5 - 77:14] (10 lines, 115 tokens)
exp/2025/07/30/static/random/main.py [73:5 - 83:10]
Clone found (python):
- tests/forward/test_static_simulation.py [77:31 - 85:11] (8 lines, 80 tokens)
exp/2026/05/06/toy/src/10-stretched-cylinder.py [84:43 - 92:17]
Clone found (python):
- benches/test_aggregation.py [115:9 - 129:11] (14 lines, 161 tokens)
benches/test_aggregation.py [68:88 - 80:92]
Clone found (python):
- benches/bench_pncg_branching_backends.py [180:20 - 192:8] (12 lines, 87 tokens)
benches/bench_pncg_branching_backends.py [141:14 - 153:9]
Clone found (python):
- benches/bench_pncg_branching_backends.py [347:9 - 357:11] (10 lines, 94 tokens)
benches/bench_pncg_branching_backends.py [279:9 - 289:13]
Clone found (python):
- benches/bench_pncg_branching_backends.py [459:40 - 481:6] (22 lines, 172 tokens)
benches/bench_pncg_branching_backends.py [413:34 - 435:18]
Clone found (python):
- benches/bench_pncg_branching_backends.py [649:25 - 663:22] (14 lines, 159 tokens)
benches/bench_pncg_branching_backends.py [475:23 - 489:25]
┌────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python │ 190 │ 28966 │ 294565 │ 464 │ 11952 (41.26%) │ 125342 (42.55%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ csv │ 1 │ 15 │ 813 │ 0 │ 0 (0%) │ 0 (0%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash │ 2 │ 45 │ 136 │ 0 │ 0 (0%) │ 0 (0%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml │ 8 │ 933 │ 4016 │ 0 │ 0 (0%) │ 0 (0%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total: │ 201 │ 29959 │ 299530 │ 464 │ 11952 (39.89%) │ 125342 (41.85%) │
└────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 464 clones.
HTML report saved to megalinter-reports/copy-paste/html/
ERROR: jscpd found too many duplicates (39.89%) over threshold (0%)
Error: ERROR: jscpd found too many duplicates (39.89%) over threshold (0%)
at ThresholdReporter.report (/node-deps/node_modules/@jscpd/finder/dist/index.js:615:13)
at /node-deps/node_modules/@jscpd/finder/dist/index.js:109:18
at Array.forEach (<anonymous>)
at /node-deps/node_modules/@jscpd/finder/dist/index.js:108:22
at async /node-deps/node_modules/jscpd/dist/bin/jscpd.js:9:5
(Truncated to last 13333 characters out of 92386)
⚠️ PYTHON / ruff - 47 errors
able first
--> exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-ramped.py:206:21
|
204 | if not stage_result.solver_result.success:
205 | raise RuntimeError(
206 | / "forward stage failed at "
207 | | f"force scale {force_scale:g} with status "
208 | | f"{stage_result.solver_result.status}"
| |__________________________________________________________^
209 | )
210 | cherries.set_step(stage_index)
|
help: Assign to variable; remove f-string literal
RUF046 Value being cast to `int` is already an integer
--> exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py:48:20
|
46 | def format_lambda_value(lambda_value: float) -> str:
47 | if np.isclose(lambda_value, round(lambda_value)):
48 | return str(int(round(lambda_value)))
| ^^^^^^^^^^^^^^^^^^^^^^^^
49 | mantissa, exponent = f"{lambda_value:.0e}".split("e")
50 | return f"{mantissa}e{int(exponent)}"
|
help: Remove unnecessary `int` call
TRY003 Avoid specifying long messages outside the exception class
--> exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py:57:15
|
55 | ) -> pv.UnstructuredGrid:
56 | if "Force" not in mesh.point_data:
57 | raise KeyError(
| _______________^
58 | | "mesh is missing point_data['Force']; run 11-smas-bottom-force.py first"
59 | | )
| |_________^
60 | mesh.point_data["Force"] = force_scale * np.asarray(mesh.point_data["Force"])
61 | return mesh
|
EM101 Exception must not use a string literal, assign to variable first
--> exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean-smas-only.py:58:13
|
56 | if "Force" not in mesh.point_data:
57 | raise KeyError(
58 | "mesh is missing point_data['Force']; run 11-smas-bottom-force.py first"
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
59 | )
60 | mesh.point_data["Force"] = force_scale * np.asarray(mesh.point_data["Force"])
|
help: Assign to variable; remove string literal
RUF046 Value being cast to `int` is already an integer
--> exp/2026/01/28/smas/src/20-forward-ext-force-stable-neo-hookean.py:49:20
|
47 | def format_lambda_value(lambda_value: float) -> str:
48 | if np.isclose(lambda_value, round(lambda_value)):
49 | return str(int(round(lambda_value)))
| ^^^^^^^^^^^^^^^^^^^^^^^^
50 | mantissa, exponent = f"{lambda_value:.0e}".split("e")
51 | return f"{mantissa}e{int(exponent)}"
|
help: Remove unnecessary `int` call
RUF046 Value being cast to `int` is already an integer
--> exp/2026/01/28/smas/src/20-forward-ext-force.py:49:20
|
47 | def format_lambda_value(lambda_value: float) -> str:
48 | if np.isclose(lambda_value, round(lambda_value)):
49 | return str(int(round(lambda_value)))
| ^^^^^^^^^^^^^^^^^^^^^^^^
50 | mantissa, exponent = f"{lambda_value:.0e}".split("e")
51 | return f"{mantissa}e{int(exponent)}"
|
help: Remove unnecessary `int` call
ARG001 Unused function argument: `failure_dir`
--> exp/2026/01/28/smas/src/30-inverse-unreachable-stable-neo-hookean.py:286:5
|
284 | target: pv.UnstructuredGrid,
285 | forward: Forward,
286 | failure_dir: Path,
| ^^^^^^^^^^^
287 | ) -> MyInverse:
288 | surface_indices: Integer[Array, " surface_points"] = mesh.surface_indices()
|
D205 1 blank line required between summary line and description
--> exp/2026/04/18/2d-demo/src/10-simulation.py:1:1
|
1 | / """2D Muscle-Fascia Neohookean FEM Simulation
2 | | ==========================================
3 | |
4 | | Simulates a flat meat slab (100x11 elements) with a stiff fascia middle layer.
5 | | Uses analytical First Piola-Kirchhoff stress with NumPy vectorized computation.
6 | | Real-time visualization with Pygame.
7 | |
8 | | Material: Neohookean hyperelastic
9 | | Psi(F) = mu/2 * (tr(F^T F) - 2) - mu * ln(J) + lam/2 * (ln J)^2
10 | | P = mu * (F - F^{-T}) + lam * ln(J) * F^{-T}
11 | |
12 | | Controls:
13 | | Up/Down Increase/decrease wind force
14 | | R Reset simulation
15 | | SPACE Pause/resume
16 | | W Toggle wireframe overlay
17 | | ESC Quit
18 | | """
| |___^
19 |
20 | import sys
|
help: Insert single blank line
D415 First line should end with a period, question mark, or exclamation point
--> exp/2026/04/18/2d-demo/src/10-simulation.py:1:1
|
1 | / """2D Muscle-Fascia Neohookean FEM Simulation
2 | | ==========================================
3 | |
4 | | Simulates a flat meat slab (100x11 elements) with a stiff fascia middle layer.
5 | | Uses analytical First Piola-Kirchhoff stress with NumPy vectorized computation.
6 | | Real-time visualization with Pygame.
7 | |
8 | | Material: Neohookean hyperelastic
9 | | Psi(F) = mu/2 * (tr(F^T F) - 2) - mu * ln(J) + lam/2 * (ln J)^2
10 | | P = mu * (F - F^{-T}) + lam * ln(J) * F^{-T}
11 | |
12 | | Controls:
13 | | Up/Down Increase/decrease wind force
14 | | R Reset simulation
15 | | SPACE Pause/resume
16 | | W Toggle wireframe overlay
17 | | ESC Quit
18 | | """
| |___^
19 |
20 | import sys
|
help: Add closing punctuation
ANN001 Missing type annotation for function argument `f2v`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:126:16
|
126 | def init_state(f2v):
| ^^^
127 | """Initialize node positions and precompute reference configuration.
|
ANN001 Missing type annotation for function argument `pos`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:28
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `f2v`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:33
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `Dm_inv`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:38
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `Dm_inv_T`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:46
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^^^^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `W`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:56
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `elem_mu`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:59
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^^^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `elem_lam`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:185:68
|
185 | def compute_elastic_forces(pos, f2v, Dm_inv, Dm_inv_T, W, elem_mu, elem_lam):
| ^^^^^^^^
186 | """Compute internal elastic forces using the analytical Neohookean stress.
|
ANN001 Missing type annotation for function argument `pos`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:256:5
|
255 | def substep(
256 | pos,
| ^^^
257 | vel,
258 | rest_pos,
|
ANN001 Missing type annotation for function argument `vel`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:257:5
|
255 | def substep(
256 | pos,
257 | vel,
| ^^^
258 | rest_pos,
259 | f2v,
|
ANN001 Missing type annotation for function argument `rest_pos`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:258:5
|
256 | pos,
257 | vel,
258 | rest_pos,
| ^^^^^^^^
259 | f2v,
260 | Dm_inv,
|
ANN001 Missing type annotation for function argument `f2v`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:259:5
|
257 | vel,
258 | rest_pos,
259 | f2v,
| ^^^
260 | Dm_inv,
261 | Dm_inv_T,
|
ANN001 Missing type annotation for function argument `Dm_inv`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:260:5
|
258 | rest_pos,
259 | f2v,
260 | Dm_inv,
| ^^^^^^
261 | Dm_inv_T,
262 | W,
|
ANN001 Missing type annotation for function argument `Dm_inv_T`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:261:5
|
259 | f2v,
260 | Dm_inv,
261 | Dm_inv_T,
| ^^^^^^^^
262 | W,
263 | elem_mu,
|
ANN001 Missing type annotation for function argument `W`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:262:5
|
260 | Dm_inv,
261 | Dm_inv_T,
262 | W,
| ^
263 | elem_mu,
264 | elem_lam,
|
ANN001 Missing type annotation for function argument `elem_mu`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:263:5
|
261 | Dm_inv_T,
262 | W,
263 | elem_mu,
| ^^^^^^^
264 | elem_lam,
265 | fixed_mask,
|
ANN001 Missing type annotation for function argument `elem_lam`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:264:5
|
262 | W,
263 | elem_mu,
264 | elem_lam,
| ^^^^^^^^
265 | fixed_mask,
266 | bottom_mask,
|
ANN001 Missing type annotation for function argument `fixed_mask`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:265:5
|
263 | elem_mu,
264 | elem_lam,
265 | fixed_mask,
| ^^^^^^^^^^
266 | bottom_mask,
267 | wind,
|
ANN001 Missing type annotation for function argument `bottom_mask`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:266:5
|
264 | elem_lam,
265 | fixed_mask,
266 | bottom_mask,
| ^^^^^^^^^^^
267 | wind,
268 | mass,
|
ANN001 Missing type annotation for function argument `wind`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:267:5
|
265 | fixed_mask,
266 | bottom_mask,
267 | wind,
| ^^^^
268 | mass,
269 | ):
|
ANN001 Missing type annotation for function argument `mass`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:268:5
|
266 | bottom_mask,
267 | wind,
268 | mass,
| ^^^^
269 | ):
270 | """Single substep of Symplectic Euler integration.
|
ANN001 Missing type annotation for function argument `sim_pos`
--> exp/2026/04/18/2d-demo/src/10-simulation.py:307:19
|
307 | def sim_to_screen(sim_pos):
| ^^^^^^^
308 | """Convert simulation coordinates to screen pixel coordinates (y-flipped)."""
309 | screen = np.empty_like(sim_pos)
|
C901 `main` is too complex (18 > 10)
--> exp/2026/04/18/2d-demo/src/10-simulation.py:320:5
|
320 | def main():
| ^^^^
321 | # --- Build mesh & initialize state ---
322 | f2v, is_fascia, elem_mu, elem_lam = build_mesh()
|
PLR0912 Too many branches (17 > 12)
--> exp/2026/04/18/2d-demo/src/10-simulation.py:320:5
|
320 | def main():
| ^^^^
321 | # --- Build mesh & initialize state ---
322 | f2v, is_fascia, elem_mu, elem_lam = build_mesh()
|
PLR0915 Too many statements (57 > 50)
--> exp/2026/04/18/2d-demo/src/10-simulation.py:320:5
|
320 | def main():
| ^^^^
321 | # --- Build mesh & initialize state ---
322 | f2v, is_fascia, elem_mu, elem_lam = build_mesh()
|
FBT003 Boolean positional value in function call
--> exp/2026/04/18/2d-demo/src/10-simulation.py:431:37
|
429 | y_pos = 12
430 | for fnt, text, color in hud_lines:
431 | surf = fnt.render(text, True, color)
| ^^^^
432 | screen.blit(surf, (15, y_pos))
433 | y_pos += 28
|
B007 Loop control variable `step` not used within loop body
--> exp/2026/04/18/2d-demo/src/30-simulation-stable-neo-hookean-self-collision.py:829:9
|
827 | contact_points = np.empty((0, 2), dtype=pos.dtype)
828 |
829 | for step in range(SUBSTEPS):
| ^^^^
830 | substep_contacts, substep_points = substep(
831 | pos,
|
help: Rename unused `step` to `_step`
Found 47 errors.
No fixes available (13 hidden fixes can be enabled with the `--unsafe-fixes` option).
(Truncated to last 13333 characters out of 18919)
Notices
📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)
See detailed reports in MegaLinter artifacts

Show us your support by starring ⭐ the repository
liblaf
dismissed
liblaf-approve[bot]’s stale review
August 6, 2026 01:04
The merge-base changed after approval.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated changes by Shared / Copier Update Workflow