simcats 1.1.0__py3-none-any.whl → 2.0.0__py3-none-any.whl

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.
Files changed (42) hide show
  1. simcats/__init__.py +4 -3
  2. simcats/_default_configs.py +129 -13
  3. simcats/_simulation.py +451 -69
  4. simcats/config_samplers/_GaAs_v1_random_variations_v3_config_sampler.py +1059 -0
  5. simcats/config_samplers/__init__.py +9 -0
  6. simcats/distortions/_distortion_interfaces.py +1 -1
  7. simcats/distortions/_dot_jumps.py +8 -6
  8. simcats/distortions/_random_telegraph_noise.py +4 -4
  9. simcats/distortions/_transition_blurring.py +5 -5
  10. simcats/distortions/_white_noise.py +2 -2
  11. simcats/ideal_csd/geometric/_generate_lead_transition_mask.py +3 -3
  12. simcats/ideal_csd/geometric/_get_electron_occupation.py +5 -5
  13. simcats/ideal_csd/geometric/_ideal_csd_geometric.py +5 -5
  14. simcats/ideal_csd/geometric/_ideal_csd_geometric_class.py +9 -9
  15. simcats/ideal_csd/geometric/_tct_bezier.py +5 -5
  16. simcats/sensor/__init__.py +10 -6
  17. simcats/sensor/{_generic_sensor.py → _sensor_generic.py} +1 -1
  18. simcats/sensor/_sensor_interface.py +164 -11
  19. simcats/sensor/_sensor_rise_glf.py +229 -0
  20. simcats/sensor/_sensor_scan_sensor_generic.py +929 -0
  21. simcats/sensor/barrier_function/__init__.py +9 -0
  22. simcats/sensor/barrier_function/_barrier_function_glf.py +280 -0
  23. simcats/sensor/barrier_function/_barrier_function_interface.py +43 -0
  24. simcats/sensor/barrier_function/_barrier_function_multi_glf.py +157 -0
  25. simcats/sensor/deformation/__init__.py +9 -0
  26. simcats/sensor/deformation/_sensor_peak_deformation_circle.py +109 -0
  27. simcats/sensor/deformation/_sensor_peak_deformation_interface.py +65 -0
  28. simcats/sensor/deformation/_sensor_peak_deformation_linear.py +77 -0
  29. simcats/support_functions/__init__.py +11 -3
  30. simcats/support_functions/_generalized_logistic_function.py +146 -0
  31. simcats/support_functions/_linear_algebra.py +171 -0
  32. simcats/support_functions/_parameter_sampling.py +108 -19
  33. simcats/support_functions/_pixel_volt_transformation.py +24 -0
  34. simcats/support_functions/_reset_offset_mu_sens.py +43 -0
  35. {simcats-1.1.0.dist-info → simcats-2.0.0.dist-info}/METADATA +93 -29
  36. simcats-2.0.0.dist-info/RECORD +53 -0
  37. {simcats-1.1.0.dist-info → simcats-2.0.0.dist-info}/WHEEL +1 -1
  38. simcats-1.1.0.dist-info/RECORD +0 -37
  39. /simcats/sensor/{_gaussian_sensor_peak.py → _sensor_peak_gaussian.py} +0 -0
  40. /simcats/sensor/{_lorentzian_sensor_peak.py → _sensor_peak_lorentzian.py} +0 -0
  41. {simcats-1.1.0.dist-info → simcats-2.0.0.dist-info/licenses}/LICENSE +0 -0
  42. {simcats-1.1.0.dist-info → simcats-2.0.0.dist-info}/top_level.txt +0 -0
simcats/__init__.py CHANGED
@@ -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
- __version__ = "1.1.0"
9
+
10
+ __version__ = "2.0.0"
@@ -5,7 +5,7 @@ perform charge stability diagram (CSD) simulations.
5
5
  Contributors should add their parameter sets to the default_configs dictionary so that they are available in a central
