Just a small function package for numpy, sympy and iminuit
Project description
functions_moedekjaer
It is a function collection written primarylly by Mikkel Møller Mødekjær
This repo ships two importable packages in one modekjar distribution:
| Package | What |
|---|---|
modekjar |
The original function collection — error propagation, χ² fitting, Fisher/ROC, plot helpers |
unf_fysisk_simulering |
Simulation library for UNF Fysik Camp, topic "Fysisk Simulering" (Danish) |
pip install modekjar # both packages
pip install "modekjar[hurtig]" # same, plus numba for the fast simulation kernels
import modekjar
from unf_fysisk_simulering import *
The unf_fysisk_simulering code is a copy of the standalone
unf-fysisk-simulering package, kept
here alongside the original functions. Its __version__ tracks the upstream release it was
copied from and is deliberately independent of modekjar's own version.
unf_fysisk_simulering
Simulerings-bibliotek til UNF Fysik Camp, emnet "Fysisk Simulering".
Idéen er, at du kun skal beskrive systemet — en differentialligning, nogle kemiske reaktioner, en hastighedsmodel — som en lille funktion. Så klarer biblioteket selve simuleringen og tegner pæne grafer. Alt er på dansk, og hver eneste funktion har en docstring, der forklarer både hvad den gør, og hvad fysikken bag er.
Installation
pip install modekjar
I Colab (øverst i notebooken):
!pip install -q modekjar
De tunge kerner (tilfældig gang, TASEP, Ising, skovbrand) kører meget hurtigere med numba. Er numba ikke installeret, virker alt stadig — bare langsommere:
pip install "modekjar[hurtig]" # med numba
Variablen HAR_NUMBA fortæller dig, hvilken af delene du kører med. Colab har numba med
i forvejen, så der behøver du ikke [hurtig].
Kom i gang
import numpy as np
import matplotlib.pyplot as plt
from unf_fysisk_simulering import *
def logistisk(t, x):
return 0.8 * x * (1 - x / 100) # dx/dt = r·x·(1 - x/K)
t, x = simuler_differential(logistisk, start=1.0, t_slut=20.0, dt=0.1)
plot_baner(t, x, titel="Logistisk vækst")
plt.show()
Hvad er der i?
Simulering
| Funktion | Hvad |
|---|---|
simuler_differential(f, start, t_slut, dt, metode) |
Differentialligninger — Eulers metode, RK4, RK45 |
simuler_maruyama(drift, stoej, start, t_slut, dt, ...) |
Stokastiske ligninger (Euler-Maruyama) |
simuler_brownsk(D, start, t_slut, dt, ...) |
Brownsk bevægelse |
simuler_tilfaeldig_gang(antal_skridt, antal_baner, dim) |
Tilfældig gang i 1D/2D/3D |
simuler_monte_carlo(forsoeg, antal) |
Kør et tilfældigt forsøg mange gange |
simuler_poisson(rate, t_slut, dt, metode) |
Poisson-proces, tids- eller hændelses-drevet |
simuler_gillespie(start_tilstand, reaktioner, t_slut) |
Gillespie-algoritmen |
simuler_tasep(L, alpha, beta, t_slut, dt) |
TASEP — trafik, ribosomer |
simuler_trafik(hastighedsmodel, L, antal_biler, ...) |
Trafik på en ringvej med din egen hastighedsmodel |
simuler_ising(L, T, antal_fejecyklusser) |
2D Ising-model (magnetisme) |
simuler_skovbrand(L, p_vaekst, p_lyn, antal_skridt) |
Skovbrand-celleautomat |
Biologi
| Funktion | Hvad |
|---|---|
simuler_epidemi_gitter(L, p_smitte, p_rask, ...) |
Epidemi på et gitter (rumlig SIR) |
simuler_epidemi_agenter(antal_personer, fart, radius, ...) |
Epidemi blandt personer, der bevæger sig |
simuler_wright_fisher(antal_individer, start_frekvens, s, ...) |
Genetisk drift |
simuler_neuron(stroem, stoej, ...) |
Neuron, der fyrer (integrate-and-fire) |
simuler_reaktion_diffusion(F, k, ...) |
Turing-mønstre — pletter og striber |
simuler_flok(antal_fugle, stoej, ...) |
Fugleflok uden leder (Vicsek) |
Grafer
| Funktion | Hvad |
|---|---|
plot_baner(t, x, ...) |
Kurver og baner |
plot_histogram(data, ...) |
En fordeling |
plot_rumtid(historik, ...) |
Rum-tid-diagram (trafikpropper) |
plot_faseplan(x, y, ...) |
To variable mod hinanden |
vis_gitter(gitter, ...) |
Øjebliksbillede af et gitter |
animer_gitter(historik, ...) |
Animation af et gitter |
animer_partikler(positioner, ...) |
Animation af prikker, der bevæger sig |
De fleste plot_*-funktioner tager gerne hele resultatet: plot_rumtid(res),
animer_partikler(res).
Slå en enkelt funktion op med help(simuler_gillespie).
Kursusmaterialet
Selve emnet — to Colab-notebooks med 51 opgaver, opgaveteksterne og de forklarende diagrammer — ligger i kursus-repoet UNF-Science-Camps/FysikCamp2026.
Udvikling
setup.py # metadata + afhængigheder for HELE distributionen
pyproject.toml # kun byggesystemet
src/modekjar/ # den oprindelige funktionssamling
src/unf_fysisk_simulering/ # simulerings-pakken
simulering.py # hoved-API
_kerner.py # numba-kerner med ren-Python-fallback
tests/
test_simulering.py # tjekker hver funktion mod det, fysikken forudsiger
.github/workflows/
test.yml # CI: begge kerne-veje, og at hjulet kan installeres
publish.yml # udgiver til PyPI på en GitHub Release
pip install -e ".[hurtig]" # installér til udvikling
python tests/test_simulering.py # selvtest (numba aktiv)
SIMULERING_INGEN_NUMBA=1 python tests/test_simulering.py # samme, ren Python
Udgiv en ny version
Uploaden bruger PyPI Trusted Publishing — der ligger ingen API-token i repoet. Det skal sættes op én gang:
-
På PyPI → Your projects → Publishing → Add a pending publisher:
Felt Værdi PyPI Project Name modekjarOwner mimodekjaerRepository name functions_moedekjaerWorkflow name publish.ymlEnvironment name pypi -
På GitHub → Settings → Environments → New environment →
pypi.
Derefter er en udgivelse:
# 1) sæt versionen i setup.py
git commit -am "v0.0.4" && git tag v0.0.4 && git push --follow-tags
# 2) lav en Release på taggen i GitHub -> publish.yml kører
publish.yml nægter at uploade, hvis taggen og setup.py ikke er enige om
versionsnummeret. PyPI tillader nemlig ikke, at det samme versionsnummer uploades to
gange — så en fejl her kan ikke fortrydes.
Licens
MIT — se LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modekjar-1.0.0.tar.gz.
File metadata
- Download URL: modekjar-1.0.0.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb527b3233eead79fef7fc81287203639af36383af482afd39c7b0cedb7b5b0a
|
|
| MD5 |
b2995f758a81fd7096cc7dd55388165a
|
|
| BLAKE2b-256 |
0503c6dab92339ec0b663096d69c2b2b178b024760a44c687c6f5310c8b41300
|
File details
Details for the file modekjar-1.0.0-py3-none-any.whl.
File metadata
- Download URL: modekjar-1.0.0-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd3a777700b877f195d64dc072bc58e5efdbab7172debc39a0e9460025e185bf
|
|
| MD5 |
110c958d9511a4e0560a659921e96a4c
|
|
| BLAKE2b-256 |
2e700ec4b688729ec792c00b5dfc8629517833b39b9118c4ecbc9a1ba0e22b9f
|