Interactive guides by Marcos Duarte and Renato Naville Watanabe, Laboratory of Biomechanics and Motor Control, UFABC.
The notebooks in this repository use marimo. Each guide combines explanations, executable examples, checkpoint questions, worked exercises, and independent problems with expandable final answers. Python introductions cover basic concepts directly in marimo.
Click a guide title to open its static HTML page, with saved text, tables and plots. You can also browse all guides.
Each page's header offers five choices:
- Static version: read the saved outputs.
- Download .py: save the corresponding marimo Python notebook for local use.
- Edit in browser: edit and run the notebook in your current browser.
- molab: open and run the notebook in molab.
- marimo.app: open and run the notebook in marimo.app.
In the browser editor, click Run all to compute results, then edit and rerun cells to experiment. It downloads the Python runtime, packages and linked data over the Internet. Browser edits do not update this repository; download the Python file to keep your own copy.
The Python sources can also be downloaded and opened locally. GitHub Actions automatically discovers the notebooks, rebuilds the site and publishes saved and editable versions on every push to master.
For local use, install uv, clone the repository, and run these commands from its root:
uv sync
uv run marimo edit notebooks/reference_frame.pyThe repository environment uses Python 3.14 or newer. Each notebook also declares its own dependencies for standalone use. There is no need to install or import pyodide in a notebook.
Examples use bundled data when the repository is available. Standalone notebooks download the same public assets into a temporary cache when needed. Keep an Internet connection for those assets and external media; file-format and analysis errors remain visible.
To refresh the saved pages after editing a notebook, use the export/update script. Static snapshots keep their saved results; their display assets and external media still require an Internet connection.
- How to install Python for scientific computing
- Python for scientific computing
- Tutorial on Python for scientific computing
- Version control with Git and GitHub
- Code structure for data analysis
- Scalar and vector
- Basic trigonometry
- Matrix
- Descriptive statistics of data
- Bayesian Statistics
- Confidence and prediction intervals
- Curve fitting
- Propagation of uncertainty (error)
- Frequency analysis
- Signal processing
- Introduction to numerical solution of Ordinary Differential Equation
- Optimization
- Change detection
- Time normalization of data
- Ensemble average
- Select data vectors by similarity using a metric score
- Data files
- Direct Linear Transformation (DLT)
- Frame of reference
- Determination of a coordinate system
- Path frame
- Polar and Cylindrical Frame of Reference
- Particle kinematics
- Rigid-body kinematics
- Angular kinematics in a plane (2D)
- Kinematic chain in a plane (2D)
- Velocity and acceleration of a point of a rigid body
- Rigid-body transformations in a plane (2D)
- Rigid-body transformations in three dimensions
- Determining rigid body transformation using the SVD algorithm
- Angular velocity in 3D movements
- Rotating an ellipsoid about one axis
- Ellipsoids, rotation sequences and a marker-derived basis
- Kinetics: fundamental concepts
- Center of Mass and Moment of Inertia
- Motion of a particle - Newtonian approach
- Newton-Euler equations for rigid bodies
- Free body diagram
- Three-dimensional rigid body kinetics
- Matrix Formalism of the Equations of Movement
- Lagrangian mechanics
- Lagrangian mechanics in generalized coordinates
- Principle of least action
- Body segment parameters
- Basic Mechanical Elements of a Muscle Model
- Viscoelastic Models of Biological Tissues
- Muscle modeling
- Muscle simulation
- Musculoskeletal modeling and simulation
- Multibody dynamics of one and two-link systems
- Matrix Formalism of the Newton-Euler equations
- The inverted pendulum model of the human standing
- Measurements in stabilography
- Postural sway: rambling and trembling
- Biomechanical analysis of vertical jumps
- Inverse dynamics (2D) for gait analysis
- Force plates
uv run pytest -q
uv run marimo check --strict notebooks/*.pyTo execute one notebook headlessly, use uv run marimo export html notebooks/reference_frame.py -o /tmp/ReferenceFrame.html. Running a notebook as python notebook.py opens its application; it does not verify all cell bodies.
The common repository-file resolver is imported from functions/notebook_resources.py.
Marimo's source search path is configured in pyproject.toml; changes to the
helper apply to every notebook that imports it.
If you download a notebook on its own and it reports that notebook_resources.py
is missing, use Download helper on its saved page, or
download the helper directly.
Save it in the same folder as the notebook, keeping the filename
notebook_resources.py, then rerun the import cell. Editable Pages exports
bundle the helper automatically.
Generated session state and saved outputs under __marimo__/ are ignored and
are not shipped with the sources; run the notebooks to generate their outputs.
Release metadata for Zenodo is maintained in .zenodo.json. The citation below refers to the archived v0.2.0 release.
Here is a suggestion to cite this GitHub repository:
Marcos Duarte and Renato Naville Watanabe. (2026). Notes on Scientific Computing for Biomechanics and Motor Control (Version v0.2.0). Zenodo. https://doi.org/10.5281/zenodo.23654869
And a BibTeX entry:
@misc{marcos_duarte_2026_23654869,
author = {Marcos Duarte and Renato Naville Watanabe},
title = {{Notes on Scientific Computing for Biomechanics and Motor Control}},
month = oct,
year = 2026,
publisher = {Zenodo},
doi = {10.5281/zenodo.23654869},
url = {https://doi.org/10.5281/zenodo.23654869}
}The non-software content of this project is licensed under a Creative Commons Attribution 4.0 International License, and the software code is licensed under the MIT license.