diff --git a/benchmarking/benchmarks/dataset.py b/benchmarking/benchmarks/dataset.py index 5dfdb05ce7a8..8175e19cba43 100644 --- a/benchmarking/benchmarks/dataset.py +++ b/benchmarking/benchmarks/dataset.py @@ -95,8 +95,9 @@ def setup(self, bench_param): self.datasaver = self.runner.__enter__() # Create values for parameters + rng = np.random.default_rng() for _ in range(len(self.parameters)): - self.values.append(np.random.rand(bench_param["n_values"])) + self.values.append(rng.random(bench_param["n_values"])) def teardown(self, bench_param): # Exit runner context manager diff --git a/docs/examples/DataSet/Benchmarking.ipynb b/docs/examples/DataSet/Benchmarking.ipynb index 958344b75fd8..80412d30ab5a 100644 --- a/docs/examples/DataSet/Benchmarking.ipynb +++ b/docs/examples/DataSet/Benchmarking.ipynb @@ -163,9 +163,10 @@ ], "source": [ "%%time\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " for y in range(y_shape):\n", - " z = np.random.random_sample(1)" + " z = rng.random(1)" ] }, { @@ -202,11 +203,12 @@ ], "source": [ "%%time\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " for y in range(y_shape):\n", " x_data[x, y] = x\n", " y_data[x, y] = y\n", - " z_data[x, y] = np.random.random_sample()" + " z_data[x, y] = rng.random()" ] }, { @@ -257,9 +259,10 @@ ], "source": [ "%%time\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape // 10):\n", " for y in range(y_shape):\n", - " double_dataset.add_results([{\"x\": x, \"y\": y, \"z\": np.random.random_sample()}])" + " double_dataset.add_results([{\"x\": x, \"y\": y, \"z\": rng.random()}])" ] }, { @@ -302,11 +305,12 @@ ], "source": [ "%%time\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " for y in range(y_shape):\n", " x_data[y] = x\n", " y_data[y] = y\n", - " z_data[y] = np.random.random_sample(1)[0]\n", + " z_data[y] = rng.random(1)[0]\n", " single_dataset.add_results([{\"x\": x_data, \"y\": y_data, \"z\": z_data}])" ] }, @@ -350,11 +354,12 @@ ], "source": [ "%%time\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " for y in range(y_shape):\n", " x_data[x, y] = x\n", " y_data[x, y] = y\n", - " z_data[x, y] = np.random.random_sample(1)[0]\n", + " z_data[x, y] = rng.random(1)[0]\n", "zero_dataset.add_results([{\"x\": x_data, \"y\": y_data, \"z\": z_data}])" ] }, @@ -395,10 +400,11 @@ ], "source": [ "%%timeit\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " x_data[x, :] = x\n", " array1D_dataset.add_results(\n", - " [{\"x\": x_data[x, :], \"y\": y_setpoints, \"z\": np.random.random_sample(y_shape)}]\n", + " [{\"x\": x_data[x, :], \"y\": y_setpoints, \"z\": rng.random(y_shape)}]\n", " )" ] }, @@ -443,10 +449,11 @@ ], "source": [ "%%timeit\n", + "rng = np.random.default_rng()\n", "for x in range(x_shape):\n", " x_data[x, :] = x\n", " y_data[x, :] = y_setpoints\n", - " z_data[x, :] = np.random.random_sample(y_shape)\n", + " z_data[x, :] = rng.random(y_shape)\n", "array0D_dataset.add_results([{\"x\": x_data, \"y\": y_data, \"z\": z_data}])" ] }, @@ -463,10 +470,11 @@ "metadata": {}, "outputs": [], "source": [ + "rng = np.random.default_rng()\n", "data = []\n", "for i in range(100):\n", " for j in range(100):\n", - " data.append({\"x\": i, \"y\": j, \"z\": np.random.random_sample()})" + " data.append({\"x\": i, \"y\": j, \"z\": rng.random()})" ] }, { diff --git a/docs/examples/DataSet/Dataset_Performance.ipynb b/docs/examples/DataSet/Dataset_Performance.ipynb index cbf899861f18..d2b3bb086c0f 100644 --- a/docs/examples/DataSet/Dataset_Performance.ipynb +++ b/docs/examples/DataSet/Dataset_Performance.ipynb @@ -94,15 +94,16 @@ " meas.register_parameter(y1, setpoints=[x1, x2, x3], paramtype=paramtype)\n", " meas.register_parameter(y2, setpoints=[x1, x2, x3], paramtype=paramtype)\n", " start = time.perf_counter()\n", + " rng = np.random.default_rng()\n", " with meas.run() as datasaver:\n", " start_adding = time.perf_counter()\n", " for i in range(nreps):\n", " datasaver.add_result(\n", - " (x1, np.random.rand(npoints)),\n", - " (x2, np.random.rand(npoints)),\n", - " (x3, np.random.rand(npoints)),\n", - " (y1, np.random.rand(npoints)),\n", - " (y2, np.random.rand(npoints)),\n", + " (x1, rng.random(npoints)),\n", + " (x2, rng.random(npoints)),\n", + " (x3, rng.random(npoints)),\n", + " (y1, rng.random(npoints)),\n", + " (y2, rng.random(npoints)),\n", " )\n", " stop_adding = time.perf_counter()\n", " run_id = datasaver.run_id\n", diff --git a/docs/examples/DataSet/Extracting-runs-from-one-DB-file-to-another.ipynb b/docs/examples/DataSet/Extracting-runs-from-one-DB-file-to-another.ipynb index 02afca7a7ad4..708a80eb8121 100644 --- a/docs/examples/DataSet/Extracting-runs-from-one-DB-file-to-another.ipynb +++ b/docs/examples/DataSet/Extracting-runs-from-one-DB-file-to-another.ipynb @@ -120,7 +120,7 @@ "\n", "for run_id in range(1, 11):\n", " with meas.run() as datasaver:\n", - " for step, noise in enumerate(np.random.randn(run_id)):\n", + " for step, noise in enumerate(np.random.default_rng().standard_normal(run_id)):\n", " datasaver.add_result((my_inst.voltage, step), (my_inst.current, noise))" ] }, @@ -339,7 +339,7 @@ "\n", "for run_id in range(1, 11):\n", " with meas.run() as datasaver:\n", - " for step, noise in enumerate(np.random.randn(run_id)):\n", + " for step, noise in enumerate(np.random.default_rng().standard_normal(run_id)):\n", " datasaver.add_result((my_inst.current, step), (my_inst.voltage, noise))" ] }, diff --git a/docs/examples/DataSet/Linking to parent datasets.ipynb b/docs/examples/DataSet/Linking to parent datasets.ipynb index 2daedd6c86a3..b6e2092b2c12 100644 --- a/docs/examples/DataSet/Linking to parent datasets.ipynb +++ b/docs/examples/DataSet/Linking to parent datasets.ipynb @@ -111,7 +111,9 @@ "\n", "with meas.run() as datasaver:\n", " time_data = np.linspace(0, 1, N)\n", - " signal_data = np.sin(2 * np.pi * time_data) + 0.25 * np.random.randn(N)\n", + " signal_data = np.sin(\n", + " 2 * np.pi * time_data\n", + " ) + 0.25 * np.random.default_rng().standard_normal(N)\n", "\n", " datasaver.add_result((\"time\", time_data), (\"signal\", signal_data))\n", "dataset = datasaver.dataset" diff --git a/docs/examples/DataSet/Offline Plotting Tutorial.ipynb b/docs/examples/DataSet/Offline Plotting Tutorial.ipynb index 3bb073e14124..a784e4e05e62 100644 --- a/docs/examples/DataSet/Offline Plotting Tutorial.ipynb +++ b/docs/examples/DataSet/Offline Plotting Tutorial.ipynb @@ -106,6 +106,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "meas = Measurement(exp=exp)\n", "meas.register_parameter(x)\n", "meas.register_parameter(y, setpoints=(x,))\n", @@ -115,11 +116,11 @@ "# Randomly shuffle the values in order to test the plot\n", "# that is to be created for this data is a correct line\n", "# that does not depend on the order of the data.\n", - "np.random.shuffle(xvals)\n", + "rng.shuffle(xvals)\n", "\n", "with meas.run() as datasaver:\n", " for xnum in xvals:\n", - " noise = np.random.randn() * 0.1 # multiplicative noise yeah yeah\n", + " noise = rng.standard_normal() * 0.1 # multiplicative noise yeah yeah\n", " datasaver.add_result(\n", " (x, xnum), (y, 2 * (xnum + noise) ** 3 - 5 * (xnum + noise) ** 2)\n", " )\n", @@ -210,13 +211,14 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "meas = Measurement(exp=exp)\n", "meas.register_parameter(t)\n", "meas.register_parameter(y, setpoints=(t,))\n", "\n", "with meas.run() as datasaver:\n", " for tnum in np.linspace(-3.4, 4.2, 50):\n", - " noise = np.random.randn() * 0.1\n", + " noise = rng.standard_normal() * 0.1\n", " datasaver.add_result(\n", " (t, tnum * 1e-6),\n", " (y, (2 * (tnum + noise) ** 3 - 5 * (tnum + noise) ** 2) * 1e3),\n", @@ -772,6 +774,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "# First run\n", "meas = Measurement(exp=exp)\n", "meas.register_parameter(x)\n", @@ -781,7 +784,7 @@ "\n", "with meas.run() as datasaver:\n", " for xnum in xvals:\n", - " noise = np.random.randn() * 0.1 # multiplicative noise yeah yeah\n", + " noise = rng.standard_normal() * 0.1 # multiplicative noise yeah yeah\n", " datasaver.add_result(\n", " (x, xnum), (y, 2 * (xnum + noise) ** 3 - 5 * (xnum + noise) ** 2)\n", " )\n", diff --git a/docs/examples/DataSet/Offline plotting with categorical data.ipynb b/docs/examples/DataSet/Offline plotting with categorical data.ipynb index 79acecd49483..5dbbb6c408d0 100644 --- a/docs/examples/DataSet/Offline plotting with categorical data.ipynb +++ b/docs/examples/DataSet/Offline plotting with categorical data.ipynb @@ -72,6 +72,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "voltage = Parameter(\"voltage\", label=\"Voltage\", unit=\"V\", set_cmd=None, get_cmd=None)\n", "fridge_config = Parameter(\n", " \"config\", label=\"Fridge configuration\", set_cmd=None, get_cmd=None\n", @@ -85,9 +86,7 @@ " configurations = [\"open\", \"outer chamber closed\", \"pumping\", \"closed\"]\n", "\n", " for configuration in configurations:\n", - " datasaver.add_result(\n", - " (fridge_config, configuration), (voltage, np.random.rand())\n", - " )\n", + " datasaver.add_result((fridge_config, configuration), (voltage, rng.random()))\n", "\n", "dataset = datasaver.dataset" ] @@ -140,15 +139,14 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "with meas.run() as datasaver:\n", " configurations = [\"open\", \"outer chamber closed\", \"pumping\", \"closed\"]\n", "\n", " for configuration in configurations:\n", - " datasaver.add_result(\n", - " (fridge_config, configuration), (voltage, np.random.rand())\n", - " )\n", + " datasaver.add_result((fridge_config, configuration), (voltage, rng.random()))\n", "\n", - " datasaver.add_result((fridge_config, \"open\"), (voltage, np.random.rand()))\n", + " datasaver.add_result((fridge_config, \"open\"), (voltage, rng.random()))\n", "\n", "dataset = datasaver.dataset\n", "\n", @@ -182,6 +180,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "voltage = Parameter(\"voltage\", label=\"Voltage\", unit=\"V\", set_cmd=None, get_cmd=None)\n", "response = Parameter(\"response\", label=\"Sample response\", set_cmd=None, get_cmd=None)\n", "\n", @@ -192,7 +191,7 @@ "\n", "with meas.run() as datasaver:\n", " for volt in np.linspace(0, 1, 50):\n", - " coinvalue = volt + 0.5 * np.random.randn()\n", + " coinvalue = volt + 0.5 * rng.standard_normal()\n", " if coinvalue < 0:\n", " resp = \"Bad\"\n", " elif coinvalue < 0.8:\n", @@ -252,6 +251,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "sample = Parameter(\"sample\", label=\"Sample\", unit=\"\", set_cmd=None, get_cmd=None)\n", "feature = Parameter(\"feature\", label=\"Physical feature\", set_cmd=None, get_cmd=None)\n", "\n", @@ -264,10 +264,10 @@ " features = [\"superconducting\", \"qubit\", \"clean states\", \"high bandwidth\"]\n", "\n", " for samp in [\"Nanowire\", \"Silicon Chip\", \"SQUID\", \"Membrane\"]:\n", - " feats = np.random.randint(1, 5)\n", + " feats = rng.integers(1, 5)\n", " for _ in range(feats):\n", " datasaver.add_result(\n", - " (sample, samp), (feature, features[np.random.randint(0, 4)])\n", + " (sample, samp), (feature, features[rng.integers(0, 4)])\n", " )\n", "\n", "dataset = datasaver.dataset" @@ -602,8 +602,8 @@ "\n", "\n", "with meas.run() as datasaver:\n", - " for bias_v in 3 * (np.random.rand(100)):\n", - " for gate_v in 2 * (np.random.rand(75) - 0.5):\n", + " for bias_v in 3 * (np.random.default_rng().random(100)):\n", + " for gate_v in 2 * (np.random.default_rng().random(75) - 0.5):\n", " datasaver.add_result(\n", " (bias_voltage, bias_v),\n", " (gate_voltage, gate_v),\n", @@ -772,7 +772,7 @@ "\n", "with meas.run() as datasaver:\n", " for samp in samples:\n", - " for gate_v in 2 * (np.random.rand(75) - 0.5):\n", + " for gate_v in 2 * (np.random.default_rng().random(75) - 0.5):\n", " datasaver.add_result(\n", " (sample, samp),\n", " (gate_voltage, gate_v),\n", diff --git a/docs/examples/DataSet/Paramtypes explained.ipynb b/docs/examples/DataSet/Paramtypes explained.ipynb index 94c0b5f86493..91ab00f42823 100644 --- a/docs/examples/DataSet/Paramtypes explained.ipynb +++ b/docs/examples/DataSet/Paramtypes explained.ipynb @@ -125,7 +125,7 @@ " )\n", "\n", " def get_raw(self):\n", - " return np.random.randn(self.N)\n", + " return np.random.default_rng().standard_normal(self.N)\n", "\n", "\n", "class MultiDimSpectrum(ArrayParameter):\n", diff --git a/docs/examples/DataSet/Pedestrian example of subscribing to a DataSet.ipynb b/docs/examples/DataSet/Pedestrian example of subscribing to a DataSet.ipynb index 7aa23c831869..98555b21a6fb 100644 --- a/docs/examples/DataSet/Pedestrian example of subscribing to a DataSet.ipynb +++ b/docs/examples/DataSet/Pedestrian example of subscribing to a DataSet.ipynb @@ -162,8 +162,9 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "for x in np.linspace(100, 200, 150):\n", - " y = np.random.randn()\n", + " y = rng.standard_normal()\n", " dataSet.add_results([{\"x\": x, \"y\": y}])" ] }, @@ -349,8 +350,9 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "for x in np.linspace(0, 3 * np.pi, 100):\n", - " yvalue = 0.9 * np.sin(x) + np.random.randn() * 0.05\n", + " yvalue = 0.9 * np.sin(x) + rng.standard_normal() * 0.05\n", " dataSet.add_results([{\"blip\": x, \"blop\": yvalue}])\n", " sleep(0.1)" ] diff --git a/docs/examples/DataSet/Performing-measurements-using-qcodes-parameters-and-dataset.ipynb b/docs/examples/DataSet/Performing-measurements-using-qcodes-parameters-and-dataset.ipynb index 56747cebf294..225174eed913 100644 --- a/docs/examples/DataSet/Performing-measurements-using-qcodes-parameters-and-dataset.ipynb +++ b/docs/examples/DataSet/Performing-measurements-using-qcodes-parameters-and-dataset.ipynb @@ -2436,11 +2436,12 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "with meas.run() as datasaver:\n", " t_start = monotonic()\n", "\n", " while monotonic() - t_start < 3:\n", - " set_v = 10 / 2 * (np.random.rand() + 1)\n", + " set_v = 10 / 2 * (rng.random() + 1)\n", " dac.ch1.set(set_v)\n", "\n", " # some sleep to not get too many points (or to let the system settle)\n", @@ -2719,6 +2720,7 @@ } ], "source": [ + "rng = np.random.default_rng()\n", "meas2 = Measurement(exp=exp, name=\"random_sampling_measurement\")\n", "meas2.register_parameter(dac.ch1)\n", "meas2.register_parameter(dac.ch2)\n", @@ -2730,8 +2732,8 @@ "\n", "with meas2.run() as datasaver:\n", " for i in range(npoints):\n", - " x = 2 * (np.random.rand() - 0.5)\n", - " y = 2 * (np.random.rand() - 0.5)\n", + " x = 2 * (rng.random() - 0.5)\n", + " y = 2 * (rng.random() - 0.5)\n", " dac.ch1(x)\n", " dac.ch2(y)\n", " z = dmm.v2()\n", @@ -3324,7 +3326,7 @@ "\n", "\n", "noise = 0.0005\n", - "x0 = [np.random.rand(), np.random.rand()]\n", + "x0 = [np.random.default_rng().random(), np.random.default_rng().random()]\n", "\n", "with meas.run() as datasaver:\n", "\n", diff --git a/docs/examples/DataSet/Saving_data_in_the_background.ipynb b/docs/examples/DataSet/Saving_data_in_the_background.ipynb index b90d49921b0a..ead35f2425ef 100644 --- a/docs/examples/DataSet/Saving_data_in_the_background.ipynb +++ b/docs/examples/DataSet/Saving_data_in_the_background.ipynb @@ -113,8 +113,8 @@ " freqs = frequency.get()\n", " volt = voltage.get()\n", " time.sleep(0.1)\n", - " volt += 0.2 * np.random.rand()\n", - " noise = 0.01 * np.random.randn(len(freqs))\n", + " volt += 0.2 * np.random.default_rng().random()\n", + " noise = 0.01 * np.random.default_rng().standard_normal(len(freqs))\n", " return gaussian(freqs, volt, 2) + 0.01 * noise" ] }, diff --git a/docs/examples/DataSet/Threaded data acquisition.ipynb b/docs/examples/DataSet/Threaded data acquisition.ipynb index 22584158eb0c..ae5e2c38cbde 100644 --- a/docs/examples/DataSet/Threaded data acquisition.ipynb +++ b/docs/examples/DataSet/Threaded data acquisition.ipynb @@ -118,9 +118,10 @@ " @staticmethod\n", " def _exponential_decay(a: float, b: float):\n", " x = 0\n", + " rng = np.random.default_rng()\n", " while True:\n", " x = yield\n", - " yield a * np.exp(-b * x) + 0.02 * a * np.random.randn()" + " yield a * np.exp(-b * x) + 0.02 * a * rng.standard_normal()" ] }, { diff --git a/docs/examples/Parameters/Parameter-With-Setpoints-defined-on-a-different-instrument.ipynb b/docs/examples/Parameters/Parameter-With-Setpoints-defined-on-a-different-instrument.ipynb index fce4474d12ee..c86165c1306d 100644 --- a/docs/examples/Parameters/Parameter-With-Setpoints-defined-on-a-different-instrument.ipynb +++ b/docs/examples/Parameters/Parameter-With-Setpoints-defined-on-a-different-instrument.ipynb @@ -106,7 +106,7 @@ "class DummyArray(ParameterWithSetpoints):\n", " def get_raw(self):\n", " npoints = self.root_instrument.sweep_n_points.get_latest()\n", - " return np.random.rand(npoints)\n", + " return np.random.default_rng().random(npoints)\n", "\n", "\n", "class DummyBufferedDMM(Instrument):\n", @@ -149,7 +149,7 @@ "\n", " def _get_current_data(self):\n", " npoints = self.sweep_n_points.get_latest()\n", - " return np.random.rand(npoints)\n", + " return np.random.default_rng().random(npoints)\n", "\n", " def set_sweep_parameters(self, start_parameter, stop_parameter, label=None):\n", " if start_parameter.unit != stop_parameter.unit:\n", diff --git a/docs/examples/Parameters/Simple-Example-of-ParameterWithSetpoints.ipynb b/docs/examples/Parameters/Simple-Example-of-ParameterWithSetpoints.ipynb index b9ac23e60edd..0358ae1f4c93 100644 --- a/docs/examples/Parameters/Simple-Example-of-ParameterWithSetpoints.ipynb +++ b/docs/examples/Parameters/Simple-Example-of-ParameterWithSetpoints.ipynb @@ -108,7 +108,7 @@ "class DummyArray(ParameterWithSetpoints):\n", " def get_raw(self):\n", " npoints = self.root_instrument.n_points.get_latest()\n", - " return np.random.rand(npoints)\n", + " return np.random.default_rng().random(npoints)\n", "\n", "\n", "class DummySpectrumAnalyzer(Instrument):\n", diff --git a/docs/examples/plotting/auto_color_scale.ipynb b/docs/examples/plotting/auto_color_scale.ipynb index ddbaaf0fc4b0..9e693fb0b891 100644 --- a/docs/examples/plotting/auto_color_scale.ipynb +++ b/docs/examples/plotting/auto_color_scale.ipynb @@ -122,11 +122,12 @@ " npoints = 50\n", " xvals = np.linspace(0, 1, npoints)\n", " tvals = np.linspace(0, 1, npoints)\n", + " rng = np.random.default_rng()\n", " for counter, xv in enumerate(xvals):\n", " if background_noise and (\n", " counter < round(npoints / 2.3) or counter > round(npoints / 1.8)\n", " ):\n", - " data = np.random.rand(npoints) - data_offset\n", + " data = rng.random(npoints) - data_offset\n", " else:\n", " data = xv * np.linspace(0, 1, npoints)\n", " if counter == round(npoints / 1.9):\n", diff --git a/docs/examples/writing_drivers/A-ParameterWithSetpoints-Example-with-Dual-Setpoints.ipynb b/docs/examples/writing_drivers/A-ParameterWithSetpoints-Example-with-Dual-Setpoints.ipynb index 01d616181a51..b3b9bcbf9247 100644 --- a/docs/examples/writing_drivers/A-ParameterWithSetpoints-Example-with-Dual-Setpoints.ipynb +++ b/docs/examples/writing_drivers/A-ParameterWithSetpoints-Example-with-Dual-Setpoints.ipynb @@ -53,7 +53,7 @@ " decay = 1\n", " time = np.linspace(0, npts * dt, npts, endpoint=False)\n", " signal = np.exp(-decay * time) * np.sin(2 * np.pi * freq * time)\n", - " noise = 0.1 * np.random.randn(npts)\n", + " noise = 0.1 * np.random.default_rng().standard_normal(npts)\n", " return signal + noise" ] }, diff --git a/pyproject.toml b/pyproject.toml index a9745ddacc65..5a1c6e089a73 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -256,13 +256,10 @@ select = [ ] # G004 We have a lot of use of f strings in log messages # so disable that lint for now -# NPY002 We have a lot of use of the legacy -# random number generator. Eventually we should port this -# code. # PLxxxx are pylint lints that generate a fair amount of warnings # it may be worth fixing some or these in the future # PYI036 disable until https://github.com/astral-sh/ruff/issues/9794 is fixed -ignore = ["E501", "G004", "NPY002", "PLR2004", "PLR0913", "PLR0911", "PLR0912", "PLR0915", "PLW0602", "PLW0603", "PLW2901", "PYI036"] +ignore = ["E501", "G004", "PLR2004", "PLR0913", "PLR0911", "PLR0912", "PLR0915", "PLW0602", "PLW0603", "PLW2901", "PYI036"] # we want to explicitly use the micro symbol # not the greek letter diff --git a/src/qcodes/instrument_drivers/mock_instruments/__init__.py b/src/qcodes/instrument_drivers/mock_instruments/__init__.py index 551d9a67546e..4bf8a9b914cb 100644 --- a/src/qcodes/instrument_drivers/mock_instruments/__init__.py +++ b/src/qcodes/instrument_drivers/mock_instruments/__init__.py @@ -60,6 +60,8 @@ class MockParabola(DummyBase): def __init__(self, name: str, **kwargs: Unpack[InstrumentBaseKWArgs]): super().__init__(name, **kwargs) + self._rng = np.random.default_rng() + # Instrument parameters for parname in ["x", "y", "z"]: self.add_parameter( @@ -98,7 +100,7 @@ def _measure_parabola(self) -> float: self.x.get() ** 2 + self.y.get() ** 2 + self.z.get() ** 2 - + self.noise.get() * np.random.rand(1) + + self.noise.get() * self._rng.random() ) def _measure_skewed_parabola(self) -> float: @@ -107,7 +109,7 @@ def _measure_skewed_parabola(self) -> float: """ return (self.x.get() ** 2 + self.y.get() ** 2 + self.z.get() ** 2) * ( 1 + abs(self.y.get() - self.x.get()) - ) + self.noise.get() * np.random.rand(1) + ) + self.noise.get() * self._rng.random() class MockMetaParabola(InstrumentBase): @@ -258,6 +260,7 @@ def __init__(self, name: str = "dummy", **kwargs: Unpack[InstrumentBaseKWArgs]): class DmmExponentialParameter(Parameter): def __init__(self, name: str, **kwargs: Any): super().__init__(name, **kwargs) + self._rng = np.random.default_rng() self._ed = self._exponential_decay(5, 0.2) next(self._ed) @@ -276,14 +279,13 @@ def get_raw(self) -> ParamRawDataType: mylogger.debug("Getting raw value of parameter: %s as %s", self.full_name, val) return val - @staticmethod - def _exponential_decay(a: float, b: float) -> Generator[float, float, None]: + def _exponential_decay(self, a: float, b: float) -> Generator[float, float, None]: """ Yields a*exp(-b*x) where x is put in """ x = 0.0 while True: - x = yield a * np.exp(-b * x) + 0.02 * a * np.random.randn() + x = yield a * np.exp(-b * x) + 0.02 * a * self._rng.standard_normal() class DmmGaussParameter(Parameter): @@ -293,6 +295,7 @@ def __init__(self, name: str, **kwargs: Any): self.y0 = 0.2 self.sigma = 0.25 self.noise: float = 0.0005 + self._rng = np.random.default_rng() self._gauss = self._gauss_model() next(self._gauss) @@ -325,7 +328,7 @@ def gauss_2d(x: float, y: float) -> np.floating: x = 0.0 y = 0.0 while True: - noise = np.random.randn() * self.noise + noise = self._rng.standard_normal() * self.noise (x, y) = yield float(gauss_2d(x, y) + noise) @@ -948,10 +951,14 @@ class DummyParameterWithSetpoints1D(ParameterWithSetpoints): `dummy_n_points` parameter in the instrument. """ + def __init__(self, *args: Any, **kwargs: Any): + super().__init__(*args, **kwargs) + self._rng = np.random.default_rng() + def get_raw(self) -> ParamRawDataType: assert isinstance(self.instrument, DummyChannel) npoints = self.instrument.dummy_n_points() - return np.random.rand(npoints) + return self._rng.random(npoints) class DummyParameterWithSetpoints2D(ParameterWithSetpoints): @@ -960,11 +967,15 @@ class DummyParameterWithSetpoints2D(ParameterWithSetpoints): `dummy_n_points` and `dummy_n_points_2` parameters in the instrument. """ + def __init__(self, *args: Any, **kwargs: Any): + super().__init__(*args, **kwargs) + self._rng = np.random.default_rng() + def get_raw(self) -> ParamRawDataType: assert isinstance(self.instrument, DummyChannel) npoints = self.instrument.dummy_n_points() npoints_2 = self.instrument.dummy_n_points_2() - return np.random.rand(npoints, npoints_2) + return self._rng.random((npoints, npoints_2)) class DummyParameterWithSetpointsComplex(ParameterWithSetpoints): @@ -973,10 +984,14 @@ class DummyParameterWithSetpointsComplex(ParameterWithSetpoints): `dummy_n_points` parameter in the instrument. Returns Complex values """ + def __init__(self, *args: Any, **kwargs: Any): + super().__init__(*args, **kwargs) + self._rng = np.random.default_rng() + def get_raw(self) -> ParamRawDataType: assert isinstance(self.instrument, DummyChannel) npoints = self.instrument.dummy_n_points() - return np.random.rand(npoints) + 1j * np.random.rand(npoints) + return self._rng.random(npoints) + 1j * self._rng.random(npoints) def setpoint_generator( diff --git a/tests/dataset/conftest.py b/tests/dataset/conftest.py index 000f7974d5ab..c04de8dae5ee 100644 --- a/tests/dataset/conftest.py +++ b/tests/dataset/conftest.py @@ -377,13 +377,13 @@ def varlen_array_in_scalar_dataset(experiment): param = ArraySetPointParam() meas.register_parameter(scalar_param) meas.register_parameter(param, setpoints=(scalar_param,), paramtype="array") - np.random.seed(0) + rng = np.random.default_rng(0) with meas.run() as datasaver: for i in range(1, 10): scalar_param.set(i) param.setpoints = (np.arange(i),) datasaver.add_result( - (scalar_param, scalar_param.get()), (param, np.random.rand(i)) + (scalar_param, scalar_param.get()), (param, rng.random(i)) ) try: yield datasaver.dataset @@ -685,13 +685,14 @@ def __init__(self, name, instrument, **kwargs): self.npts = 100 self.start = 0 self.stop = 2e6 + self._rng = np.random.default_rng() def get_data(self): # This is how it should be: the setpoints are generated at the # time we get. But that will of course not work with the old Loop self.setpoints = (tuple(np.linspace(self.start, self.stop, self.npts)),) # not the best SA on the market; it just returns noise... - return np.random.randn(self.npts) + return self._rng.standard_normal(self.npts) class Spectrum(BaseSpectrum): def get_raw(self): @@ -718,9 +719,10 @@ def __init__(self, name, instrument, **kwargs): setpoint_units=("Hz", "Other Hz", "Third Hz"), **kwargs, ) + self._rng = np.random.default_rng() def get_raw(self): - return np.random.randn(*self.npts) + return self._rng.standard_normal(self.npts) class ListSpectrum(BaseSpectrum): def get_raw(self): @@ -789,10 +791,11 @@ def _make_dummy_instrument() -> Iterator[DummyChannelInstrument]: class ArrayshapedParam(Parameter): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + self._rng = np.random.default_rng() def get_raw(self): assert isinstance(self.vals, Arrays) assert self.vals.shape is not None shape = self.vals.shape - return np.random.rand(*shape) + return self._rng.random(shape) diff --git a/tests/dataset/measurement/test_measurement_context_manager.py b/tests/dataset/measurement/test_measurement_context_manager.py index c71988f040ac..59c7378ad6aa 100644 --- a/tests/dataset/measurement/test_measurement_context_manager.py +++ b/tests/dataset/measurement/test_measurement_context_manager.py @@ -815,7 +815,7 @@ def test_datasaver_arrays_lists_tuples(bg_writing, N) -> None: with meas.run(write_in_background=bg_writing) as datasaver: freqax = np.linspace(1e6, 2e6, N) - signal = np.random.randn(N) + signal = np.random.default_rng().standard_normal(N) datasaver.add_result(("freqax", freqax), ("signal", signal)) @@ -826,7 +826,7 @@ def test_datasaver_arrays_lists_tuples(bg_writing, N) -> None: with meas.run(write_in_background=bg_writing) as datasaver: freqax = np.linspace(1e6, 2e6, N) - signal = np.random.randn(N - 1) + signal = np.random.default_rng().standard_normal(N - 1) with pytest.raises(ValueError): datasaver.add_result(("freqax", freqax), ("signal", signal)) @@ -845,7 +845,7 @@ def test_datasaver_arrays_lists_tuples(bg_writing, N) -> None: # save arrays with meas.run(write_in_background=bg_writing) as datasaver: freqax = np.linspace(1e6, 2e6, N) - signal1 = np.random.randn(N) + signal1 = np.random.default_rng().standard_normal(N) datasaver.add_result( ("freqax", freqax), ("signal", signal1), ("gate_voltage", 0) @@ -859,7 +859,7 @@ def test_datasaver_arrays_lists_tuples(bg_writing, N) -> None: # save lists with meas.run(write_in_background=bg_writing) as datasaver: freqax2 = np.linspace(1e6, 2e6, N).flatten().tolist() - signal2 = np.random.randn(N).flatten().tolist() + signal2 = np.random.default_rng().standard_normal(N).flatten().tolist() datasaver.add_result( ("freqax", freqax2), ("signal", signal2), ("gate_voltage", 0) @@ -870,7 +870,7 @@ def test_datasaver_arrays_lists_tuples(bg_writing, N) -> None: # save tuples with meas.run(write_in_background=bg_writing) as datasaver: freqax3 = tuple(np.linspace(1e6, 2e6, N).flatten().tolist()) - signal3 = tuple(np.random.randn(N).flatten().tolist()) + signal3 = tuple(np.random.default_rng().standard_normal(N).flatten().tolist()) datasaver.add_result( ("freqax", freqax3), ("signal", signal3), ("gate_voltage", 0) @@ -903,7 +903,7 @@ def test_datasaver_numeric_and_array_paramtype(bg_writing, N) -> None: setpoints=("numeric_1",), ) - signal = np.random.randn(113) + signal = np.random.default_rng().standard_normal(113) with meas.run(bg_writing) as datasaver: datasaver.add_result(("numeric_1", 3.75), ("array_1", signal)) @@ -939,7 +939,7 @@ def test_datasaver_numeric_after_array_paramtype(bg_writing) -> None: setpoints=("numeric_1",), ) - signal = np.random.randn(113) + signal = np.random.default_rng().standard_normal(113) with meas.run(write_in_background=bg_writing) as datasaver: # it is important that first comes the 'array' data and then 'numeric' @@ -996,8 +996,8 @@ def test_datasaver_unsized_arrays(N, storage_type, bg_writing) -> None: # correctly with meas.run(write_in_background=bg_writing) as datasaver: freqax = np.linspace(1e6, 2e6, N) - np.random.seed(0) - signal = np.random.randn(N) + rng = np.random.default_rng(0) + signal = rng.standard_normal(N) for i in range(N): myfreq = np.array(freqax[i]) assert myfreq.shape == () @@ -1010,8 +1010,8 @@ def test_datasaver_unsized_arrays(N, storage_type, bg_writing) -> None: assert isinstance(ds, DataSet) loaded_data = ds.get_parameter_data()["signal"] - np.random.seed(0) - expected_signal = np.random.randn(N) + rng = np.random.default_rng(0) + expected_signal = rng.standard_normal(N) expected_freqax = np.linspace(1e6, 2e6, N) if storage_type == "array": @@ -1079,20 +1079,21 @@ def test_datasaver_arrayparams( spectrum.npts = M - np.random.seed(seed) + collected_outputs = [] with meas.run(write_in_background=bg_writing) as datasaver: for set_v in np.linspace(0, 0.01, N): - datasaver.add_result((DAC.ch1, set_v), (spectrum, spectrum.get())) + output = spectrum.get() + collected_outputs.append(output) + datasaver.add_result((DAC.ch1, set_v), (spectrum, output)) if storage_type == "numeric": assert datasaver.points_written == N * M elif storage_type == "array": assert datasaver.points_written == N - np.random.seed(seed) expected_dac_data = np.repeat(np.linspace(0, 0.01, N), M) expected_freq_axis = np.tile(spectrum.setpoints[0], N) - expected_output = np.array([spectrum.get() for _ in range(N)]).reshape(N * M) + expected_output = np.array(collected_outputs).reshape(N * M) if storage_type == "array": expected_dac_data = expected_dac_data.reshape(N, M) @@ -1187,7 +1188,6 @@ def test_datasaver_array_parameters_channel( def test_datasaver_parameter_with_setpoints( channel_array_instrument, DAC, n, storage_type, bg_writing ) -> None: - random_seed = 1 chan = channel_array_instrument.A param = chan.dummy_parameter_with_setpoints chan.dummy_n_points(n) @@ -1208,10 +1208,8 @@ def test_datasaver_parameter_with_setpoints( # Now for a real measurement with meas.run(write_in_background=bg_writing) as datasaver: - # we seed the random number generator - # so we can test that we get the expected numbers - np.random.seed(random_seed) - datasaver.add_result((param, param.get())) + param_data = param.get() + datasaver.add_result((param, param_data)) if storage_type == "numeric": expected_points_written = n elif storage_type == "array": @@ -1243,8 +1241,7 @@ def test_datasaver_parameter_with_setpoints( expected_dep_data = np.linspace( chan.dummy_start(), chan.dummy_stop(), chan.dummy_n_points() ) - np.random.seed(random_seed) - expected_data = np.random.rand(n) + expected_data = param_data if storage_type == "array": expected_dep_data = expected_dep_data.reshape((1, chan.dummy_n_points())) expected_data = expected_data.reshape((1, chan.dummy_n_points())) @@ -1268,7 +1265,6 @@ def test_datasaver_parameter_with_setpoints( def test_datasaver_parameter_with_setpoints_explicitly_expanded( channel_array_instrument, DAC, n, storage_type, bg_writing ) -> None: - random_seed = 1 chan = channel_array_instrument.A param = chan.dummy_parameter_with_setpoints chan.dummy_n_points(n) @@ -1289,10 +1285,8 @@ def test_datasaver_parameter_with_setpoints_explicitly_expanded( # Now for a real measurement with meas.run(write_in_background=bg_writing) as datasaver: - # we seed the random number generator - # so we can test that we get the expected numbers - np.random.seed(random_seed) - datasaver.add_result(*expand_setpoints_helper(param)) + param_data = param.get() + datasaver.add_result(*expand_setpoints_helper(param, results=param_data)) if storage_type == "numeric": expected_points_written = n elif storage_type == "array": @@ -1324,8 +1318,7 @@ def test_datasaver_parameter_with_setpoints_explicitly_expanded( expected_dep_data = np.linspace( chan.dummy_start(), chan.dummy_stop(), chan.dummy_n_points() ) - np.random.seed(random_seed) - expected_data = np.random.rand(n) + expected_data = param_data if storage_type == "array": expected_dep_data = expected_dep_data.reshape((1, chan.dummy_n_points())) expected_data = expected_data.reshape((1, chan.dummy_n_points())) @@ -1341,7 +1334,6 @@ def test_datasaver_parameter_with_setpoints_explicitly_expanded( def test_datasaver_parameter_with_setpoints_that_are_different_raises( channel_array_instrument, DAC ) -> None: - random_seed = 1 chan = channel_array_instrument.A param = chan.dummy_parameter_with_setpoints_2d chan.dummy_n_points(10) @@ -1364,10 +1356,7 @@ def test_datasaver_parameter_with_setpoints_that_are_different_raises( assert dep_ps in meas._interdeps.dependencies[param_ps] with meas.run() as datasaver: - # we seed the random number generator - # so we can test that we get the expected numbers # This fails because a 2D PWS expects 2D setpoints parameter values (ie a grid) - np.random.seed(random_seed) with pytest.raises(ValueError, match="Multiple distinct values found for"): datasaver.add_result((param, param.get()), (sp_param_1, sp_param_1.get())) @@ -1383,7 +1372,6 @@ def test_datasaver_parameter_with_setpoints_that_are_different_raises( def test_datasaver_parameter_with_setpoints_complex( channel_array_instrument, DAC, n, bg_writing ) -> None: - random_seed = 1 chan = channel_array_instrument.A param = chan.dummy_parameter_with_setpoints_complex chan.dummy_n_points(n) @@ -1408,10 +1396,8 @@ def test_datasaver_parameter_with_setpoints_complex( # Now for a real measurement with meas.run(write_in_background=bg_writing) as datasaver: - # we seed the random number generator - # so we can test that we get the expected numbers - np.random.seed(random_seed) - datasaver.add_result((param, param.get())) + param_data = param.get() + datasaver.add_result((param, param_data)) assert datasaver.points_written == 1 ds = load_by_id(datasaver.run_id) @@ -1427,10 +1413,9 @@ def test_datasaver_parameter_with_setpoints_complex( chan.dummy_start(), chan.dummy_stop(), chan.dummy_n_points() ).reshape(1, chan.dummy_n_points()), ) - np.random.seed(random_seed) assert_allclose( subdata["dummy_channel_inst_ChanA_dummy_parameter_with_setpoints_complex"], - (np.random.rand(n) + 1j * np.random.rand(n)).reshape(1, chan.dummy_n_points()), + param_data.reshape(1, chan.dummy_n_points()), ) @@ -1445,7 +1430,6 @@ def test_datasaver_parameter_with_setpoints_complex( def test_datasaver_parameter_with_setpoints_complex_explicitly_expanded( channel_array_instrument, DAC, n, bg_writing ) -> None: - random_seed = 1 chan = channel_array_instrument.A param = chan.dummy_parameter_with_setpoints_complex chan.dummy_n_points(n) @@ -1470,10 +1454,8 @@ def test_datasaver_parameter_with_setpoints_complex_explicitly_expanded( # Now for a real measurement with meas.run(write_in_background=bg_writing) as datasaver: - # we seed the random number generator - # so we can test that we get the expected numbers - np.random.seed(random_seed) - datasaver.add_result(*expand_setpoints_helper(param)) + param_data = param.get() + datasaver.add_result(*expand_setpoints_helper(param, results=param_data)) assert datasaver.points_written == 1 ds = load_by_id(datasaver.run_id) @@ -1489,10 +1471,9 @@ def test_datasaver_parameter_with_setpoints_complex_explicitly_expanded( chan.dummy_start(), chan.dummy_stop(), chan.dummy_n_points() ).reshape(1, chan.dummy_n_points()), ) - np.random.seed(random_seed) assert_allclose( subdata["dummy_channel_inst_ChanA_dummy_parameter_with_setpoints_complex"], - (np.random.rand(n) + 1j * np.random.rand(n)).reshape(1, chan.dummy_n_points()), + param_data.reshape(1, chan.dummy_n_points()), ) @@ -1804,7 +1785,7 @@ def test_datasaver_multidim_array(experiment, bg_writing) -> None: meas.register_parameter(x2, paramtype="array") meas.register_parameter(y1, setpoints=[x1, x2], paramtype="array") meas.register_parameter(y2, setpoints=[x1, x2], paramtype="array") - data = np.random.rand(4, size1, size2) + data = np.random.default_rng().random((4, size1, size2)) expected = { "x1": data[0, :, :], "x2": data[1, :, :], @@ -1854,7 +1835,7 @@ def test_datasaver_export( meas.register_parameter(x2, paramtype="array") meas.register_parameter(y1, setpoints=[x1, x2], paramtype="array") meas.register_parameter(y2, setpoints=[x1, x2], paramtype="array") - data = np.random.rand(4, size1, size2) + data = np.random.default_rng().random((4, size1, size2)) expected = { "x1": data[0, :, :], "x2": data[1, :, :], @@ -1914,7 +1895,7 @@ def test_datasaver_multidim_numeric(experiment, bg_writing) -> None: meas.register_parameter(x2, paramtype="numeric") meas.register_parameter(y1, setpoints=[x1, x2], paramtype="numeric") meas.register_parameter(y2, setpoints=[x1, x2], paramtype="numeric") - data = np.random.rand(4, size1, size2) + data = np.random.default_rng().random((4, size1, size2)) with meas.run(write_in_background=bg_writing) as datasaver: datasaver.add_result( (str(x1), data[0, :, :]), @@ -2192,7 +2173,8 @@ def test_datasaver_arrays_of_different_length(storage_type, Ns, bg_writing) -> N (f"freqs{n}", np.linspace(0, 1, Ns[n])) for n in range(no_of_signals) ) result_sigs = list( - (f"signal{n}", np.random.randn(Ns[n])) for n in range(no_of_signals) + (f"signal{n}", np.random.default_rng().standard_normal(Ns[n])) + for n in range(no_of_signals) ) full_result: tuple[tuple[str, int | np.ndarray | str], ...] = tuple( result_freqs + result_sigs + [result_t] diff --git a/tests/dataset/test__get_data_from_ds.py b/tests/dataset/test__get_data_from_ds.py index 23d40105323a..350a9f419be8 100644 --- a/tests/dataset/test__get_data_from_ds.py +++ b/tests/dataset/test__get_data_from_ds.py @@ -258,7 +258,7 @@ def test_datasaver_multidim_array(experiment, bg_writing) -> None: meas.register_parameter(x2, paramtype="array") meas.register_parameter(y1, setpoints=[x1, x2], paramtype="array") meas.register_parameter(y2, setpoints=[x1, x2], paramtype="array") - data = np.random.rand(4, size1, size2) + data = np.random.default_rng().random((4, size1, size2)) expected = { "x1": data[0, :, :], "x2": data[1, :, :], @@ -304,7 +304,7 @@ def test_datasaver_multidim_numeric(experiment, bg_writing) -> None: meas.register_parameter(x2, paramtype="numeric") meas.register_parameter(y1, setpoints=[x1, x2], paramtype="numeric") meas.register_parameter(y2, setpoints=[x1, x2], paramtype="numeric") - data = np.random.rand(4, size1, size2) + data = np.random.default_rng().random((4, size1, size2)) with meas.run(write_in_background=bg_writing) as datasaver: datasaver.add_result( (str(x1), data[0, :, :]), diff --git a/tests/dataset/test_database_creation_and_upgrading.py b/tests/dataset/test_database_creation_and_upgrading.py index e0f54cd7077b..e8266b281413 100644 --- a/tests/dataset/test_database_creation_and_upgrading.py +++ b/tests/dataset/test_database_creation_and_upgrading.py @@ -920,9 +920,10 @@ def test_perform_actual_upgrade_6_to_newest_add_new_data() -> None: # Make a number of identical runs for _ in range(10): with meas.run() as datasaver: - for x in np.random.rand(10): - for y in np.random.rand(10): - z = np.random.rand() + rng = np.random.default_rng() + for x in rng.random(10): + for y in rng.random(10): + z = rng.random() datasaver.add_result( (params[0], 0), (params[1], 1), diff --git a/tests/dataset/test_dataset_basic.py b/tests/dataset/test_dataset_basic.py index c6e6884d34ef..e0e45bb3b73d 100644 --- a/tests/dataset/test_dataset_basic.py +++ b/tests/dataset/test_dataset_basic.py @@ -491,8 +491,9 @@ def test_add_data_array() -> None: expected_x = np.arange(100) expected_y = [] + rng = np.random.default_rng() for x in range(100): - y = np.random.random_sample(10) + y = rng.random(10) expected_y.append(y) mydataset.add_results([{"x": x, "y": y}]) @@ -1146,8 +1147,8 @@ def test_get_varlen_array_in_scalar_param_data(varlen_array_in_scalar_dataset) - setpoint_param_values_list.append(j) scalar_param_values_list.append(i) - np.random.seed(0) - test_parameter_values = np.random.rand(n_points) + rng = np.random.default_rng(0) + test_parameter_values = rng.random(n_points) scalar_param_values = np.array(scalar_param_values_list) setpoint_param_values = np.array(setpoint_param_values_list) diff --git a/tests/dataset/test_plotting.py b/tests/dataset/test_plotting.py index 9d3fe04e666e..94d9e0dcec45 100644 --- a/tests/dataset/test_plotting.py +++ b/tests/dataset/test_plotting.py @@ -31,6 +31,9 @@ class TerminateLoopException(Exception): pass +_RNG = np.random.default_rng() + + @given( param_name=text(min_size=1, max_size=10), param_label=text(min_size=0, max_size=15), @@ -47,7 +50,7 @@ class TerminateLoopException(Exception): param_label="Larger than the highest scale", scale=max(list(_ENGINEERING_PREFIXES.keys())), unit="V", - data_strategy=np.random.random((5,)) + data_strategy=_RNG.random((5,)) * 10 ** (3 + max(list(_ENGINEERING_PREFIXES.keys()))), ) @example( @@ -55,7 +58,7 @@ class TerminateLoopException(Exception): param_label="Lower than the lowest scale", scale=min(list(_ENGINEERING_PREFIXES.keys())), unit="V", - data_strategy=np.random.random((5,)) + data_strategy=_RNG.random((5,)) * 10 ** (-3 + min(list(_ENGINEERING_PREFIXES.keys()))), ) @settings(suppress_health_check=[HealthCheck.too_slow]) @@ -132,8 +135,10 @@ def test_plot_by_id_line_and_heatmap(experiment, request: FixtureRequest) -> Non inst = DummyInstrument("dummy", gates=["s1", "m1", "s2", "m2"]) request.addfinalizer(inst.close) - inst.m1.get = np.random.randn - inst.m2.get = lambda: np.random.randint(0, 5) + rng = np.random.default_rng() + + inst.m1.get = rng.standard_normal + inst.m2.get = lambda: rng.integers(0, 5) meas = Measurement() meas.register_parameter(inst.s1) diff --git a/tests/dataset/test_string_data.py b/tests/dataset/test_string_data.py index 3193f62ca1db..928ffbd70698 100644 --- a/tests/dataset/test_string_data.py +++ b/tests/dataset/test_string_data.py @@ -170,7 +170,7 @@ def test_list_of_strings(experiment) -> None: Test saving list of strings via DataSaver """ p_values = ["X_Y", "X_X", "X_I", "I_I"] - list_of_strings = list(np.random.choice(p_values, (10,))) + list_of_strings = list(np.random.default_rng().choice(p_values, (10,))) p = Parameter( "p", diff --git a/tests/dataset_generators.py b/tests/dataset_generators.py index ff891f6cb69b..b54624cfa277 100644 --- a/tests/dataset_generators.py +++ b/tests/dataset_generators.py @@ -18,11 +18,14 @@ def dataset_with_outliers_generator( npoints = 50 xvals = np.linspace(0, 1, npoints) tvals = np.linspace(0, 1, npoints) + + rng = np.random.default_rng() + for counter, xv in enumerate(xvals): if background_noise and ( counter < round(npoints / 2.3) or counter > round(npoints / 1.8) ): - data = np.random.rand(npoints) - data_offset + data = rng.random(npoints) - data_offset else: data = xv * np.linspace(0, 1, npoints) if counter == round(npoints / 1.9): diff --git a/tests/drivers/keysight_b1500/b1500_driver_tests/test_sampling_measurement.py b/tests/drivers/keysight_b1500/b1500_driver_tests/test_sampling_measurement.py index 34e48f8c88fc..973d29f139e7 100644 --- a/tests/drivers/keysight_b1500/b1500_driver_tests/test_sampling_measurement.py +++ b/tests/drivers/keysight_b1500/b1500_driver_tests/test_sampling_measurement.py @@ -30,8 +30,8 @@ def smu(b1500: "KeysightB1500") -> "KeysightB1511B": @pytest.fixture def smu_output() -> tuple[int, npt.NDArray[np.float64]]: n_samples = 7 - np.random.seed(1) - data_to_return = np.random.rand(n_samples) + rng = np.random.default_rng(1) + data_to_return = rng.random(n_samples) return n_samples, data_to_return diff --git a/tests/drivers/test_Keithley_2450.py b/tests/drivers/test_Keithley_2450.py index 3d4cefefdc70..4818f4fd0181 100644 --- a/tests/drivers/test_Keithley_2450.py +++ b/tests/drivers/test_Keithley_2450.py @@ -95,8 +95,9 @@ def test_setpoint_always_follows_source_function(k2450) -> None: should always follow the source module """ n = 100 - sense_modes = np.random.choice(["current", "voltage", "resistance"], n) - source_modes = np.random.choice(["current", "voltage"], n) + rng = np.random.default_rng() + sense_modes = rng.choice(["current", "voltage", "resistance"], n) + source_modes = rng.choice(["current", "voltage"], n) for sense_mode, source_mode in zip(sense_modes, source_modes): k2450.sense.function("voltage") # In 'resistance' sense mode, we cannot diff --git a/tests/drivers/test_tektronix_AWG5014C.py b/tests/drivers/test_tektronix_AWG5014C.py index f30d4f87ecf9..cbc516c9f884 100644 --- a/tests/drivers/test_tektronix_AWG5014C.py +++ b/tests/drivers/test_tektronix_AWG5014C.py @@ -27,9 +27,10 @@ def test_init_awg(awg) -> None: def test_pack_waveform(awg) -> None: N = 25 - waveform = np.random.rand(N) - m1 = np.random.randint(0, 2, N) - m2 = np.random.randint(0, 2, N) + rng = np.random.default_rng() + waveform = rng.random(N) + m1 = rng.integers(0, 2, N) + m2 = rng.integers(0, 2, N) package = awg._pack_waveform(waveform, m1, m2) @@ -39,9 +40,10 @@ def test_pack_waveform(awg) -> None: def test_make_awg_file(awg) -> None: N = 25 - waveforms = [[np.random.rand(N)]] - m1s = [[np.random.randint(0, 2, N)]] - m2s = [[np.random.randint(0, 2, N)]] + rng = np.random.default_rng() + waveforms = [[rng.random(N)]] + m1s = [[rng.integers(0, 2, N)]] + m2s = [[rng.integers(0, 2, N)]] nreps = [1] trig_waits = [0] goto_states = [0] diff --git a/tests/drivers/test_tektronix_AWG70000A.py b/tests/drivers/test_tektronix_AWG70000A.py index 004bb65ca9ca..4c51c97071e0 100644 --- a/tests/drivers/test_tektronix_AWG70000A.py +++ b/tests/drivers/test_tektronix_AWG70000A.py @@ -55,10 +55,11 @@ def random_wfm_m1_m2_package(): """ def make(): - length = np.random.randint(2400, 2500) - wfm = 0.2 * (np.random.rand(length) - 0.5) - m1 = np.random.randint(0, 2, length) - m2 = np.random.randint(0, 2, length) + rng = np.random.default_rng() + length = rng.integers(2400, 2500) + wfm = 0.2 * (rng.random(length) - 0.5) + m1 = rng.integers(0, 2, length) + m2 = rng.integers(0, 2, length) return np.array([wfm, m1, m2]) return make @@ -82,11 +83,12 @@ def random_element(num_chans): 2400 points long, the minimum allowed by the instrument """ data = {n: {} for n in range(1, 1 + num_chans)} + rng = np.random.default_rng() for key in data.keys(): data[key] = { - "wfm": np.random.randn(2400), - "m1": np.random.randint(0, 2, 2400), - "m2": np.random.randint(0, 2, 2400), + "wfm": rng.standard_normal(2400), + "m1": rng.integers(0, 2, 2400), + "m2": rng.integers(0, 2, 2400), } return data diff --git a/tests/parameter/test_parameter_scale_offset.py b/tests/parameter/test_parameter_scale_offset.py index 81d5b6261693..782805409056 100644 --- a/tests/parameter/test_parameter_scale_offset.py +++ b/tests/parameter/test_parameter_scale_offset.py @@ -192,7 +192,7 @@ def test_numpy_array_valued_parameter_preserves_type_if_scale_and_offset_are_set None ): def rands(): - return np.random.randn(5) + return np.random.default_rng().standard_normal(5) param = Parameter(name="test_param", set_cmd=None, get_cmd=rands) diff --git a/tests/parameter/test_parameter_with_setpoints.py b/tests/parameter/test_parameter_with_setpoints.py index 08ef2fda3c64..e2fabadcd73d 100644 --- a/tests/parameter/test_parameter_with_setpoints.py +++ b/tests/parameter/test_parameter_with_setpoints.py @@ -1,10 +1,11 @@ import numpy as np import pytest -from numpy.random import rand import qcodes.validators as vals from qcodes.parameters import Parameter, ParameterWithSetpoints, expand_setpoints_helper +_rng = np.random.default_rng() + @pytest.fixture() def parameters(): @@ -48,18 +49,18 @@ def test_validation_shapes() -> None: setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) setpoints_2 = Parameter( "setpoints_2", - get_cmd=lambda: rand(n_points_2()), + get_cmd=lambda: _rng.random(n_points_2()), vals=vals.Arrays(shape=(n_points_2,)), ) param_with_setpoints_1 = ParameterWithSetpoints( "param_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1,)), ) @@ -75,7 +76,7 @@ def test_validation_shapes() -> None: param_with_setpoints_2 = ParameterWithSetpoints( "param_2", - get_cmd=lambda: rand(n_points_1(), n_points_2()), + get_cmd=lambda: _rng.random((n_points_1(), n_points_2())), vals=vals.Arrays(shape=(n_points_1, n_points_2)), ) @@ -101,14 +102,14 @@ def test_setpoints_non_parameter_raises() -> None: with pytest.raises(TypeError, match=err_msg): param_with_setpoints_1 = ParameterWithSetpoints( "param_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(lambda x: x,), # type: ignore[arg-type] vals=vals.Arrays(shape=(n_points_1,)), ) param_with_setpoints_1 = ParameterWithSetpoints( "param_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) @@ -129,13 +130,13 @@ def test_validation_inconsistent_shape() -> None: setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) param_with_diff_length = ParameterWithSetpoints( "param_1", - get_cmd=lambda: rand(n_points_2()), + get_cmd=lambda: _rng.random(n_points_2()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_2,)), ) @@ -166,13 +167,13 @@ def test_validation_wrong_validator() -> None: n_points_2.set(20) setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) # output is not consistent with validator param_with_wrong_validator = ParameterWithSetpoints( "param_2", - get_cmd=lambda: rand(n_points_2()), + get_cmd=lambda: _rng.random(n_points_2()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1,)), ) @@ -199,7 +200,7 @@ def test_validation_no_validator() -> None: n_points_1.set(10) setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) # output does not have a validator @@ -211,7 +212,9 @@ def test_validation_no_validator() -> None: r"", ): ParameterWithSetpoints( - "param_3", get_cmd=lambda: rand(n_points_1()), setpoints=(setpoints_1,) + "param_3", + get_cmd=lambda: _rng.random(n_points_1()), + setpoints=(setpoints_1,), ) @@ -224,10 +227,10 @@ def test_validation_sp_no_validator() -> None: n_points_2.set(20) # setpoints do not have a validator - setpoints_2 = Parameter("setpoints_2", get_cmd=lambda: rand(n_points_2())) + setpoints_2 = Parameter("setpoints_2", get_cmd=lambda: _rng.random(n_points_2())) param_sp_without_validator = ParameterWithSetpoints( "param_4", - get_cmd=lambda: rand(n_points_2()), + get_cmd=lambda: _rng.random(n_points_2()), setpoints=(setpoints_2,), vals=vals.Arrays(shape=(n_points_2,)), ) @@ -252,7 +255,7 @@ def test_validation_without_shape() -> None: n_points_1.set(10) setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1,)), ) with pytest.raises( @@ -263,7 +266,7 @@ def test_validation_without_shape() -> None: ): ParameterWithSetpoints( "param_5", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(), ) @@ -280,11 +283,11 @@ def test_validation_without_sp_shape() -> None: n_points_2.set(20) setpoints_1 = Parameter( - "setpoints_1", get_cmd=lambda: rand(n_points_1()), vals=vals.Arrays() + "setpoints_1", get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays() ) param_sp_without_shape = ParameterWithSetpoints( "param_6", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1,)), ) @@ -312,12 +315,12 @@ def test_validation_one_dim_missing() -> None: n_points_2.set(20) setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1, n_points_2)), ) param_sp_without_shape = ParameterWithSetpoints( "param_6", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1, None)), # type: ignore[arg-type] ) @@ -345,12 +348,12 @@ def test_validation_one_sp_dim_missing() -> None: n_points_2.set(20) setpoints_1 = Parameter( "setpoints_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), vals=vals.Arrays(shape=(n_points_1, None)), # type: ignore[arg-type] ) param_sp_without_shape = ParameterWithSetpoints( "param_6", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1, n_points_2)), ) @@ -378,7 +381,7 @@ def test_expand_setpoints_1c(parameters) -> None: param_with_setpoints_1 = ParameterWithSetpoints( "param_1", - get_cmd=lambda: rand(n_points_1()), + get_cmd=lambda: _rng.random(n_points_1()), setpoints=(setpoints_1,), vals=vals.Arrays(shape=(n_points_1,)), ) @@ -396,7 +399,7 @@ def test_expand_setpoints_2d(parameters) -> None: param_with_setpoints_2 = ParameterWithSetpoints( "param_2", - get_cmd=lambda: rand(n_points_1(), n_points_2()), + get_cmd=lambda: _rng.random((n_points_1(), n_points_2())), vals=vals.Arrays(shape=(n_points_1, n_points_2)), ) param_with_setpoints_2.setpoints = (setpoints_1, setpoints_2) @@ -424,7 +427,7 @@ def test_expand_setpoints_3d(parameters) -> None: param_with_setpoints_3 = ParameterWithSetpoints( "param_2", - get_cmd=lambda: rand(n_points_1(), n_points_2(), n_points_3()), + get_cmd=lambda: _rng.random((n_points_1(), n_points_2(), n_points_3())), vals=vals.Arrays(shape=(n_points_1, n_points_2, n_points_3)), ) param_with_setpoints_3.setpoints = (setpoints_1, setpoints_2, setpoints_3) diff --git a/tests/validators/test_arrays.py b/tests/validators/test_arrays.py index 24dd9bc5c642..02a0549f6709 100644 --- a/tests/validators/test_arrays.py +++ b/tests/validators/test_arrays.py @@ -102,7 +102,7 @@ def test_real_subtypes() -> None: only support other concrete types raises as expected """ types = list(set(numpy_concrete_ints + numpy_floats)) - randint = np.random.randint(0, len(types)) + randint = np.random.default_rng().integers(0, len(types)) mytype = types.pop(randint) a = Arrays(valid_types=(mytype,))