Skip to content

Commit 57eeb8b

Browse files
authored
DTAT: sources.rng (#287)
* Add files via upload * colab link
1 parent afc9a2b commit 57eeb8b

1 file changed

Lines changed: 154 additions & 0 deletions

File tree

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# deeptrack.sources.rng\n",
8+
"\n",
9+
"<a href=\"https://colab.research.google.com/github/DeepTrackAI/DeepTrack2/blob/develop/tutorials/3-advanced-topics/DTAT391C_sources.rng.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": 1,
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 sources.rng module."
26+
]
27+
},
28+
{
29+
"cell_type": "markdown",
30+
"metadata": {},
31+
"source": [
32+
"## 1. What is `rng`?\n",
33+
"\n",
34+
"The `rng` module is an extension of both Numpy and Python random number generator objects. It lets the user instance several generators with different seeds, returned as lists.\n"
35+
]
36+
},
37+
{
38+
"cell_type": "markdown",
39+
"metadata": {},
40+
"source": [
41+
"## 2. Instance Python random number generator objects.\n",
42+
"Generate a list of Python rng's and sample some numbers from them, followed by resetting the states and sampling once more."
43+
]
44+
},
45+
{
46+
"cell_type": "code",
47+
"execution_count": null,
48+
"metadata": {
49+
"execution": {
50+
"iopub.execute_input": "2022-06-29T20:33:47.187180Z",
51+
"iopub.status.busy": "2022-06-29T20:33:47.186679Z",
52+
"iopub.status.idle": "2022-06-29T20:33:50.691576Z",
53+
"shell.execute_reply": "2022-06-29T20:33:50.691075Z"
54+
}
55+
},
56+
"outputs": [
57+
{
58+
"name": "stdout",
59+
"output_type": "stream",
60+
"text": [
61+
"Python rng #0 yields a Random Number -> 36\n",
62+
"Python rng #1 yields a Random Number -> 83\n",
63+
"Python rng #2 yields a Random Number -> 28\n",
64+
"Python rng #0 yields a Random Number -> 36\n",
65+
"Python rng #1 yields a Random Number -> 83\n",
66+
"Python rng #2 yields a Random Number -> 28\n"
67+
]
68+
}
69+
],
70+
"source": [
71+
"from deeptrack.sources.rng import PythonRNG\n",
72+
"\n",
73+
"\n",
74+
"python_rng = PythonRNG(n_states=3, seed=123)\n",
75+
"states = python_rng._generate_states()\n",
76+
"\n",
77+
"for i, rng in enumerate(states):\n",
78+
" print(f\"Python rng #{i} yields a Random Number: {rng.randint(0, 100)}\")\n",
79+
"\n",
80+
"# Reset states to obtain the same numbers.\n",
81+
"python_rng.reset()\n",
82+
"new_states = python_rng._generate_states()\n",
83+
"\n",
84+
"for i, rng in enumerate(new_states):\n",
85+
" print(f\"Python rng #{i} yields a Random Number: {rng.randint(0, 100)}\")"
86+
]
87+
},
88+
{
89+
"cell_type": "markdown",
90+
"metadata": {},
91+
"source": [
92+
"## 3. Instance Numpy random number generator objects.\n",
93+
"In the same way, we do it for Numpy rng's."
94+
]
95+
},
96+
{
97+
"cell_type": "code",
98+
"execution_count": null,
99+
"metadata": {},
100+
"outputs": [
101+
{
102+
"name": "stdout",
103+
"output_type": "stream",
104+
"text": [
105+
"Numpy rng #0 yields a Random Number -> 4\n",
106+
"Numpy rng #1 yields a Random Number -> 88\n",
107+
"Numpy rng #2 yields a Random Number -> 55\n",
108+
"Numpy rng #0 yields a Random Number -> 4\n",
109+
"Numpy rng #1 yields a Random Number -> 88\n",
110+
"Numpy rng #2 yields a Random Number -> 55\n"
111+
]
112+
}
113+
],
114+
"source": [
115+
"from deeptrack.sources.rng import NumpyRNG\n",
116+
"\n",
117+
"\n",
118+
"numpy_rng = NumpyRNG(n_states=3, seed=123)\n",
119+
"states = numpy_rng._generate_states()\n",
120+
"\n",
121+
"for i, rng in enumerate(states):\n",
122+
" print(f\"Numpy rng #{i} yields a Random Number: {rng.randint(0, 100)}\")\n",
123+
"\n",
124+
"# Reset states to obtain the same numbers.\n",
125+
"numpy_rng.reset()\n",
126+
"new_states = numpy_rng._generate_states()\n",
127+
"\n",
128+
"for i, rng in enumerate(new_states):\n",
129+
" print(f\"Numpy rng #{i} yields a Random Number: {rng.randint(0, 100)}\")"
130+
]
131+
}
132+
],
133+
"metadata": {
134+
"kernelspec": {
135+
"display_name": "Python 3",
136+
"language": "python",
137+
"name": "python3"
138+
},
139+
"language_info": {
140+
"codemirror_mode": {
141+
"name": "ipython",
142+
"version": 3
143+
},
144+
"file_extension": ".py",
145+
"mimetype": "text/x-python",
146+
"name": "python",
147+
"nbconvert_exporter": "python",
148+
"pygments_lexer": "ipython3",
149+
"version": "3.9.13"
150+
}
151+
},
152+
"nbformat": 4,
153+
"nbformat_minor": 2
154+
}

0 commit comments

Comments
 (0)