simcats 1.2.0__tar.gz → 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simcats-1.2.0 → simcats-2.0.0}/PKG-INFO +60 -30
- {simcats-1.2.0 → simcats-2.0.0}/README.md +55 -26
- {simcats-1.2.0 → simcats-2.0.0}/pyproject.toml +7 -3
- {simcats-1.2.0 → simcats-2.0.0}/simcats/__init__.py +4 -3
- simcats-2.0.0/simcats/_default_configs.py +206 -0
- simcats-2.0.0/simcats/_simulation.py +842 -0
- simcats-2.0.0/simcats/config_samplers/_GaAs_v1_random_variations_v3_config_sampler.py +1059 -0
- simcats-2.0.0/simcats/config_samplers/__init__.py +9 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_distortion_interfaces.py +1 -1
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_dot_jumps.py +8 -6
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_random_telegraph_noise.py +4 -4
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_transition_blurring.py +5 -5
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_white_noise.py +2 -2
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_generate_lead_transition_mask.py +3 -3
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_get_electron_occupation.py +5 -5
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_ideal_csd_geometric.py +5 -5
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_ideal_csd_geometric_class.py +9 -9
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_tct_bezier.py +5 -5
- simcats-2.0.0/simcats/sensor/__init__.py +15 -0
- simcats-1.2.0/simcats/sensor/_generic_sensor.py → simcats-2.0.0/simcats/sensor/_sensor_generic.py +1 -1
- simcats-2.0.0/simcats/sensor/_sensor_interface.py +261 -0
- simcats-2.0.0/simcats/sensor/_sensor_rise_glf.py +229 -0
- simcats-2.0.0/simcats/sensor/_sensor_scan_sensor_generic.py +929 -0
- simcats-2.0.0/simcats/sensor/barrier_function/__init__.py +9 -0
- simcats-2.0.0/simcats/sensor/barrier_function/_barrier_function_glf.py +280 -0
- simcats-2.0.0/simcats/sensor/barrier_function/_barrier_function_interface.py +43 -0
- simcats-2.0.0/simcats/sensor/barrier_function/_barrier_function_multi_glf.py +157 -0
- simcats-2.0.0/simcats/sensor/deformation/__init__.py +9 -0
- simcats-2.0.0/simcats/sensor/deformation/_sensor_peak_deformation_circle.py +109 -0
- simcats-2.0.0/simcats/sensor/deformation/_sensor_peak_deformation_interface.py +65 -0
- simcats-2.0.0/simcats/sensor/deformation/_sensor_peak_deformation_linear.py +77 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/__init__.py +9 -1
- simcats-2.0.0/simcats/support_functions/_generalized_logistic_function.py +146 -0
- simcats-2.0.0/simcats/support_functions/_linear_algebra.py +171 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_parameter_sampling.py +21 -23
- simcats-2.0.0/simcats/support_functions/_pixel_volt_transformation.py +24 -0
- simcats-2.0.0/simcats/support_functions/_reset_offset_mu_sens.py +43 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats.egg-info/PKG-INFO +60 -30
- {simcats-1.2.0 → simcats-2.0.0}/simcats.egg-info/SOURCES.txt +19 -3
- simcats-1.2.0/simcats/_default_configs.py +0 -90
- simcats-1.2.0/simcats/_simulation.py +0 -460
- simcats-1.2.0/simcats/sensor/__init__.py +0 -11
- simcats-1.2.0/simcats/sensor/_sensor_interface.py +0 -108
- {simcats-1.2.0 → simcats-2.0.0}/LICENSE +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/setup.cfg +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/setup.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/__init__.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/distortions/_pink_noise.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/__init__.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/_ideal_csd_interface.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/__init__.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_calculate_all_bezier_anchors.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/ideal_csd/geometric/_initialize_tct_functions.py +0 -0
- /simcats-1.2.0/simcats/sensor/_gaussian_sensor_peak.py → /simcats-2.0.0/simcats/sensor/_sensor_peak_gaussian.py +0 -0
- /simcats-1.2.0/simcats/sensor/_lorentzian_sensor_peak.py → /simcats-2.0.0/simcats/sensor/_sensor_peak_lorentzian.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_cumulative_distribution_functions.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_fermi_filter1d.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_plotting.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_rotate_points.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats/support_functions/_signed_dist_points_line.py +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats.egg-info/dependency_links.txt +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats.egg-info/requires.txt +0 -0
- {simcats-1.2.0 → simcats-2.0.0}/simcats.egg-info/top_level.txt +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: simcats
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Summary: SimCATS is a python framework for simulating charge stability diagrams (CSDs) typically measured during the tuning process of qubits.
|
|
5
|
-
Author-email: Fabian Hader <f.hader@fz-juelich.de>, Sarah Fleitmann <s.fleitmann@fz-juelich.de>, Fabian Fuchs <f.fuchs@fz-juelich.de>
|
|
6
|
-
License: CC
|
|
5
|
+
Author-email: Fabian Hader <f.hader@fz-juelich.de>, Sarah Fleitmann <s.fleitmann@fz-juelich.de>, Benjamin Papajewski <b.papajewski@fz-juelich.de>, Fabian Fuchs <f.fuchs@fz-juelich.de>, Karin Havemann <k.havemann@fz-juelich.de>, Jan Vogelbruch <j.vogelbruch@fz-juelich.de>
|
|
6
|
+
License-Expression: CC-BY-NC-SA-4.0
|
|
7
7
|
Project-URL: homepage, https://github.com/f-hader/SimCATS
|
|
8
8
|
Project-URL: documentation, https://simcats.readthedocs.io
|
|
9
9
|
Project-URL: source, https://github.com/f-hader/SimCATS
|
|
@@ -30,6 +30,7 @@ Requires-Dist: numpy
|
|
|
30
30
|
Requires-Dist: opencv-python
|
|
31
31
|
Requires-Dist: scipy
|
|
32
32
|
Requires-Dist: sympy
|
|
33
|
+
Dynamic: license-file
|
|
33
34
|
|
|
34
35
|
<h1 align="center">
|
|
35
36
|
<img src="https://raw.githubusercontent.com/f-hader/SimCATS/main/SimCATS_symbol.svg" alt="SimCATS logo">
|
|
@@ -47,14 +48,19 @@ Requires-Dist: sympy
|
|
|
47
48
|
<img src="https://img.shields.io/readthedocs/simcats" alt="Read the Docs"/>
|
|
48
49
|
</a>
|
|
49
50
|
<a href="https://doi.org/10.1109/TQE.2024.3445967">
|
|
50
|
-
<img src="https://img.shields.io/badge/DOI-10.1109/TQE.2024.3445967-007ec6.svg" alt="DOI
|
|
51
|
+
<img src="https://img.shields.io/badge/DOI (Paper)-10.1109/TQE.2024.3445967-007ec6.svg" alt="DOI Paper"/>
|
|
52
|
+
</a>
|
|
53
|
+
<a href="https://doi.org/10.5281/zenodo.13805205">
|
|
54
|
+
<img src="https://img.shields.io/badge/DOI (Code)-10.5281/zenodo.13805205-007ec6.svg" alt="DOI Code"/>
|
|
51
55
|
</a>
|
|
52
56
|
</div>
|
|
53
57
|
|
|
54
58
|
# SimCATS
|
|
55
59
|
|
|
56
60
|
Simulation of CSDs for Automated Tuning Solutions (`SimCATS`) is a Python framework for simulating charge stability
|
|
57
|
-
diagrams (CSDs) typically measured during the tuning process of qubits.
|
|
61
|
+
diagrams (CSDs) typically measured during the tuning process of qubits. <br>
|
|
62
|
+
Starting with version 2.0, the framework additionally allows simulating sensor scans. This enables to simulate the
|
|
63
|
+
(re)configuration of the sensor dot before measuring a CSD.
|
|
58
64
|
|
|
59
65
|
## Installation
|
|
60
66
|
|
|
@@ -76,9 +82,10 @@ For the installation in development/editable mode, use the option `-e`.
|
|
|
76
82
|
After installing the package, a good starting point is a look into the Jupyter Notebook
|
|
77
83
|
`example_SimCATS_simulation_class.ipynb`, which provides an overview of the usage of the simulation class offered by
|
|
78
84
|
the framework.
|
|
79
|
-
For more detailed examples and explanations of the geometric ideal CSD simulation using Total Charge Transitions (TCTs),
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
For more detailed examples and explanations of the geometric ideal CSD simulation using Total Charge Transitions (TCTs),
|
|
86
|
+
look at the Jupyter Notebook `example_SimCATS_IdealCSDGeometric.ipynb`. This notebook also includes a hint regarding the
|
|
87
|
+
generation of required labels for training algorithms that might need line labels defined as start and end points or
|
|
88
|
+
require semantic information about particular transitions.
|
|
82
89
|
|
|
83
90
|
## Tests
|
|
84
91
|
|
|
@@ -98,7 +105,8 @@ pytest --cov=simcats -n auto --dist loadfile .\tests\
|
|
|
98
105
|
|
|
99
106
|
The argument
|
|
100
107
|
- `--cov=simcats` enables a coverage summary of the `SimCATS` package,
|
|
101
|
-
- `-n auto` enables the test to run with multiple threads (auto will choose as many threads as possible, but can be
|
|
108
|
+
- `-n auto` enables the test to run with multiple threads (auto will choose as many threads as possible, but can be
|
|
109
|
+
replaced with a specific number of threads to use), and
|
|
102
110
|
- `--dist loadfile` specifies that each file should be executed only by one thread.
|
|
103
111
|
|
|
104
112
|
<!-- start sec:documentation -->
|
|
@@ -125,8 +133,8 @@ To view the generated HTML documentation, open the file `docs\build\html\index.h
|
|
|
125
133
|
The primary user interface for `SimCATS` is the class `Simulation`, which combines all the necessary functionalities to
|
|
126
134
|
measure (simulate) a CSD and adjust the parameters for the simulated measurement. The class `Simulation` and default
|
|
127
135
|
configurations for the simulation (`default_configs`) can be imported directly from `simcats`. Aside from that,
|
|
128
|
-
`SimCATS` contains the subpackages `ideal_csd`, `sensor`, `distortions`, and `support_functions`, described in
|
|
129
|
-
|
|
136
|
+
`SimCATS` contains the subpackages `ideal_csd`, `sensor`, `distortions`, and `support_functions`, described in the
|
|
137
|
+
following sections.
|
|
130
138
|
|
|
131
139
|
### Module `simulation`
|
|
132
140
|
|
|
@@ -135,21 +143,24 @@ An instance of the simulation class requires
|
|
|
135
143
|
- an implementation of the `IdealCSDInterface` for the simulation of ideal CSD data,
|
|
136
144
|
- an implementation of the `SensorInterface` for the simulation of the sensor (dot) reaction based on the ideal CSD
|
|
137
145
|
data, and
|
|
138
|
-
- (optionally) implementations of the desired types of distortions, which can be implementations from
|
|
146
|
+
- (optionally) implementations of the desired types of distortions, which can be implementations from
|
|
147
|
+
`OccupationDistortionInterface`, `SensorPotentialDistortionInterface`, or `SensorResponseDistortionInterface`.
|
|
139
148
|
|
|
140
149
|
With an initialized instance of the `Simulation` class, it is possible to run simulations using the `measure` function
|
|
141
150
|
(see `example_SimCATS_simulation_class.ipynb`).
|
|
142
151
|
|
|
143
152
|
### Subpackage `ideal_csd`
|
|
144
153
|
|
|
145
|
-
This subpackage contains the `IdealCSDInterface` used by the `Simulation` class
|
|
146
|
-
|
|
154
|
+
This subpackage contains the `IdealCSDInterface` used by the `Simulation` class and an implementation of the
|
|
155
|
+
`IdealCSDInterface` (`IdealCSDGeometric`) based on our geometric simulation approach. Please have a look at the notebook
|
|
156
|
+
`example_SimCATS_IdealCSDGeometric.ipynb` and the `SimCATS` paper for detailed explanations regarding the geometric
|
|
157
|
+
approach.
|
|
147
158
|
Additionally, it contains in the subpackage `geometric` the functions used by `IdealCSDGeometric`, including the
|
|
148
159
|
implementation of the total charge transition (TCT) definition and functions for calculating the occupations using TCTs.
|
|
149
160
|
|
|
150
161
|
### Subpackage `distortions`
|
|
151
162
|
|
|
152
|
-
The distortions subpackage contains the `DistortionInterface` from which the `OccupationDistortionInterface`, the
|
|
163
|
+
The `distortions` subpackage contains the `DistortionInterface` from which the `OccupationDistortionInterface`, the
|
|
153
164
|
`SensorPotentialDistortionInterface`, and the `SensorResponseDistortionInterface` are derived. Distortion functions used
|
|
154
165
|
in the `Simulation` class have to implement these specific interfaces. Implemented distortions included in the
|
|
155
166
|
subpackage are:
|
|
@@ -160,22 +171,41 @@ subpackage are:
|
|
|
160
171
|
- dot jumps, simulated using the algorithm described in ["Toward Robust Autotuning of Noisy Quantum Dot Devices" by Ziegler et al.](https://doi.org/10.1103/PhysRevApplied.17.024069) (In the `Simulation` class, this is applied to a whole block of rows or columns, but there is also a function for applying it linewise.), and
|
|
161
172
|
- lead transition blurring, simulated using Gaussian or Fermi-Dirac blurring.
|
|
162
173
|
|
|
163
|
-
The implementations also offer the option to set ratios (parameter `ratio`) for the occurrence of the distortion (e.g.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
the subpackage
|
|
167
|
-
In this case, the strength is randomly chosen from the given range for every measurement.
|
|
168
|
-
Additionally, it is possible to specify that this range should be a smaller subrange of the provided range.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
RTN, dot jumps, and lead transition blurring are applied in the pixel domain. However, the jump length or the blurring
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
174
|
+
The implementations also offer the option to set ratios (parameter `ratio`) for the occurrence of the distortion (e.g.
|
|
175
|
+
dot jumps may only happen sometimes and not in every measurement). Moreover, it is also possible to sample the noise
|
|
176
|
+
parameters from a given sampling range using an object of type `ParameterSamplingInterface`. Classes for randomly
|
|
177
|
+
sampling from a normal distribution or a uniform distribution within a given range are available in the subpackage
|
|
178
|
+
`support_functions`. In this case, the strength is randomly chosen from the given range for every measurement.
|
|
179
|
+
Additionally, it is possible to specify that this range should be a smaller subrange of the provided range. This allows
|
|
180
|
+
restricting distortion fluctuations during a simulation while enabling a large variety of different strengths for the
|
|
181
|
+
initialization of the objects. <br>
|
|
182
|
+
RTN, dot jumps, and lead transition blurring are applied in the pixel domain. However, the jump length or the blurring
|
|
183
|
+
strength should be consistent in the voltage domain even if the resolution changes. Therefore, the parameters are given
|
|
184
|
+
in the voltage domain and adjusted according to the resolution in terms of pixel per voltage. <br>
|
|
185
|
+
For a simulated measurement with a continuous voltage sweep involving an averaging for each pixel, the noise strength of
|
|
186
|
+
the white and pink noise should be adjusted if the resolution (volt per pixel) changes, due to smoothing out the noise.
|
|
187
|
+
This smoothing depends on the type of averaging used and is not incorporated in the default implementation.
|
|
175
188
|
|
|
176
189
|
### Subpackage `sensor`
|
|
177
190
|
|
|
178
|
-
This subpackage contains the `SensorInterface` that defines how a sensor simulation must be implemented to be used by
|
|
191
|
+
This subpackage contains the `SensorInterface` that defines how a sensor simulation must be implemented to be used by
|
|
192
|
+
the `Simulation` class. The `SensorPeakInterface` provides the desired representation for the definition of the Coulomb
|
|
193
|
+
peaks the sensor uses. `SensorGeneric` implements the `SensorInterface` and offers functions for simulating the sensor
|
|
194
|
+
response and potential. It offers the possibility to simulate with a single peak or multiple sensor peaks. Current
|
|
195
|
+
implementations of the `SensorPeakInterface` are `SensorPeakGaussian` and `SensorPeakLorentzian`. <br>
|
|
196
|
+
Starting with version 2.0, an extension of the `SensorInterface` called `SensorScanSensorInterface` is available.
|
|
197
|
+
Implementations of this interface allow simulating sensor scans in addition to CSDs. This enables to simulate the
|
|
198
|
+
(re)configuration of the sensor dot before measuring a CSD. `SensorScanSensorGeneric` implements the
|
|
199
|
+
`SensorScanSensorInterface`, modeling the sensor dot as three resistors in series (barrier, dot, barrier). The function
|
|
200
|
+
describing the dot is similar to the function in the `SensorGeneric`, but has an additional final rise of the signal
|
|
201
|
+
after the last Coulomb peak (an implementation of the `SensorRiseInterface`). A new interface called
|
|
202
|
+
`BarrierFunctionInterface` defines how the barrier functions must be implemented. These functions, which basically model
|
|
203
|
+
the shape of a pinch-off measurement, are currently implemented using generalized logistic functions
|
|
204
|
+
(`BarrierFunctionGLF`, `BarrierFunctionMultiGLF`). The potentials for both barriers and the dot itself are calculated
|
|
205
|
+
from the applied voltages and provided lever-arms. Then, the barrier and dot functions are applied to calculate the
|
|
206
|
+
individual conductances. Finally, these conductances are combined to retrieve the sensor signal (proportional to the
|
|
207
|
+
total conductance across the sensor dot).
|
|
208
|
+
|
|
179
209
|
|
|
180
210
|
### Subpackage `support_functions`
|
|
181
211
|
|
|
@@ -215,4 +245,4 @@ This work is licensed under a
|
|
|
215
245
|
|
|
216
246
|
Contributions must follow the Contributor License Agreement. For more information, see the CONTRIBUTING.md file at the top of the GitHub repository.
|
|
217
247
|
|
|
218
|
-
Copyright ©
|
|
248
|
+
Copyright © 2026 Peter Grünberg Institute - Integrated Computing Architectures (ICA / PGI-4), Forschungszentrum Jülich GmbH
|
|
@@ -14,14 +14,19 @@
|
|
|
14
14
|
<img src="https://img.shields.io/readthedocs/simcats" alt="Read the Docs"/>
|
|
15
15
|
</a>
|
|
16
16
|
<a href="https://doi.org/10.1109/TQE.2024.3445967">
|
|
17
|
-
<img src="https://img.shields.io/badge/DOI-10.1109/TQE.2024.3445967-007ec6.svg" alt="DOI
|
|
17
|
+
<img src="https://img.shields.io/badge/DOI (Paper)-10.1109/TQE.2024.3445967-007ec6.svg" alt="DOI Paper"/>
|
|
18
|
+
</a>
|
|
19
|
+
<a href="https://doi.org/10.5281/zenodo.13805205">
|
|
20
|
+
<img src="https://img.shields.io/badge/DOI (Code)-10.5281/zenodo.13805205-007ec6.svg" alt="DOI Code"/>
|
|
18
21
|
</a>
|
|
19
22
|
</div>
|
|
20
23
|
|
|
21
24
|
# SimCATS
|
|
22
25
|
|
|
23
26
|
Simulation of CSDs for Automated Tuning Solutions (`SimCATS`) is a Python framework for simulating charge stability
|
|
24
|
-
diagrams (CSDs) typically measured during the tuning process of qubits.
|
|
27
|
+
diagrams (CSDs) typically measured during the tuning process of qubits. <br>
|
|
28
|
+
Starting with version 2.0, the framework additionally allows simulating sensor scans. This enables to simulate the
|
|
29
|
+
(re)configuration of the sensor dot before measuring a CSD.
|
|
25
30
|
|
|
26
31
|
## Installation
|
|
27
32
|
|
|
@@ -43,9 +48,10 @@ For the installation in development/editable mode, use the option `-e`.
|
|
|
43
48
|
After installing the package, a good starting point is a look into the Jupyter Notebook
|
|
44
49
|
`example_SimCATS_simulation_class.ipynb`, which provides an overview of the usage of the simulation class offered by
|
|
45
50
|
the framework.
|
|
46
|
-
For more detailed examples and explanations of the geometric ideal CSD simulation using Total Charge Transitions (TCTs),
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
For more detailed examples and explanations of the geometric ideal CSD simulation using Total Charge Transitions (TCTs),
|
|
52
|
+
look at the Jupyter Notebook `example_SimCATS_IdealCSDGeometric.ipynb`. This notebook also includes a hint regarding the
|
|
53
|
+
generation of required labels for training algorithms that might need line labels defined as start and end points or
|
|
54
|
+
require semantic information about particular transitions.
|
|
49
55
|
|
|
50
56
|
## Tests
|
|
51
57
|
|
|
@@ -65,7 +71,8 @@ pytest --cov=simcats -n auto --dist loadfile .\tests\
|
|
|
65
71
|
|
|
66
72
|
The argument
|
|
67
73
|
- `--cov=simcats` enables a coverage summary of the `SimCATS` package,
|
|
68
|
-
- `-n auto` enables the test to run with multiple threads (auto will choose as many threads as possible, but can be
|
|
74
|
+
- `-n auto` enables the test to run with multiple threads (auto will choose as many threads as possible, but can be
|
|
75
|
+
replaced with a specific number of threads to use), and
|
|
69
76
|
- `--dist loadfile` specifies that each file should be executed only by one thread.
|
|
70
77
|
|
|
71
78
|
<!-- start sec:documentation -->
|
|
@@ -92,8 +99,8 @@ To view the generated HTML documentation, open the file `docs\build\html\index.h
|
|
|
92
99
|
The primary user interface for `SimCATS` is the class `Simulation`, which combines all the necessary functionalities to
|
|
93
100
|
measure (simulate) a CSD and adjust the parameters for the simulated measurement. The class `Simulation` and default
|
|
94
101
|
configurations for the simulation (`default_configs`) can be imported directly from `simcats`. Aside from that,
|
|
95
|
-
`SimCATS` contains the subpackages `ideal_csd`, `sensor`, `distortions`, and `support_functions`, described in
|
|
96
|
-
|
|
102
|
+
`SimCATS` contains the subpackages `ideal_csd`, `sensor`, `distortions`, and `support_functions`, described in the
|
|
103
|
+
following sections.
|
|
97
104
|
|
|
98
105
|
### Module `simulation`
|
|
99
106
|
|
|
@@ -102,21 +109,24 @@ An instance of the simulation class requires
|
|
|
102
109
|
- an implementation of the `IdealCSDInterface` for the simulation of ideal CSD data,
|
|
103
110
|
- an implementation of the `SensorInterface` for the simulation of the sensor (dot) reaction based on the ideal CSD
|
|
104
111
|
data, and
|
|
105
|
-
- (optionally) implementations of the desired types of distortions, which can be implementations from
|
|
112
|
+
- (optionally) implementations of the desired types of distortions, which can be implementations from
|
|
113
|
+
`OccupationDistortionInterface`, `SensorPotentialDistortionInterface`, or `SensorResponseDistortionInterface`.
|
|
106
114
|
|
|
107
115
|
With an initialized instance of the `Simulation` class, it is possible to run simulations using the `measure` function
|
|
108
116
|
(see `example_SimCATS_simulation_class.ipynb`).
|
|
109
117
|
|
|
110
118
|
### Subpackage `ideal_csd`
|
|
111
119
|
|
|
112
|
-
This subpackage contains the `IdealCSDInterface` used by the `Simulation` class
|
|
113
|
-
|
|
120
|
+
This subpackage contains the `IdealCSDInterface` used by the `Simulation` class and an implementation of the
|
|
121
|
+
`IdealCSDInterface` (`IdealCSDGeometric`) based on our geometric simulation approach. Please have a look at the notebook
|
|
122
|
+
`example_SimCATS_IdealCSDGeometric.ipynb` and the `SimCATS` paper for detailed explanations regarding the geometric
|
|
123
|
+
approach.
|
|
114
124
|
Additionally, it contains in the subpackage `geometric` the functions used by `IdealCSDGeometric`, including the
|
|
115
125
|
implementation of the total charge transition (TCT) definition and functions for calculating the occupations using TCTs.
|
|
116
126
|
|
|
117
127
|
### Subpackage `distortions`
|
|
118
128
|
|
|
119
|
-
The distortions subpackage contains the `DistortionInterface` from which the `OccupationDistortionInterface`, the
|
|
129
|
+
The `distortions` subpackage contains the `DistortionInterface` from which the `OccupationDistortionInterface`, the
|
|
120
130
|
`SensorPotentialDistortionInterface`, and the `SensorResponseDistortionInterface` are derived. Distortion functions used
|
|
121
131
|
in the `Simulation` class have to implement these specific interfaces. Implemented distortions included in the
|
|
122
132
|
subpackage are:
|
|
@@ -127,22 +137,41 @@ subpackage are:
|
|
|
127
137
|
- dot jumps, simulated using the algorithm described in ["Toward Robust Autotuning of Noisy Quantum Dot Devices" by Ziegler et al.](https://doi.org/10.1103/PhysRevApplied.17.024069) (In the `Simulation` class, this is applied to a whole block of rows or columns, but there is also a function for applying it linewise.), and
|
|
128
138
|
- lead transition blurring, simulated using Gaussian or Fermi-Dirac blurring.
|
|
129
139
|
|
|
130
|
-
The implementations also offer the option to set ratios (parameter `ratio`) for the occurrence of the distortion (e.g.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
the subpackage
|
|
134
|
-
In this case, the strength is randomly chosen from the given range for every measurement.
|
|
135
|
-
Additionally, it is possible to specify that this range should be a smaller subrange of the provided range.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
RTN, dot jumps, and lead transition blurring are applied in the pixel domain. However, the jump length or the blurring
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
The implementations also offer the option to set ratios (parameter `ratio`) for the occurrence of the distortion (e.g.
|
|
141
|
+
dot jumps may only happen sometimes and not in every measurement). Moreover, it is also possible to sample the noise
|
|
142
|
+
parameters from a given sampling range using an object of type `ParameterSamplingInterface`. Classes for randomly
|
|
143
|
+
sampling from a normal distribution or a uniform distribution within a given range are available in the subpackage
|
|
144
|
+
`support_functions`. In this case, the strength is randomly chosen from the given range for every measurement.
|
|
145
|
+
Additionally, it is possible to specify that this range should be a smaller subrange of the provided range. This allows
|
|
146
|
+
restricting distortion fluctuations during a simulation while enabling a large variety of different strengths for the
|
|
147
|
+
initialization of the objects. <br>
|
|
148
|
+
RTN, dot jumps, and lead transition blurring are applied in the pixel domain. However, the jump length or the blurring
|
|
149
|
+
strength should be consistent in the voltage domain even if the resolution changes. Therefore, the parameters are given
|
|
150
|
+
in the voltage domain and adjusted according to the resolution in terms of pixel per voltage. <br>
|
|
151
|
+
For a simulated measurement with a continuous voltage sweep involving an averaging for each pixel, the noise strength of
|
|
152
|
+
the white and pink noise should be adjusted if the resolution (volt per pixel) changes, due to smoothing out the noise.
|
|
153
|
+
This smoothing depends on the type of averaging used and is not incorporated in the default implementation.
|
|
142
154
|
|
|
143
155
|
### Subpackage `sensor`
|
|
144
156
|
|
|
145
|
-
This subpackage contains the `SensorInterface` that defines how a sensor simulation must be implemented to be used by
|
|
157
|
+
This subpackage contains the `SensorInterface` that defines how a sensor simulation must be implemented to be used by
|
|
158
|
+
the `Simulation` class. The `SensorPeakInterface` provides the desired representation for the definition of the Coulomb
|
|
159
|
+
peaks the sensor uses. `SensorGeneric` implements the `SensorInterface` and offers functions for simulating the sensor
|
|
160
|
+
response and potential. It offers the possibility to simulate with a single peak or multiple sensor peaks. Current
|
|
161
|
+
implementations of the `SensorPeakInterface` are `SensorPeakGaussian` and `SensorPeakLorentzian`. <br>
|
|
162
|
+
Starting with version 2.0, an extension of the `SensorInterface` called `SensorScanSensorInterface` is available.
|
|
163
|
+
Implementations of this interface allow simulating sensor scans in addition to CSDs. This enables to simulate the
|
|
164
|
+
(re)configuration of the sensor dot before measuring a CSD. `SensorScanSensorGeneric` implements the
|
|
165
|
+
`SensorScanSensorInterface`, modeling the sensor dot as three resistors in series (barrier, dot, barrier). The function
|
|
166
|
+
describing the dot is similar to the function in the `SensorGeneric`, but has an additional final rise of the signal
|
|
167
|
+
after the last Coulomb peak (an implementation of the `SensorRiseInterface`). A new interface called
|
|
168
|
+
`BarrierFunctionInterface` defines how the barrier functions must be implemented. These functions, which basically model
|
|
169
|
+
the shape of a pinch-off measurement, are currently implemented using generalized logistic functions
|
|
170
|
+
(`BarrierFunctionGLF`, `BarrierFunctionMultiGLF`). The potentials for both barriers and the dot itself are calculated
|
|
171
|
+
from the applied voltages and provided lever-arms. Then, the barrier and dot functions are applied to calculate the
|
|
172
|
+
individual conductances. Finally, these conductances are combined to retrieve the sensor signal (proportional to the
|
|
173
|
+
total conductance across the sensor dot).
|
|
174
|
+
|
|
146
175
|
|
|
147
176
|
### Subpackage `support_functions`
|
|
148
177
|
|
|
@@ -182,4 +211,4 @@ This work is licensed under a
|
|
|
182
211
|
|
|
183
212
|
Contributions must follow the Contributor License Agreement. For more information, see the CONTRIBUTING.md file at the top of the GitHub repository.
|
|
184
213
|
|
|
185
|
-
Copyright ©
|
|
214
|
+
Copyright © 2026 Peter Grünberg Institute - Integrated Computing Architectures (ICA / PGI-4), Forschungszentrum Jülich GmbH
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=
|
|
2
|
+
requires = ["setuptools>=77.0"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simcats"
|
|
7
|
-
version = "
|
|
8
|
-
license =
|
|
7
|
+
version = "2.0.0" # also update in docs (conf.py) and simcats (__init__.py)
|
|
8
|
+
license = "CC-BY-NC-SA-4.0"
|
|
9
|
+
license-files = ["LICENSE"]
|
|
9
10
|
authors = [
|
|
10
11
|
{ name="Fabian Hader", email="f.hader@fz-juelich.de" },
|
|
11
12
|
{ name="Sarah Fleitmann", email="s.fleitmann@fz-juelich.de" },
|
|
13
|
+
{ name="Benjamin Papajewski", email="b.papajewski@fz-juelich.de"},
|
|
12
14
|
{ name="Fabian Fuchs", email="f.fuchs@fz-juelich.de" },
|
|
15
|
+
{ name="Karin Havemann", email="k.havemann@fz-juelich.de" },
|
|
16
|
+
{ name="Jan Vogelbruch", email="j.vogelbruch@fz-juelich.de" },
|
|
13
17
|
]
|
|
14
18
|
description = """\
|
|
15
19
|
SimCATS is a python framework for simulating charge stability diagrams (CSDs) typically measured during the tuning process of qubits.\
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
process of qubits.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from ._simulation import Simulation
|
|
6
|
-
from ._default_configs import default_configs
|
|
5
|
+
from simcats._simulation import Simulation
|
|
6
|
+
from simcats._default_configs import default_configs
|
|
7
7
|
|
|
8
8
|
__all__ = ["Simulation", "default_configs"]
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
__version__ = "2.0.0"
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This module contains the default configurations, that can be used to initialize an object of the simulation class to
|
|
3
|
+
perform charge stability diagram (CSD) simulations.
|
|
4
|
+
|
|
5
|
+
Contributors should add their parameter sets to the default_configs dictionary so that they are available in a central
|
|
6
|
+
location.
|
|
7
|
+
|
|
8
|
+
@author: f.hader, b.papajewski
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import numpy as np
|
|
12
|
+
|
|
13
|
+
from simcats.distortions import OccupationTransitionBlurringGaussian, OccupationDotJumps, SensorPotentialPinkNoise, \
|
|
14
|
+
SensorPotentialRTN, SensorResponseRTN, SensorResponseWhiteNoise
|
|
15
|
+
from simcats.ideal_csd import IdealCSDGeometric
|
|
16
|
+
from simcats.sensor import SensorPeakLorentzian, SensorGeneric, SensorScanSensorGeneric, SensorRiseGLF
|
|
17
|
+
from simcats.sensor.barrier_function import BarrierFunctionGLF
|
|
18
|
+
|
|
19
|
+
from simcats.support_functions import NormalSamplingRange, UniformSamplingRange
|
|
20
|
+
|
|
21
|
+
__all__ = []
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
default_configs = {"GaAs_v1": {"volt_limits_g1": np.array([-0.2, -0.087]),
|
|
25
|
+
"volt_limits_g2": np.array([-0.2, -0.047]),
|
|
26
|
+
"ideal_csd_config": IdealCSDGeometric(tct_params=[np.array(
|
|
27
|
+
[0.01075474, 0.01549732, 0.42465033, -0.38038481, -0.02750187, -0.17179705,
|
|
28
|
+
-0.02674207, -0.17171497]), np.array(
|
|
29
|
+
[0.01075474, 0.01549732, 0.40341781, -0.36136557, -0.04171389, -0.16351316,
|
|
30
|
+
-0.04012621, -0.16343108]), np.array(
|
|
31
|
+
[0.01075474, 0.01549732, 0.38324692, -0.34329729, -0.05592591, -0.15564346,
|
|
32
|
+
-0.05351035, -0.15556138]), np.array(
|
|
33
|
+
[0.01075474, 0.01549732, 0.36408457, -0.32613243, -0.07013794, -0.14816725,
|
|
34
|
+
-0.06689448, -0.14808517]), np.array(
|
|
35
|
+
[0.01075474, 0.01549732, 0.34588034, -0.30982581, -0.08434996, -0.14106485,
|
|
36
|
+
-0.08027862, -0.14098277]), np.array(
|
|
37
|
+
[0.01075474, 0.01549732, 0.32858633, -0.29433452, -0.09856198, -0.13431757,
|
|
38
|
+
-0.09366276, -0.13423549]), np.array(
|
|
39
|
+
[0.01075474, 0.01549732, 0.31215701, -0.27961779, -0.112774, -0.12790766, -0.1070469,
|
|
40
|
+
-0.12782558]), np.array(
|
|
41
|
+
[0.01075474, 0.01549732, 0.20758441, -0.18594583, -0.12698603, -0.12181824,
|
|
42
|
+
-0.12125892, -0.12173616]), np.array(
|
|
43
|
+
[0.01075474, 0.01549732, 0.13804363, -0.12365398, -0.14119805, -0.11603329,
|
|
44
|
+
-0.13547094, -0.11595121]), np.array(
|
|
45
|
+
[0.01075474, 0.01549732, 0.09179902, -0.0822299, -0.15541007, -0.11053759,
|
|
46
|
+
-0.14968296, -0.1104555]), np.array(
|
|
47
|
+
[0.01075474, 0.01549732, 0.06104635, -0.05468288, -0.16962209, -0.10531667,
|
|
48
|
+
-0.16389499, -0.10523459]), np.array(
|
|
49
|
+
[0.01075474, 0.01549732, 0.04059582, -0.03636412, -0.18383412, -0.1003568,
|
|
50
|
+
-0.17810701, -0.10027472]), np.array(
|
|
51
|
+
[0.01075474, 0.01549732, 0.02699622, -0.02418214, -0.19804614, -0.09564492,
|
|
52
|
+
-0.19231903, -0.09556284]), np.array(
|
|
53
|
+
[0.01075474, 0.01549732, 0.01795249, -0.01608112, -0.21225816, -0.09116864,
|
|
54
|
+
-0.20653105, -0.09108656])],
|
|
55
|
+
rotation=-np.pi / 4,
|
|
56
|
+
lut_entries=1000,
|
|
57
|
+
cdf_type="sigmoid",
|
|
58
|
+
cdf_gamma_factor=None),
|
|
59
|
+
"sensor": SensorGeneric(sensor_peak_function=[
|
|
60
|
+
SensorPeakLorentzian(mu0=-0.12096, gamma=0.00095, height=0.026245, offset=-0.253275),
|
|
61
|
+
SensorPeakLorentzian(mu0=-0.11596, gamma=0.001, height=0.027245, offset=-0.253275),
|
|
62
|
+
SensorPeakLorentzian(mu0=-0.11096, gamma=0.00105, height=0.028245, offset=-0.253275),
|
|
63
|
+
SensorPeakLorentzian(mu0=-0.10596, gamma=0.0011, height=0.029245, offset=-0.253275),
|
|
64
|
+
SensorPeakLorentzian(mu0=-0.10096, gamma=0.00115, height=0.030245, offset=-0.253275)
|
|
65
|
+
],
|
|
66
|
+
alpha_dot=np.array([-0.00044775, -0.0002922]),
|
|
67
|
+
alpha_gate=np.array([0.08949, 0.116395]),
|
|
68
|
+
offset_mu_sens=-0.0818745),
|
|
69
|
+
"occupation_distortions": [OccupationTransitionBlurringGaussian(0.75 * 0.03 / 100),
|
|
70
|
+
# in g2 (y in 2D) direction
|
|
71
|
+
OccupationDotJumps(ratio=0.01, scale=100 * 0.03 / 100,
|
|
72
|
+
lam=6 * 0.03 / 100, axis=0),
|
|
73
|
+
# in g1 (x in 2D) direction
|
|
74
|
+
OccupationDotJumps(ratio=0.01 / 6, scale=100 * 0.03 / 100,
|
|
75
|
+
lam=6 * 0.03 / 100, axis=1)],
|
|
76
|
+
"sensor_potential_distortions": [
|
|
77
|
+
SensorPotentialPinkNoise(
|
|
78
|
+
sigma=UniformSamplingRange((1.8250268077765864e-12, 9.125134038882932e-05)),
|
|
79
|
+
fmin=0),
|
|
80
|
+
SensorPotentialRTN(scale=74.56704 * 0.03 / 100, std=3.491734e-05,
|
|
81
|
+
height=2.53855325e-05, ratio=1 / 6)],
|
|
82
|
+
"sensor_response_distortions": [
|
|
83
|
+
SensorResponseRTN(scale=10000 * 0.03 / 100, std=0.047453767599999995,
|
|
84
|
+
height=0.0152373696, ratio=0.03),
|
|
85
|
+
SensorResponseWhiteNoise(
|
|
86
|
+
sigma=NormalSamplingRange((1e-10, 0.003), sampling_range=0.001,
|
|
87
|
+
std=0.0003))]
|
|
88
|
+
},
|
|
89
|
+
"GaAs_v2_extended_sensor": {
|
|
90
|
+
"volt_limits_g1": np.array([-0.2, -0.087]),
|
|
91
|
+
"volt_limits_g2": np.array([-0.2, -0.047]),
|
|
92
|
+
"volt_limits_sensor_g1": np.array([-1, 0.4]),
|
|
93
|
+
"volt_limits_sensor_g2": np.array([-1, 0.4]),
|
|
94
|
+
"ideal_csd_config": IdealCSDGeometric(tct_params=[np.array(
|
|
95
|
+
[0.01075474, 0.01549732, 0.42465033, -0.38038481, -0.02750187, -0.17179705,
|
|
96
|
+
-0.02674207, -0.17171497]), np.array(
|
|
97
|
+
[0.01075474, 0.01549732, 0.40341781, -0.36136557, -0.04171389, -0.16351316,
|
|
98
|
+
-0.04012621, -0.16343108]), np.array(
|
|
99
|
+
[0.01075474, 0.01549732, 0.38324692, -0.34329729, -0.05592591, -0.15564346,
|
|
100
|
+
-0.05351035, -0.15556138]), np.array(
|
|
101
|
+
[0.01075474, 0.01549732, 0.36408457, -0.32613243, -0.07013794, -0.14816725,
|
|
102
|
+
-0.06689448, -0.14808517]), np.array(
|
|
103
|
+
[0.01075474, 0.01549732, 0.34588034, -0.30982581, -0.08434996, -0.14106485,
|
|
104
|
+
-0.08027862, -0.14098277]), np.array(
|
|
105
|
+
[0.01075474, 0.01549732, 0.32858633, -0.29433452, -0.09856198, -0.13431757,
|
|
106
|
+
-0.09366276, -0.13423549]), np.array(
|
|
107
|
+
[0.01075474, 0.01549732, 0.31215701, -0.27961779, -0.112774, -0.12790766, -0.1070469,
|
|
108
|
+
-0.12782558]), np.array(
|
|
109
|
+
[0.01075474, 0.01549732, 0.20758441, -0.18594583, -0.12698603, -0.12181824,
|
|
110
|
+
-0.12125892, -0.12173616]), np.array(
|
|
111
|
+
[0.01075474, 0.01549732, 0.13804363, -0.12365398, -0.14119805, -0.11603329,
|
|
112
|
+
-0.13547094, -0.11595121]), np.array(
|
|
113
|
+
[0.01075474, 0.01549732, 0.09179902, -0.0822299, -0.15541007, -0.11053759,
|
|
114
|
+
-0.14968296, -0.1104555]), np.array(
|
|
115
|
+
[0.01075474, 0.01549732, 0.06104635, -0.05468288, -0.16962209, -0.10531667,
|
|
116
|
+
-0.16389499, -0.10523459]), np.array(
|
|
117
|
+
[0.01075474, 0.01549732, 0.04059582, -0.03636412, -0.18383412, -0.1003568,
|
|
118
|
+
-0.17810701, -0.10027472]), np.array(
|
|
119
|
+
[0.01075474, 0.01549732, 0.02699622, -0.02418214, -0.19804614, -0.09564492,
|
|
120
|
+
-0.19231903, -0.09556284]), np.array(
|
|
121
|
+
[0.01075474, 0.01549732, 0.01795249, -0.01608112, -0.21225816, -0.09116864,
|
|
122
|
+
-0.20653105, -0.09108656])],
|
|
123
|
+
rotation=-np.pi / 4,
|
|
124
|
+
lut_entries=1000,
|
|
125
|
+
cdf_type="sigmoid",
|
|
126
|
+
cdf_gamma_factor=None),
|
|
127
|
+
"sensor": SensorScanSensorGeneric(
|
|
128
|
+
barrier_functions=(
|
|
129
|
+
BarrierFunctionGLF(pinch_off_percentage=0.001,
|
|
130
|
+
fully_conductive_percentage=0.999,
|
|
131
|
+
asymptote_left=0,
|
|
132
|
+
asymptote_right=0.3,
|
|
133
|
+
growth_rate=80,
|
|
134
|
+
asymmetry=8.948499659663527e-05,
|
|
135
|
+
shape_factor=25.64528635013381,
|
|
136
|
+
denominator_offset=1,
|
|
137
|
+
offset=-0.78),#-0.83),
|
|
138
|
+
BarrierFunctionGLF(pinch_off_percentage=0.001,
|
|
139
|
+
fully_conductive_percentage=0.999,
|
|
140
|
+
asymptote_left=0,
|
|
141
|
+
asymptote_right=0.3,
|
|
142
|
+
growth_rate=72,
|
|
143
|
+
asymmetry=7.784390241302876e-05,
|
|
144
|
+
shape_factor=97.5062459999433,
|
|
145
|
+
denominator_offset=1,
|
|
146
|
+
offset=-0.88)#-0.93)
|
|
147
|
+
),
|
|
148
|
+
sensor_peak_function=[
|
|
149
|
+
SensorPeakLorentzian(mu0=-0.151, gamma=0.0002, height=0.09, offset=0),
|
|
150
|
+
SensorPeakLorentzian(mu0=-0.148, gamma=0.000225, height=0.09, offset=0),
|
|
151
|
+
SensorPeakLorentzian(mu0=-0.145, gamma=0.00025, height=0.09, offset=0),
|
|
152
|
+
SensorPeakLorentzian(mu0=-0.142, gamma=0.000275, height=0.09, offset=0),
|
|
153
|
+
SensorPeakLorentzian(mu0=-0.139, gamma=0.0003, height=0.09, offset=0),
|
|
154
|
+
SensorPeakLorentzian(mu0=-0.136, gamma=0.000325, height=0.09, offset=0),
|
|
155
|
+
SensorPeakLorentzian(mu0=-0.133, gamma=0.00035, height=0.09, offset=0),
|
|
156
|
+
SensorPeakLorentzian(mu0=-0.130, gamma=0.000375, height=0.09, offset=0),
|
|
157
|
+
SensorPeakLorentzian(mu0=-0.127, gamma=0.0004, height=0.09, offset=0),
|
|
158
|
+
SensorPeakLorentzian(mu0=-0.124, gamma=0.000425, height=0.09, offset=0),
|
|
159
|
+
SensorPeakLorentzian(mu0=-0.121, gamma=0.00045, height=0.09, offset=0),
|
|
160
|
+
SensorPeakLorentzian(mu0=-0.118, gamma=0.000475, height=0.09, offset=0),
|
|
161
|
+
SensorPeakLorentzian(mu0=-0.115, gamma=0.0005, height=0.09, offset=0),
|
|
162
|
+
SensorPeakLorentzian(mu0=-0.112, gamma=0.00055, height=0.09, offset=0),
|
|
163
|
+
SensorPeakLorentzian(mu0=-0.109, gamma=0.0006, height=0.09, offset=0),
|
|
164
|
+
SensorPeakLorentzian(mu0=-0.106, gamma=0.00065, height=0.09, offset=0),
|
|
165
|
+
SensorPeakLorentzian(mu0=-0.103, gamma=0.0007, height=0.09, offset=0),
|
|
166
|
+
SensorPeakLorentzian(mu0=-0.100, gamma=0.00075, height=0.09, offset=0),
|
|
167
|
+
SensorPeakLorentzian(mu0=-0.097, gamma=0.0008, height=0.09, offset=0),
|
|
168
|
+
],
|
|
169
|
+
final_rise=SensorRiseGLF(fully_conductive_percentage=0.999,
|
|
170
|
+
mu0=0,
|
|
171
|
+
asymptote_left=0,
|
|
172
|
+
asymptote_right=0.1,
|
|
173
|
+
growth_rate=2500,
|
|
174
|
+
asymmetry=0.035,
|
|
175
|
+
shape_factor=2),
|
|
176
|
+
alpha_sensor_gate=np.array([[0.096754, 0.1], [0.99, 0.15], [0.15, 0.99]]),
|
|
177
|
+
alpha_dot=np.array([-0.00044775, -0.0002922]),
|
|
178
|
+
alpha_gate=np.array([0.08949, 0.116395]),
|
|
179
|
+
offset_mu_sens=np.array([0, 0, 0]),
|
|
180
|
+
sensor_peak_deformations={}
|
|
181
|
+
),
|
|
182
|
+
"occupation_distortions": [OccupationTransitionBlurringGaussian(0.75 * 0.03 / 100),
|
|
183
|
+
# in g2 (y in 2D) direction
|
|
184
|
+
OccupationDotJumps(ratio=0.01, scale=100 * 0.03 / 100,
|
|
185
|
+
lam=6 * 0.03 / 100, axis=0),
|
|
186
|
+
# in g1 (x in 2D) direction
|
|
187
|
+
OccupationDotJumps(ratio=0.01 / 6, scale=100 * 0.03 / 100,
|
|
188
|
+
lam=6 * 0.03 / 100, axis=1)],
|
|
189
|
+
"sensor_potential_distortions": [
|
|
190
|
+
SensorPotentialPinkNoise(
|
|
191
|
+
sigma=UniformSamplingRange((1.8250268077765864e-12, 9.125134038882932e-05)),
|
|
192
|
+
fmin=0),
|
|
193
|
+
SensorPotentialRTN(scale=74.56704 * 0.03 / 100, std=3.491734e-05,
|
|
194
|
+
height=2.53855325e-05, ratio=1 / 6)],
|
|
195
|
+
"sensor_response_distortions": [
|
|
196
|
+
SensorResponseWhiteNoise(
|
|
197
|
+
sigma=NormalSamplingRange((1e-10, 0.003), sampling_range=0.001,
|
|
198
|
+
std=0.0003))]
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
"""Dict: Default configurations for the Simulation class.
|
|
202
|
+
Includes the default configurations "GaAs_v1" and "GaAs_v2_extended_sensor", which can be used to instantiate an object
|
|
203
|
+
of the Simulation class (have a look at the jupyter notebook `example_SimCATS_Simulation_class.ipynb` for an example).\n
|
|
204
|
+
**Information for contributors / developers**: The dictionary itself is stored in the file _default_configs.py to ensure
|
|
205
|
+
a clean separation between the Simulation class and the configurations.
|
|
206
|
+
"""
|