Skip to content

Commit 2917b58

Browse files
authored
Add files via upload (#306)
1 parent 774bdaa commit 2917b58

1 file changed

Lines changed: 173 additions & 0 deletions

File tree

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# deeptrack.backend.mie\n",
8+
"\n",
9+
"<a href=\"https://colab.research.google.com/github/DeepTrackAI/DeepTrack2/blob/develop/tutorials/3-advanced-topics/DTAT399E_backend.mie.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
10+
]
11+
},
12+
{
13+
"cell_type": "code",
14+
"execution_count": null,
15+
"metadata": {},
16+
"outputs": [],
17+
"source": [
18+
"# !pip install deeptrack # Uncomment if running on Colab/Kaggle."
19+
]
20+
},
21+
{
22+
"cell_type": "markdown",
23+
"metadata": {},
24+
"source": [
25+
"This advanced tutorial introduces the backend.mie module."
26+
]
27+
},
28+
{
29+
"cell_type": "markdown",
30+
"metadata": {},
31+
"source": [
32+
"## 1. What is `mie`?\n",
33+
"\n",
34+
"The `mie` module provides functions to perform Mie scattering calculations, including computation of spherical harmonics coefficients and related operations."
35+
]
36+
},
37+
{
38+
"cell_type": "markdown",
39+
"metadata": {},
40+
"source": [
41+
"## 2. Calculate Mie Coefficients for a Solid Particle\n"
42+
]
43+
},
44+
{
45+
"cell_type": "code",
46+
"execution_count": null,
47+
"metadata": {},
48+
"outputs": [],
49+
"source": [
50+
"from deeptrack.backend import mie\n",
51+
"\n",
52+
"\n",
53+
"particle_radius = 0.5\n",
54+
"relative_refract_index = 1.5 + 0.01j\n",
55+
"max_order = 5\n",
56+
"\n",
57+
"A, B = mie.coefficients(relative_refract_index, particle_radius, max_order)\n",
58+
"\n",
59+
"print(\"A coefficients:\", A)\n",
60+
"print(\"B coefficients:\", B)"
61+
]
62+
},
63+
{
64+
"cell_type": "markdown",
65+
"metadata": {},
66+
"source": [
67+
"## 2. Calculate Mie Coefficients for a Stratified Particle\n",
68+
"Here we only need to specify multiple radii for the different shells of the stratified particle."
69+
]
70+
},
71+
{
72+
"cell_type": "code",
73+
"execution_count": null,
74+
"metadata": {},
75+
"outputs": [],
76+
"source": [
77+
"particle_radii = [0.5, 0.6, 0.7]\n",
78+
"relative_refract_index = 1.5 + 0.01j\n",
79+
"max_order = 5\n",
80+
"\n",
81+
"A, B = mie.stratified_coefficients(relative_refract_index, particle_radii, max_order)\n",
82+
"\n",
83+
"print(\"A coefficients:\", A)\n",
84+
"print(\"B coefficients:\", B)"
85+
]
86+
},
87+
{
88+
"cell_type": "markdown",
89+
"metadata": {},
90+
"source": [
91+
"## 3. Calculate Spherical Harmonics of the Mie Field "
92+
]
93+
},
94+
{
95+
"cell_type": "code",
96+
"execution_count": null,
97+
"metadata": {},
98+
"outputs": [
99+
{
100+
"name": "stdout",
101+
"output_type": "stream",
102+
"text": [
103+
"(5, 100)\n",
104+
"(5, 100)\n"
105+
]
106+
},
107+
{
108+
"data": {
109+
"text/plain": [
110+
"(-0.5, 99.5, 4.5, -0.5)"
111+
]
112+
},
113+
"execution_count": 21,
114+
"metadata": {},
115+
"output_type": "execute_result"
116+
},
117+
{
118+
"data": {
119+
"image/png": "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",
120+
"text/plain": [
121+
"<Figure size 1000x1000 with 2 Axes>"
122+
]
123+
},
124+
"metadata": {},
125+
"output_type": "display_data"
126+
}
127+
],
128+
"source": [
129+
"import numpy as np\n",
130+
"from matplotlib import pyplot as plt\n",
131+
"\n",
132+
"\n",
133+
"x = np.linspace(-1, 1, 100)\n",
134+
"L = 5\n",
135+
"pi, tau = mie.harmonics(x, L)\n",
136+
"\n",
137+
"print(pi.shape)\n",
138+
"print(tau.shape)\n",
139+
"\n",
140+
"fig, axes = plt.subplots(1, 2, figsize=(10, 10))\n",
141+
"\n",
142+
"axes[0].imshow(tau, cmap='viridis') \n",
143+
"axes[0].set_title('Tau')\n",
144+
"axes[0].axis('off') \n",
145+
"\n",
146+
"axes[1].imshow(pi, cmap='viridis') \n",
147+
"axes[1].set_title('Pi')\n",
148+
"axes[1].axis('off') "
149+
]
150+
}
151+
],
152+
"metadata": {
153+
"kernelspec": {
154+
"display_name": ".venv",
155+
"language": "python",
156+
"name": "python3"
157+
},
158+
"language_info": {
159+
"codemirror_mode": {
160+
"name": "ipython",
161+
"version": 3
162+
},
163+
"file_extension": ".py",
164+
"mimetype": "text/x-python",
165+
"name": "python",
166+
"nbconvert_exporter": "python",
167+
"pygments_lexer": "ipython3",
168+
"version": "3.10.12"
169+
}
170+
},
171+
"nbformat": 4,
172+
"nbformat_minor": 2
173+
}

0 commit comments

Comments
 (0)