Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
d1c20a4
Add basic sample_model and tests
henrikjacobsenfys Oct 14, 2025
a782693
Clean up, fix tests
henrikjacobsenfys Oct 15, 2025
2fb844b
Improve tests
henrikjacobsenfys Oct 17, 2025
d4309fc
Update example and tests
henrikjacobsenfys Oct 17, 2025
cde9b4b
Add one more test
henrikjacobsenfys Oct 17, 2025
6f797f8
Added a few tests
henrikjacobsenfys Oct 17, 2025
3435da5
a few more tests
henrikjacobsenfys Oct 17, 2025
c0a4f2c
fix a test
henrikjacobsenfys Oct 17, 2025
a4ba794
respond to PR comments
henrikjacobsenfys Oct 17, 2025
d1d28d2
Use CollectionBase
henrikjacobsenfys Oct 20, 2025
ce49f05
Update example
henrikjacobsenfys Oct 20, 2025
0eb1bba
Merge branch 'develop' into SampleModel2
henrikjacobsenfys Oct 28, 2025
07c070a
Update to new ModelComponent
henrikjacobsenfys Oct 28, 2025
3a7187c
Cleanup and a few tests
henrikjacobsenfys Oct 28, 2025
8aa43c0
Respond to reviewer comments
henrikjacobsenfys Nov 1, 2025
28d0b0e
Tests :)
henrikjacobsenfys Nov 1, 2025
a41277b
Get rid of CollectionBase
henrikjacobsenfys Nov 13, 2025
e39a18e
add test of containts
henrikjacobsenfys Nov 13, 2025
8d3ad4d
Remove outcommented code
henrikjacobsenfys Nov 13, 2025
0d3e3eb
update docstring
henrikjacobsenfys Nov 13, 2025
4543ef7
Update model_component to NewBase
henrikjacobsenfys Dec 10, 2025
844d414
Update model_component and tests
henrikjacobsenfys Dec 10, 2025
c155a7d
update model_component
henrikjacobsenfys Dec 11, 2025
bde91b5
Update gaussian
henrikjacobsenfys Dec 11, 2025
fa50c93
update Lorentzian
henrikjacobsenfys Dec 11, 2025
ce8df0e
update DHO
henrikjacobsenfys Dec 11, 2025
6ade763
update delta function
henrikjacobsenfys Dec 11, 2025
da2462c
Update voigt
henrikjacobsenfys Dec 11, 2025
6d5a6af
Update Polynomial
henrikjacobsenfys Dec 11, 2025
6ccd646
Small updates to component docstrings
henrikjacobsenfys Dec 11, 2025
cdd208b
Update sample_model
henrikjacobsenfys Dec 11, 2025
7a5dd45
rename to ComponentCollection
henrikjacobsenfys Dec 12, 2025
4f7608e
Add a few tests, simplify polynomial
henrikjacobsenfys Dec 12, 2025
2d9c134
Update examples
henrikjacobsenfys Dec 12, 2025
65a941a
Update based on PR comments
henrikjacobsenfys Dec 15, 2025
f084461
Update type hints
henrikjacobsenfys Dec 15, 2025
23c8660
Add tests of to and from dict
henrikjacobsenfys Dec 15, 2025
49074d9
Add unique names in init
henrikjacobsenfys Dec 19, 2025
aae94eb
Fix some type hints
henrikjacobsenfys Dec 19, 2025
af3010b
Remove unneeded check in polynomial
henrikjacobsenfys Dec 19, 2025
5a89803
Update polynomial to not return list
henrikjacobsenfys Dec 19, 2025
7fb0a90
Allow center to be None in setters
henrikjacobsenfys Dec 19, 2025
0794808
Update DHO min center
henrikjacobsenfys Dec 19, 2025
cfd5c9a
small changes based on PR comments
henrikjacobsenfys Dec 19, 2025
b6059e6
Fix tests
henrikjacobsenfys Dec 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions examples/component_collection.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "64deaa41",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"from easydynamics.sample_model import Gaussian\n",
"from easydynamics.sample_model import Lorentzian\n",
"from easydynamics.sample_model import DampedHarmonicOscillator\n",
"from easydynamics.sample_model import Polynomial\n",
"\n",
"from easydynamics.sample_model import ComponentCollection\n",
"\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"%matplotlib widget"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f2d27900",
"metadata": {},
"outputs": [],
"source": [
"from scipy.integrate import simpson\n",
"\n",
"model = ComponentCollection(display_name=\"TestComponentCollection\")\n",
"component1 = Gaussian(\n",
" display_name=\"TestGaussian1\",\n",
" area=1.0,\n",
" center=0.0,\n",
" width=1.0,\n",
" unit=\"meV\",\n",
" unique_name=\"TestGaussian1\",\n",
")\n",
"component2 = Lorentzian(\n",
" display_name=\"TestLorentzian1\",\n",
" area=2.0,\n",
" center=1.0,\n",
" width=0.5,\n",
" unit=\"meV\",\n",
" unique_name=\"TestLorentzian1\",\n",
")\n",
"model.add_component(component1)\n",
"model.add_component(component2)\n",
"\n",
"model.normalize_area()\n",
"# EXPECT\n",
"x = np.linspace(-10000, 10000, 1000000) # Lorentzians have long tails\n",
"result = model.evaluate(x)\n",
"numerical_area = simpson(result, x)\n",
"\n",
"print(numerical_area)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe3b8780",
"metadata": {},
"outputs": [],
"source": [
"model.components[1].area"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "784d9e82",
"metadata": {},
"outputs": [],
"source": [
"component_collection=ComponentCollection()\n",
"\n",
"# Creating components\n",
"gaussian=Gaussian(display_name='Gaussian',width=0.5,area=1)\n",
"dho = DampedHarmonicOscillator(display_name='DHO',center=1.0,width=0.3,area=2.0)\n",
"lorentzian = Lorentzian(display_name='Lorentzian',center=-1.0,width=0.2,area=1.0)\n",
"polynomial = Polynomial(display_name='Polynomial',coefficients=[0.1, 0, 0.5]) # y=0.1+0.5*x^2\n",
"\n",
"# Adding components to the component collection\n",
"component_collection.add_component(gaussian)\n",
"component_collection.add_component(dho)\n",
"component_collection.add_component(lorentzian)\n",
"component_collection.add_component(polynomial)\n",
"\n",
"x=np.linspace(-2, 2, 100)\n",
"\n",
"plt.figure()\n",
"y=component_collection.evaluate(x)\n",
"plt.plot(x, y, label='Component collection')\n",
"\n",
"for component in component_collection.components:\n",
" y = component.evaluate(x)\n",
" plt.plot(x, y, label=component.display_name)\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "easydynamics_newbase",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
18 changes: 9 additions & 9 deletions examples/component_example.ipynb → examples/components.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"%matplotlib widget"
"%matplotlib widget\n"
]
},
{
Expand All @@ -30,10 +30,10 @@
"outputs": [],
"source": [
"# Creating a component\n",
"gaussian=Gaussian(name='Gaussian',width=0.5,area=1)\n",
"dho = DampedHarmonicOscillator(name='DHO',center=1.0,width=0.3,area=2.0)\n",
"lorentzian = Lorentzian(name='Lorentzian',center=-1.0,width=0.2,area=1.0)\n",
"polynomial = Polynomial(name='Polynomial',coefficients=[0.1, 0, 0.5]) # y=0.1+0.5*x^2\n",
"gaussian=Gaussian(display_name='Gaussian',width=0.5,area=1)\n",
"dho = DampedHarmonicOscillator(display_name='DHO',center=1.0,width=0.3,area=2.0)\n",
"lorentzian = Lorentzian(display_name='Lorentzian',center=-1.0,width=0.2,area=1.0)\n",
"polynomial = Polynomial(display_name='Polynomial',coefficients=[0.1, 0, 0.5]) # y=0.1+0.5*x^2\n",
"\n",
"x=np.linspace(-2, 2, 100)\n",
"\n",
Expand Down Expand Up @@ -72,7 +72,7 @@
"metadata": {},
"outputs": [],
"source": [
"delta = DeltaFunction(name='Delta', center=0.0, area=1.0)\n",
"delta = DeltaFunction(display_name='Delta', center=0.0, area=1.0)\n",
"x1=np.linspace(-2, 2, 100)\n",
"y=delta.evaluate(x1)\n",
"x2=np.linspace(-2,2,51)\n",
Expand Down Expand Up @@ -100,7 +100,7 @@
"x1=sc.linspace(dim='x', start=-2.0, stop=2.0, num=100, unit='meV')\n",
"x2=sc.linspace(dim='x', start=-2.0*1e3, stop=2.0*1e3, num=101, unit='microeV')\n",
"\n",
"polynomial = Polynomial(name='Polynomial',coefficients=[0.1, 0, 0.5]) # y=0.1+0.5*x^2\n",
"polynomial = Polynomial(display_name='Polynomial',coefficients=[0.1, 0, 0.5]) # y=0.1+0.5*x^2\n",
"y1=polynomial.evaluate(x1)\n",
"y2=polynomial.evaluate(x2)\n",
"\n",
Expand All @@ -114,7 +114,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "newdynamics",
"display_name": "easydynamics_newbase",
"language": "python",
"name": "python3"
},
Expand All @@ -128,7 +128,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.13"
"version": "3.12.12"
}
},
"nbformat": 4,
Expand Down
92 changes: 7 additions & 85 deletions examples/detailed_balance.ipynb

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/easydynamics/sample_model/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .component_collection import ComponentCollection
from .components import (
DampedHarmonicOscillator,
DeltaFunction,
Expand All @@ -8,7 +9,7 @@
)

__all__ = [
"SampleModel",
"ComponentCollection",
"Gaussian",
"Lorentzian",
"Voigt",
Expand Down
Loading