6
6
  location.
7
7
 
8
- @author: f.hader
8
+ @author: f.hader, b.papajewski
9
9
  """
10
10
 
11
11
  import numpy as np
@@ -13,7 +13,8 @@ import numpy as np
13
13
  from simcats.distortions import OccupationTransitionBlurringGaussian, OccupationDotJumps, SensorPotentialPinkNoise, \
14
14
  SensorPotentialRTN, SensorResponseRTN, SensorResponseWhiteNoise
15
15
  from simcats.ideal_csd import IdealCSDGeometric
16
- from simcats.sensor import SensorPeakLorentzian, SensorGeneric
16
+ from simcats.sensor import SensorPeakLorentzian, SensorGeneric, SensorScanSensorGeneric, SensorRiseGLF
17
+ from simcats.sensor.barrier_function import BarrierFunctionGLF
17
18
 
18
19
  from simcats.support_functions import NormalSamplingRange, UniformSamplingRange
19
20
 
@@ -60,10 +61,11 @@ default_configs = {"GaAs_v1": {"volt_limits_g1": np.array([-0.2, -0.087]),
60
61
  SensorPeakLorentzian(mu0=-0.11596, gamma=0.001, height=0.027245, offset=-0.253275),
61
62
  SensorPeakLorentzian(mu0=-0.11096, gamma=0.00105, height=0.028245, offset=-0.253275),
62
63
  SensorPeakLorentzian(mu0=-0.10596, gamma=0.0011, height=0.029245, offset=-0.253275),
63
- SensorPeakLorentzian(mu0=-0.10096, gamma=0.00115, height=0.030245, offset=-0.253275)],
64
- alpha_dot=np.array([-0.00044775, -0.0002922]),
65
- alpha_gate=np.array([0.08949, 0.116395]),
66
- offset_mu_sens=-0.0818745),
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),
67
69
  "occupation_distortions": [OccupationTransitionBlurringGaussian(0.75 * 0.03 / 100),
68
70
  # in g2 (y in 2D) direction
69
71
  OccupationDotJumps(ratio=0.01, scale=100 * 0.03 / 100,
@@ -72,19 +74,133 @@ default_configs = {"GaAs_v1": {"volt_limits_g1": np.array([-0.2, -0.087]),
72
74
  OccupationDotJumps(ratio=0.01 / 6, scale=100 * 0.03 / 100,
73
75
  lam=6 * 0.03 / 100, axis=1)],
74
76
  "sensor_potential_distortions": [
75
- SensorPotentialPinkNoise(sigma=UniformSamplingRange((1.8250268077765864e-12, 9.125134038882932e-05)),
76
- fmin=0),
77
+ SensorPotentialPinkNoise(
78
+ sigma=UniformSamplingRange((1.8250268077765864e-12, 9.125134038882932e-05)),
79
+ fmin=0),
77
80
  SensorPotentialRTN(scale=74.56704 * 0.03 / 100, std=3.491734e-05,
78
81
  height=2.53855325e-05, ratio=1 / 6)],
79
82
  "sensor_response_distortions": [
80
83
  SensorResponseRTN(scale=10000 * 0.03 / 100, std=0.047453767599999995,
81
84
  height=0.0152373696, ratio=0.03),
82
- SensorResponseWhiteNoise(sigma=NormalSamplingRange((1e-10, 0.003), sampling_range=0.001,
83
- std=0.0003))]
84
- }}
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
+ }
85
201
  """Dict: Default configurations for the Simulation class.
86
- Includes the default configuration "GaAs_v1", which can be used to instantiate an object of the Simulation class (have a
87
- look at the jupyter notebook `example_SimCATS_Simulation_class.ipynb` for an example). \n
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
88
204
  **Information for contributors / developers**: The dictionary itself is stored in the file _default_configs.py to ensure
89
205
  a clean separation between the Simulation class and the configurations.
90
206
  """