diff --git a/examples/Simulated_Annealing/results/all_raw_runs.pkl b/examples/Simulated_Annealing/results/all_raw_runs.pkl new file mode 100644 index 00000000..975f9685 Binary files /dev/null and b/examples/Simulated_Annealing/results/all_raw_runs.pkl differ diff --git a/examples/Simulated_Annealing/simulated_annealing.ipynb b/examples/Simulated_Annealing/simulated_annealing.ipynb new file mode 100644 index 00000000..daf1c34c --- /dev/null +++ b/examples/Simulated_Annealing/simulated_annealing.ipynb @@ -0,0 +1,1082 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "12040b9f", + "metadata": {}, + "source": [ + "## Import modules and Packages" + ] + }, + { + "cell_type": "markdown", + "id": "5ca429ad", + "metadata": {}, + "source": [ + "## Simulated Annealing (SA)\n", + "\n", + "SA is an optimization algorithm that works by navigating the input space and evaluating the objective function (energy) similarly to hill climbing. The main difference is that SA implements a strategy to avoid getting stuck in local optima.\n", + "\n", + "The general idea is to allow moves to a worse position, but in a structured way. When a candidate solution is selected, the probability of actually moving to the new position is determined by the change in the objective function and by a parameter called **temperature**. When the temperature is high, the chance of performing a jump to a worse state increases, and the opposite happens when the temperature is low. By continuously decreasing the temperature during the execution of the algorithm, it can escape local optima during the first stages (high temperature), but it settles into a position towards the end of the execution (low temperature).\n", + "\n", + "### Probability of Making a Jump\n", + "\n", + "**Case 1:**\n", + "$$\n", + "\\Delta E = E_{current} - E_{next} > 0\n", + "$$\n", + "\n", + "It is always advantageous to move to a state with a better objective function. In this case, the probability is $P = 1$.\n", + "\n", + "**Case 2:**\n", + "$$\n", + "\\Delta E = E_{current} - E_{next} < 0\n", + "$$\n", + "\n", + "In this case, the probability of taking the step is determined by:\n", + "\n", + "$$\n", + "P = e^{-|\\Delta E| / T}\n", + "$$\n", + "\n", + "**Note:** This formulation applies to a minimization problem. To solve a maximization problem, the only change is that $\\Delta E = E_{next} - E_{current}$.\n", + "\n", + "### Temperature Decrease\n", + "\n", + "The way the temperature decreases during the algorithm's execution varies between implementations. This is referred to as the temperature **schedule**, which is a function of time or the number of iterations.\n", + "\n", + "**Note:** $\\beta = 1 / T$ is also commonly used in the implementation of the algorithm." + ] + }, + { + "cell_type": "markdown", + "id": "3c6835f6", + "metadata": {}, + "source": [ + "Let's define a larger model, with 100 variables and random weights.\n", + "\n", + "Assume that we are interested at the instance created with random weights $h_{i}, J_{i, j} \\sim U[-1, +1]$." + ] + }, + { + "cell_type": "markdown", + "id": "e415ebf5", + "metadata": {}, + "source": [ + "### Problem statement\n", + "\n", + "We pose the Ising problem as the following optimization problem:\n", + "\n", + "$$\n", + "\\min_{s \\in \\{ \\pm 1 \\}^n} H(s) = \\min_{s \\in \\{ \\pm 1 \\}^n} \\sum_{(i, j) \\in E(G)} J_{i,j}s_is_j + \\sum_{i \\in V(G)} h_is_i + \\beta\n", + "$$\n", + "\n", + "where we optimize over spins $s \\in \\{ \\pm 1 \\}^n$, on a constrained graph $G(V,E)$, where the quadratic coefficients are $J_{i,j}$ and the linear coefficients are $h_i$.\n", + "We also include an arbitrary offset of the Ising model $\\beta$. This ising model can be considered a Sherrington-Kirkpatrick (SK) model, being, therefore, fully connected." + ] + }, + { + "cell_type": "markdown", + "id": "16e88325", + "metadata": {}, + "source": [ + "### Raw Data\n", + "\n", + "- Total Instances: 20 \n", + "- Varying parameter during solve: num_sweeps (1-1000) \n", + "- Constant parameter: num_reads (resulting in 1000 energies at each sweep step) \n", + "\n", + "**Goal**: find out how our performance metric behaves with varying num_reads without rerunning the instances from scratch on Simulated Annealing Sampler. \n", + "\n", + "Original format: `dimod.SampleSet` objects (D-Wave Ocean SDK format)\n", + "Example: instance = 0, num_sweeps = 10 contains data formatted as dimod.SampleSet which contains\n", + "1000 energies due to 1000 constant reads over the varying num_sweeps parameter \n", + "\n", + "We are concerned with energies. Hence, we converted the large SampleSet data to `results/all_raw_runs.pkl` to contain 1000 energies per sweep (1-1000) for an instance (0-19) to reduce extensive file size\n", + "\n", + "These Simulated Annealing runs were originally executed using `dwave-neal` on the [QuboNotebooks Repository](https://github.com/JuliaQUBO/QUBONotebooks/blob/main/notebooks_py/5-Benchmarking_python.ipynb)." + ] + }, + { + "cell_type": "markdown", + "id": "32ee9881", + "metadata": {}, + "source": [ + "### Bootstrapping\n", + "\n", + "We are interested in comparing the execution of the algorithm as the schedule step (number of sweeps) varies for different numbers of reads. However, the raw data we have only contains runs with 1000 reads at each schedule step. Bootstrapping can show us what the data was expected to look like had we performed SA with, say, 1, 10, and 100 reads at each sweep.\n", + "\n", + "**Note:** The original data and the bootstrapped data vary in one key aspect. From the original data, we are able to draw absolute values like the minimum and average of the energy reads (1000 in our case). However, the bootstrapping process will give us distributions for these metrics, meaning the \"minimum\" and \"average\" energy values for the other numbers of reads are not absolute. Rather, they are expected values according to a distribution and have associated confidence intervals." + ] + }, + { + "cell_type": "markdown", + "id": "744ea98a", + "metadata": {}, + "source": [ + "In the next cells, we will:\n", + "- Load the full raw data for each instance (the 1000 energy reads at each sweep);\n", + "- Compute the performance ratio using the SB framework;\n", + "- Perform Bootstrapping to infer information about the performance ratio for different numbers of reads." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a71fbffa", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pickle\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "\n", + "current_path = os.getcwd()\n", + "pickle_path = os.path.join(current_path, 'results/')\n", + "\n", + "def load_raw_data(instance_id) -> pd.DataFrame:\n", + " \"\"\"\n", + " Convert energy sampleset raw data to the format expected by the Stochastic Benchmark Framework\n", + "\n", + " Args:\n", + " instance_id (int): The instance ID to load the raw data for\n", + "\n", + " Returns:\n", + " pd.DataFrame: A DataFrame containing the raw data for the given instance\n", + " \"\"\"\n", + " packed_path = os.path.join(pickle_path, \"all_raw_runs.pkl\")\n", + " with open(packed_path, \"rb\") as f:\n", + " all_raw_runs = pickle.load(f)\n", + "\n", + " sweeps_dict = all_raw_runs[instance_id]\n", + " rows = []\n", + "\n", + " for sweep, energies in sweeps_dict.items():\n", + " energies = np.array(energies)\n", + " n = len(energies)\n", + " rows.append(pd.DataFrame({\n", + " \"instance\": np.full(n, instance_id, dtype=int),\n", + " \"sweeps\": np.full(n, sweep, dtype=int),\n", + " \"energy\": energies,\n", + " \"resource\": np.ones(n, dtype=int),\n", + " }))\n", + "\n", + " return pd.concat(rows, ignore_index=True)\n" + ] + }, + { + "cell_type": "markdown", + "id": "a100b8d6", + "metadata": {}, + "source": [ + "Convert energy sampleset raw data to the format expected by the Stochastic Benchmark Framework\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5c454c1d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Compiling data for instance 0\n", + "Compiling data for instance 1\n", + "Compiling data for instance 2\n", + "Compiling data for instance 3\n", + "Compiling data for instance 4\n", + "Compiling data for instance 5\n", + "Compiling data for instance 6\n", + "Compiling data for instance 7\n", + "Compiling data for instance 8\n", + "Compiling data for instance 9\n", + "Compiling data for instance 10\n", + "Compiling data for instance 11\n", + "Compiling data for instance 12\n", + "Compiling data for instance 13\n", + "Compiling data for instance 14\n", + "Compiling data for instance 15\n", + "Compiling data for instance 16\n", + "Compiling data for instance 17\n", + "Compiling data for instance 18\n", + "Compiling data for instance 19\n", + "converted data for 20 instances saved to ./granular_data/\n" + ] + } + ], + "source": [ + "\n", + "results_path = os.path.join(current_path, 'results/')\n", + "granular_data_path = os.path.join(current_path, 'granular_data/')\n", + "\n", + "if not os.path.exists(granular_data_path):\n", + " os.makedirs(granular_data_path)\n", + "\n", + "for instance_id in range(20):\n", + "\n", + " print(f\"Compiling data for instance {instance_id}\")\n", + "\n", + " filename = os.path.join(granular_data_path, f'granular_data_{instance_id}.pkl')\n", + " \n", + " raw_data_df = load_raw_data(instance_id)\n", + " pickle.dump(raw_data_df, open(filename, 'wb'))\n", + "print(f\"converted data for 20 instances saved to ./granular_data/\") " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "be54d49c", + "metadata": {}, + "outputs": [], + "source": [ + "def load_granular_data(instance_id) -> pd.DataFrame:\n", + " \"\"\"\n", + " Load the granular data, which already is in the format expected by the Stochastic Benchmark Framework, for a given instance\n", + "\n", + " Args:\n", + " instance_id (int): The instance ID to load the granular data for\n", + "\n", + " Returns:\n", + " pd.DataFrame: A DataFrame containing the granular data for the given instance\n", + " \"\"\"\n", + " granular_data_path = os.path.join(current_path, 'granular_data/')\n", + " filename = os.path.join(granular_data_path, f'granular_data_{instance_id}.pkl')\n", + " return pickle.load(open(filename, 'rb'))" + ] + }, + { + "cell_type": "markdown", + "id": "edafa5e2", + "metadata": {}, + "source": [ + "### Performance Metric\n", + "\n", + "We are interested in the \"performance ratio\" metric. In this particular problem, it is calculated as follows:\n", + "\n", + "- First, we sample a subset from the input space and calculate the associated energies. Specifically, we use 1000 random bitstrings in this case.\n", + "- The best (minimum) energy found across the random sample is denoted as `minimum`, while the mean energy across the random sampling is denoted as `random`.\n", + "- The performance ratio is calculated across an increasing number of sweeps of simulated annealing, where `found` is the best energy found at the current moment in the algorithm's execution.\n", + "\n", + "$$\n", + "performance\\space ratio = \\frac{found - random}{minimum - random}\n", + "$$\n", + "\n", + "Even though it is (very) unlikely that we found the best solution during the random sampling, this metric is useful because it gives us a general idea of how good our currently found solution is.\n", + "\n", + "In the following cell we compute the **baselines** for evaluating the Performace ratio during bootstrapping." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a3ba1cea", + "metadata": {}, + "outputs": [], + "source": [ + "import dimod\n", + "\n", + "num_instances = 20\n", + "num_reads = 1000\n", + "N = 100 # number of variables\n", + "\n", + "def random_energy_for_instance(inst, num_reads=1000):\n", + " \"\"\"\n", + " Compute the random energy for a given instance\n", + "\n", + " Args:\n", + " inst (int): The instance ID\n", + " num_reads (int): The number of reads\n", + "\n", + " Returns:\n", + " float: The random energy\n", + " \"\"\"\n", + " np.random.seed(inst) # seed by instance id for reproducibility\n", + " J = np.random.rand(N, N)\n", + " J = np.triu(J, 1) \n", + " h = np.random.rand(N)\n", + " model_random = dimod.BinaryQuadraticModel.from_ising(h, J, offset=0.0)\n", + "\n", + " rs = dimod.RandomSampler().sample(model_random, num_reads=num_reads)\n", + " energies = np.asarray(rs.data_vectors[\"energy\"])\n", + " return float(energies.mean())\n", + "\n", + "instance_baselines = {}\n", + "for inst in range(num_instances):\n", + " granular = load_granular_data(inst)\n", + "\n", + " # Global best SA energy across all sweeps and reads for this instance\n", + " best_value = float(granular[\"energy\"].min())\n", + "\n", + " # Random baseline: mean random energy from RandomSampler on this instance's random Ising model\n", + " random_value = random_energy_for_instance(inst, num_reads=num_reads)\n", + "\n", + " instance_baselines[inst] = {\n", + " \"best_value\": best_value,\n", + " \"random_value\": random_value,\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b85b6e77", + "metadata": {}, + "outputs": [], + "source": [ + "def get_shared_args(instance_id):\n", + " \"\"\"\n", + " Get the shared arguments for the performance ratio as expected by the Stochastic Benchmark Framework\n", + "\n", + " Args:\n", + " instance_id (int): The instance ID\n", + "\n", + " Returns:\n", + " dict: The shared arguments\n", + " \"\"\"\n", + " default_confidence_level = 68\n", + " baseline = instance_baselines[instance_id]\n", + " return {\n", + " \"response_col\": \"energy\",\n", + " \"resource_col\": \"resource\",\n", + " \"random_value\": baseline[\"random_value\"],\n", + " \"best_value\": baseline[\"best_value\"],\n", + " \"confidence_level\": default_confidence_level,\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "46dd67ce", + "metadata": {}, + "source": [ + "The following step **performs Bootstrapping** on the various resample sizes and **computes the Performance Ratio** simultaneously." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b9071cd2", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 38%|███▊ | 124/325 [00:02<00:03, 52.00it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 128.28it/s]\n", + "/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 128.57it/s]\n", + " 42%|████▏ | 136/325 [00:02<00:03, 53.02it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 118.31it/s]\n", + " 99%|█████████▉| 322/325 [00:06<00:00, 54.21it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 52.79it/s]\n", + " 98%|█████████▊| 320/325 [00:02<00:00, 117.72it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 125.57it/s]\n", + " 39%|███▉ | 126/325 [00:02<00:04, 47.40it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.27it/s]\n", + " 42%|████▏ | 138/325 [00:02<00:03, 50.31it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 115.15it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 56.43it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 52.52it/s]\n", + " 98%|█████████▊| 320/325 [00:02<00:00, 134.90it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 134.94it/s]\n", + "/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 133.09it/s]\n", + " 42%|████▏ | 138/325 [00:02<00:03, 53.95it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 122.20it/s]\n", + "100%|█████████▉| 324/325 [00:05<00:00, 54.82it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 54.11it/s]\n", + " 94%|█████████▎| 304/325 [00:02<00:00, 132.29it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 135.68it/s]\n", + " 39%|███▉ | 126/325 [00:02<00:03, 52.87it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 129.56it/s]\n", + " 42%|████▏ | 138/325 [00:02<00:03, 54.35it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 119.81it/s]\n", + "100%|█████████▉| 324/325 [00:05<00:00, 56.00it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 53.97it/s]\n", + " 90%|█████████ | 293/325 [00:02<00:00, 123.57it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 129.54it/s]\n", + " 39%|███▉ | 126/325 [00:02<00:03, 51.99it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 129.45it/s]\n", + " 42%|████▏ | 138/325 [00:02<00:03, 53.16it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 119.49it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 54.53it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 53.36it/s]\n", + " 37%|███▋ | 120/325 [00:02<00:03, 52.02it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 135.68it/s]\n", + " 99%|█████████▉| 322/325 [00:02<00:00, 137.39it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 132.67it/s]\n", + " 41%|████ | 132/325 [00:02<00:03, 53.16it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.01it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 52.36it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 53.03it/s]\n", + " 96%|█████████▌| 312/325 [00:02<00:00, 125.68it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.53it/s]\n", + "100%|██████████| 325/325 [00:02<00:00, 126.71it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 122.32it/s]\n", + "100%|██████████| 325/325 [00:02<00:00, 120.26it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 112.31it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 54.19it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.21it/s]\n", + " 89%|████████▉ | 290/325 [00:02<00:00, 114.92it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.29it/s]\n", + " 38%|███▊ | 123/325 [00:02<00:04, 47.96it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.48it/s]\n", + " 41%|████ | 134/325 [00:02<00:03, 49.61it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 113.58it/s]\n", + " 98%|█████████▊| 320/325 [00:06<00:00, 50.74it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 50.73it/s]\n", + " 96%|█████████▋| 313/325 [00:02<00:00, 127.55it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.17it/s]\n", + " 39%|███▉ | 126/325 [00:02<00:03, 50.54it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.37it/s]\n", + " 99%|█████████▉| 323/325 [00:02<00:00, 117.76it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 112.33it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 54.65it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.99it/s]\n", + " 89%|████████▉ | 289/325 [00:02<00:00, 117.06it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.20it/s]\n", + "/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 122.96it/s]\n", + " 42%|████▏ | 138/325 [00:02<00:03, 51.43it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 114.08it/s]\n", + "100%|█████████▉| 324/325 [00:06<00:00, 55.10it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.99it/s]\n", + " 38%|███▊ | 123/325 [00:02<00:03, 50.59it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 126.34it/s]\n", + " 94%|█████████▎| 304/325 [00:02<00:00, 121.40it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 125.25it/s]\n", + " 42%|████▏ | 135/325 [00:02<00:03, 51.46it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 118.47it/s]\n", + " 99%|█████████▉| 321/325 [00:06<00:00, 54.46it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 52.01it/s]\n", + " 37%|███▋ | 119/325 [00:02<00:04, 51.16it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 126.92it/s]\n", + " 38%|███▊ | 125/325 [00:02<00:04, 48.92it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.41it/s]\n", + " 40%|████ | 131/325 [00:02<00:03, 50.25it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 117.33it/s]\n", + " 99%|█████████▉| 323/325 [00:06<00:00, 53.21it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 52.37it/s]\n", + " 97%|█████████▋| 316/325 [00:02<00:00, 126.08it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.75it/s]\n", + " 87%|████████▋ | 284/325 [00:02<00:00, 114.15it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 121.57it/s]\n", + " 43%|████▎ | 139/325 [00:02<00:03, 51.85it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 111.68it/s]\n", + "100%|██████████| 325/325 [00:06<00:00, 55.07it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.75it/s]\n", + " 37%|███▋ | 119/325 [00:02<00:04, 49.87it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 126.81it/s]\n", + " 90%|█████████ | 294/325 [00:02<00:00, 118.50it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 125.31it/s]\n", + " 42%|████▏ | 137/325 [00:02<00:03, 52.26it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 115.45it/s]\n", + " 99%|█████████▉| 323/325 [00:06<00:00, 54.17it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.92it/s]\n", + "100%|██████████| 325/325 [00:02<00:00, 136.34it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 127.48it/s]\n", + " 38%|███▊ | 123/325 [00:02<00:03, 51.15it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 127.16it/s]\n", + "100%|█████████▉| 324/325 [00:02<00:00, 118.22it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 115.65it/s]\n", + " 99%|█████████▉| 321/325 [00:06<00:00, 55.13it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.78it/s]\n", + " 87%|████████▋ | 283/325 [00:02<00:00, 116.86it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.25it/s]\n", + "/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 123.32it/s]\n", + " 99%|█████████▉| 321/325 [00:02<00:00, 122.03it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 111.69it/s]\n", + " 99%|█████████▉| 322/325 [00:06<00:00, 50.55it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 50.69it/s]\n", + " 88%|████████▊ | 285/325 [00:02<00:00, 111.55it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 120.52it/s]\n", + " 91%|█████████▏| 297/325 [00:02<00:00, 113.67it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 119.06it/s]\n", + " 42%|████▏ | 136/325 [00:02<00:03, 50.44it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 110.50it/s]\n", + " 99%|█████████▉| 322/325 [00:06<00:00, 54.53it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 50.62it/s]\n", + " 36%|███▋ | 118/325 [00:02<00:04, 47.58it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 125.71it/s]\n", + " 90%|████████▉ | 291/325 [00:02<00:00, 112.25it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.42it/s]\n", + " 41%|████ | 134/325 [00:02<00:03, 48.40it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 112.80it/s]\n", + " 98%|█████████▊| 320/325 [00:06<00:00, 53.95it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.00it/s]\n", + "100%|█████████▉| 324/325 [00:02<00:00, 127.11it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 125.92it/s]\n", + "/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 126.74it/s]\n", + " 42%|████▏ | 135/325 [00:02<00:03, 51.93it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 115.86it/s]\n", + " 99%|█████████▉| 321/325 [00:06<00:00, 55.27it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 52.43it/s]\n", + " 96%|█████████▌| 312/325 [00:02<00:00, 122.56it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 124.97it/s]\n", + "100%|██████████| 325/325 [00:02<00:00, 124.23it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 121.10it/s]\n", + " 42%|████▏ | 136/325 [00:02<00:03, 51.20it/s]]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:02<00:00, 112.85it/s]\n", + " 99%|█████████▉| 322/325 [00:06<00:00, 55.68it/s]/home/jvpcms/purdue-internship/stochastic-benchmark-sapr/.venv/lib/python3.13/site-packages/tqdm/std.py:917: FutureWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " return getattr(df, df_function)(wrapper, **kwargs)\n", + "100%|██████████| 325/325 [00:06<00:00, 51.76it/s]\n" + ] + } + ], + "source": [ + "import sys\n", + "sys.path.append(\"../../src\")\n", + "\n", + "import bootstrap\n", + "import success_metrics\n", + "\n", + "checkpoints_path = \"checkpoints\"\n", + "override_bootstrap = False\n", + "\n", + "if not os.path.exists(checkpoints_path):\n", + " os.makedirs(checkpoints_path)\n", + "\n", + "for instance_id in range(20):\n", + " file_path = os.path.join(checkpoints_path, f\"bootstrapped_results_inst={instance_id}.pkl\")\n", + " if os.path.exists(file_path) and not override_bootstrap:\n", + " continue\n", + "\n", + " shared_args_for_perf_ratio = get_shared_args(instance_id)\n", + "\n", + " metric_args = {\n", + " \"Response\": {\"opt_sense\": -1}\n", + " }\n", + "\n", + " def update_rule(bs_params, df):\n", + " return None\n", + "\n", + " bsParams = bootstrap.BootstrapParameters(\n", + " shared_args=shared_args_for_perf_ratio,\n", + " metric_args=metric_args,\n", + " success_metrics=[success_metrics.Response, success_metrics.PerfRatio],\n", + " bootstrap_iterations=1000,\n", + " update_rule=update_rule\n", + " )\n", + "\n", + " boots_range = [1, 10, 100, 1000]\n", + " bsParams_iter = bootstrap.BSParams_range_iter()(bsParams, boots_range)\n", + "\n", + " granular_data_df = load_granular_data(instance_id)\n", + " bs_df = bootstrap.Bootstrap(\n", + " granular_data_df,\n", + " group_on=[\"instance\", \"sweeps\"],\n", + " bs_params_list=bsParams_iter\n", + " )\n", + "\n", + " # Add a column for the number of reads identical to boots column\n", + " bs_df[\"reads\"] = bs_df[\"boots\"]\n", + "\n", + " # save bs_df as pickle\n", + " pickle.dump(bs_df, open(file_path, \"wb\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e0217565", + "metadata": {}, + "outputs": [], + "source": [ + "import stochastic_benchmark as SB\n", + "\n", + "here = os.getcwd()\n", + "parameter_names = [\n", + " \"sweeps\",\n", + " \"reads\"\n", + "] # reads is a varying parameter alongside sweeps due to bootrapping \n", + "\n", + "instance_cols = [\n", + " \"instance\"\n", + "] # indicates how instances should be grouped, default is ['instance']\n", + "\n", + "## Response information\n", + "response_key = \"PerfRatio\" # Column with the response\n", + "response_dir = 1 # whether we want to maximize (1) or minimize (-1), default is 1\n", + "\n", + "## Optimizations informations\n", + "recover = True # Whether we want to read dataframes when available, default is True\n", + "reduce_mem = True # Whether we want to segment bootstrapping and interpolation to reduce memory usage, default is True\n", + "smooth = True # Whether virtual best should be monontonized, default is True\n", + "\n", + "sb = SB.stochastic_benchmark(\n", + " parameter_names=parameter_names,\n", + " here=here,\n", + " instance_cols=instance_cols,\n", + " response_key=response_key,\n", + " response_dir=response_dir,\n", + " smooth=smooth,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d74b6ac1", + "metadata": {}, + "source": [ + "### Resource\n", + "\n", + "In this analysis, we examine how the performance ratio evolves as the number of sweeps and reads increases during algorithm execution.\n", + "\n", + "The number of sweeps times the number of reads serves as our resource metric. This corresponds to the total time spent in a SA run. The objective is to achieve a high performance ratio while minimizing that product (i.e., using fewer computational resources)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c88612ee", + "metadata": {}, + "outputs": [], + "source": [ + "# Load Bootstrap data.\n", + "# The data is already boostrapped, but needs to be loaded into memory\n", + "\n", + "shared_args = {\n", + " \"response_col\": \"PerfRatio\",\n", + " \"resource_col\": \"resource\",\n", + " \"response_dir\": 1,\n", + " \"confidence_level\": 68,\n", + "}\n", + "boots_range = [1, 10, 100, 1000]\n", + "bsParams = bootstrap.BootstrapParameters(\n", + " shared_args=shared_args, update_rule=lambda df: None\n", + ")\n", + "bs_iter_class = bootstrap.BSParams_range_iter()\n", + "bsParams_iter = bs_iter_class(bsParams, boots_range)\n", + "sb.run_Bootstrap(bsParams_iter)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "3b915ee6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1300/1300 [00:02<00:00, 503.02it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 542.41it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 533.72it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 523.28it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 555.30it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 528.68it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 531.43it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 507.57it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 549.38it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 504.18it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 526.89it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 521.87it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 543.25it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 510.20it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 534.61it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 518.86it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 543.01it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 527.63it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 542.14it/s]\n", + "100%|██████████| 1300/1300 [00:02<00:00, 544.82it/s]\n" + ] + } + ], + "source": [ + "import interpolate\n", + "\n", + "def resource_fcn(df):\n", + " \"\"\"\n", + " This is the function that will be used to interpolate the performance ratio across the various resources\n", + "\n", + " Args:\n", + " df (pd.DataFrame): The DataFrame to interpolate the performance ratio across\n", + "\n", + " Returns:\n", + " pd.DataFrame: The interpolated performance ratio\n", + " \"\"\"\n", + " return df[\"reads\"] * df[\"sweeps\"]\n", + "\n", + "\n", + "iParams = interpolate.InterpolationParameters(resource_fcn, parameters=parameter_names)\n", + "sb.run_Interpolate(iParams)" + ] + }, + { + "cell_type": "markdown", + "id": "7b306e59", + "metadata": {}, + "source": [ + "### Initial Investigation\n", + "\n", + "For instance 0 of the problem, let's investigate where the performance ratio reaches the extreme values, 0 and 1, across the various numbers of sweeps." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "cf98939a", + "metadata": {}, + "outputs": [], + "source": [ + "def filter_df_by_reads(df, reads):\n", + " \"\"\"\n", + " Filter the DataFrame by the number of reads\n", + "\n", + " Args:\n", + " df (pd.DataFrame): The DataFrame to filter\n", + " reads (int): The number of reads to filter by\n", + "\n", + " Returns:\n", + " pd.DataFrame: The filtered DataFrame\n", + " \"\"\"\n", + " return df[df[\"reads\"] == reads]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "774ce811", + "metadata": {}, + "outputs": [], + "source": [ + "def find_sweep_with_min_perf_ratio(df) -> tuple[int, float]:\n", + " \"\"\"\n", + " Find the sweep with the minimum performance ratio\n", + "\n", + " Args:\n", + " df (pd.DataFrame): The DataFrame to find the minimum performance ratio in\n", + "\n", + " Returns:\n", + " tuple[int, float]: The sweep with the minimum performance ratio and the minimum performance ratio\n", + " \"\"\"\n", + " min_perf_ratio = df[\"Key=PerfRatio\"].min()\n", + " return df[df[\"Key=PerfRatio\"] == min_perf_ratio][\"sweeps\"].values[0], min_perf_ratio\n", + "\n", + "def find_sweep_with_max_perf_ratio(df) -> tuple[int, float]:\n", + " \"\"\"\n", + " Find the sweep with the maximum performance ratio\n", + "\n", + " Args:\n", + " df (pd.DataFrame): The DataFrame to find the maximum performance ratio in\n", + "\n", + " Returns:\n", + " tuple[int, float]: The sweep with the maximum performance ratio and the maximum performance ratio\n", + " \"\"\"\n", + " max_perf_ratio = df[\"Key=PerfRatio\"].max()\n", + " return df[df[\"Key=PerfRatio\"] == max_perf_ratio][\"sweeps\"].values[0], max_perf_ratio" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ea293d80", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reads |Min Perf Ratio |At |Max Perf Ratio |At \n", + "--------------------|--------------------|--------------------|--------------------|--------------------\n", + "1000 |0.837673998200984 |1 |1.0 |15 \n", + "--------------------|--------------------|--------------------|--------------------|--------------------\n", + "100 |0.8026782300861162 |1 |1.0 |97 \n", + "--------------------|--------------------|--------------------|--------------------|--------------------\n", + "10 |0.7458951433579873 |1 |0.9999248467318831 |820 \n", + "--------------------|--------------------|--------------------|--------------------|--------------------\n", + "1 |0.6553364720676763 |1 |0.9779563513702477 |1000 \n", + "--------------------|--------------------|--------------------|--------------------|--------------------\n" + ] + } + ], + "source": [ + "bootstrapped_data_path = os.path.join(checkpoints_path, f'bootstrapped_results_inst=0.pkl')\n", + "bootstrapped_data = pickle.load(open(bootstrapped_data_path, 'rb'))\n", + "\n", + "print(f\"{'Reads':<20}|{'Min Perf Ratio':<20}|{'At':<20}|{'Max Perf Ratio':<20}|{'At':<20}\")\n", + "print(\"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20)\n", + "\n", + "for read_size in [1000, 100, 10, 1]:\n", + " df = filter_df_by_reads(bootstrapped_data, read_size)\n", + " min_perf_ratio_sweep, min_perf_ratio = find_sweep_with_min_perf_ratio(df)\n", + " max_perf_ratio_sweep, max_perf_ratio = find_sweep_with_max_perf_ratio(df)\n", + " print(f\"{df['reads'].values[0]:<20}|{min_perf_ratio:<20}|{min_perf_ratio_sweep:<20}|{max_perf_ratio:<20}|{max_perf_ratio_sweep:<20}\")\n", + " print(\"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20 + \"|\" + \"-\"*20)" + ] + }, + { + "cell_type": "markdown", + "id": "5363d6b7", + "metadata": {}, + "source": [ + "This first analysis indicates that choosing a large number of reads is a good strategy given a certain amount of finite resource. However, this still doesn't paint the entire picture.\n", + "\n", + "- How to \"distribute\" the parameters given the resources?\n", + "- How close to the virtual best does a certain amount of available resources get us?\n", + "\n", + "These questions will be answered by the complete framework evaluation." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7c3f6ce1", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/654 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = sb.plots.plot_performance()\n", + "fig.savefig(\"performance.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "298d2b5a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:00<00:00, 1868.18it/s]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAocAAAHgCAYAAADXDcedAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnXl8E2X+x98zadP0vg9aWwqIQLnlkqsgVqsoCyorIioo4nqAi/xYRUVABM8FEdFFZYHF9cAD0VXkEEUUEJBT5D6LQAul950m8/sjybSTpC1tQ2mT5+0rL8k8M888M007n3xPSVEUBYFAIBAIBAKBAJCv9AIEAoFAIBAIBI0HIQ4FAoFAIBAIBCpCHAoEAoFAIBAIVIQ4FAgEAoFAIBCoCHEoEAgEAoFAIFAR4lAgEAgEAoGgjmzcuJEhQ4YQGxuLJEmsXLmyxmM2bNjAtddei4+PD1dffTVLly512Oftt98mMTERg8FAr1692LZtm+sXXwVCHAoEAoFAIBDUkcLCQjp37szbb799SfufOHGCW2+9leuvv57du3czceJEHnroIdasWaPus3z5ciZNmsT06dPZuXMnnTt3JjU1lfPnz1+uy9AgiTqHAoFAIBAIBPVHkiS+/PJLhg0bVuU+Tz/9NN9++y379u1Tt919993k5OSwevVqAHr16kWPHj1YsGABAGazmfj4eCZMmMCUKVMu6zWAsBwKBAKBQCAQaCgtLSUvL0/zKi0tdcncW7ZsISUlRbMtNTWVLVu2AFBWVsaOHTs0+8iyTEpKirrP5carQc7SiDGbzZw9e5bAwEAkSbrSyxEIBAKBwC1QFIX8/HxiY2OR5YazRZWUlFBWVlavOV5++WVeeeUVzbbnnnuOWbNm1WtegPT0dKKjozXboqOjycvLo7i4mOzsbEwmk9N9Dh48WO/zXwoeLw7Pnj1LfHz8lV6GQCAQCARuyenTp7nqqqsa5FwlJSVERcSRX5jl8rn//e9/M3XqVAwGg8vnbmx4vDgMDAwELB/eoKCgK7wagUAgEAjcg7y8POLj49XnbENQVlZGfmEWT/39Q3x8/Fw2b2lpEa+9OYqysrJ6i8OYmBgyMjI02zIyMggKCsLX1xedTodOp3O6T0xMTL3Ofal4vDi0uZKDgoKEOBQIBAKBwMVciZAtHx8/DD7+DX7eS6F3796sWrVKs23dunX07t0bAL1eT7du3Vi/fr2a2GI2m1m/fj3jx49vkDV6vDgUCAQCgUDgXiiShOJCUVrdXAUFBRw9elR9f+LECXbv3k1YWBgJCQk888wznDlzhmXLlgHwyCOPsGDBAp566ikefPBBfvjhBz799FO+/fZbdY5JkyYxevRounfvTs+ePZk3bx6FhYU88MADLrum6hDiUCAQCAQCgVuhSKC4MAdGqUZn/vbbb1x//fXq+0mTJgEwevRoli5dyrlz50hLS1PHW7RowbfffsuTTz7Jm2++yVVXXcWiRYtITU1V9xkxYgQXLlxg2rRppKen06VLF1avXu2QpHK58Pg6h3l5eQQHB5Obm1ulW9lkMmE0Ght4ZQKBoDGj1+sbNANTIGhqXMrz9XKd87kpKzEYXOdWLikpZPYrwxr0Wq4kwnJYDYqikJ6eTk5OzpVeikAgaGTIskyLFi3Q6/VXeikCgcAOsyxhll3nVnblXE0BIQ6rwSYMo6Ki8PPzE3UQBQIBUFEf9dy5cyQkJIi/DQKBwK0Q4rAKTCaTKgzDw8Ov9HIEAkEjIzIykrNnz1JeXo63t/eVXo5AIKhEQyakuCNCHFaBLcbQz891dZIEAoH7YHMnm0wmIQ4FgsaGLKG40hXsYW5lEU1dA8JdJBAInCH+NggEAndFWA4FAoFAIBC4FWbZ8nLlfJ6Eh12uazCazBSXmRrsZTSZXbr+GTNm0KVLF5fOWVskSWLlypVXdA0CgUAgEAgcEZbDOrBy1xm+2Plng53vzmuv4q/d4y9p3yFDhmA0Glm9erXD2M8//0xycjJ79uxhwoQJNc6VmJjIxIkTmThxYm2XXGsqu+h0Oh2xsbEMHz6cl19+GR8fH5ecoyGvRyAQCARXDsXFMYcujV9sAjSY5XDjxo0MGTKE2NhYp1YjRVGYNm0azZo1w9fXl5SUFI4cOaLZJysri1GjRhEUFERISAhjx46loKBAs8/evXvp378/BoOB+Ph4Xnvttct9aY2KsWPHsm7dOv7801G8LlmyhO7du9OpU6dqM7DLysou5xKrZMmSJZw7d44TJ07wzjvv8MEHHzBr1qwrshaBQCAQNF3MkuzylyfRYFdbWFhI586defvtt52Ov/baa8yfP5+FCxeydetW/P39SU1NpaSkRN1n1KhR/PHHH6xbt45vvvmGjRs38vDDD6vjeXl53HTTTTRv3pwdO3bw+uuvM2PGDN57773Lfn2Nhdtuu43IyEiWLl2q2V5QUMBnn33G2LFjHdzKY8aMYdiwYcyePZvY2FjatGnDwIEDOXXqFE8++SSSJKmWPWcu6Xnz5pGYmKi+3759OzfeeCMREREEBwczYMAAdu7cWePaQ0JCiImJIT4+nttuu42hQ4c6HPfVV19x7bXXYjAYaNmyJS+88ALl5eWA5QvGjBkzSEhIwMfHh9jYWJ544gmAKq9HIBAIBAKBlgYTh7fccguzZs3i9ttvdxhTFIV58+YxdepUhg4dSqdOnVi2bBlnz55VLYwHDhxg9erVLFq0iF69etGvXz/eeustPvnkE86ePQvAhx9+SFlZGYsXL6Z9+/bcfffdPPHEE8ydO7ehLvOK4+Xlxf3338/SpUup3Bnxs88+w2QyMXLkSKfHrV+/nkOHDqnCe8WKFVx11VXMnDmTc+fOce7cuUteQ35+PqNHj+aXX37h119/pXXr1gwePJj8/PxLnuPw4cP88MMP9OrVS932888/c//99/P3v/+d/fv38+6777J06VJmz54NwBdffMEbb7zBu+++y5EjR1i5ciUdO3YEqNf1CAQCgaCJIV2GlwfRKOykJ06cID09nZSUFHVbcHAwvXr1YsuWLQBs2bKFkJAQunfvru6TkpKCLMts3bpV3Sc5OVnTzio1NZVDhw6RnZ3dQFdz5XnwwQc5duwYP/30k7ptyZIl3HnnnQQHBzs9xt/fn0WLFtG+fXvat29PWFgYOp2OwMBAYmJiiImJueTzDxo0iHvvvZe2bdvSrl073nvvPYqKijTrccbIkSMJCAjAYDDQpk0b2rdvzzPPPKOOv/DCC0yZMoXRo0fTsmVLbrzxRl588UXeffddANLS0oiJiSElJYWEhAR69uzJuHHjAOp1PQKBoOmzcdlMfn11CJu/XnSllyIQNHoaRUJKeno6ANHR0Zrt0dHR6lh6ejpRUVGacS8vL8LCwjT7tGjRwmEO21hoaGiVa8jLy6vfRTQi2rZtS58+fVi8eDEDBw7k6NGj/Pzzz8ycObPKYzp27OiyHrEZGRlMnTqVDRs2cP78eUwmE0VFRaSlpVV73BtvvEFKSgomk4mjR48yadIk7rvvPj755BMA9uzZw6ZNm1RLIVgKEJeUlFBUVMRf//pX5s2bR8uWLbn55psZPHgwQ4YMwcurUXzMBQJBA/HLD8f5Y+9Z9D5e+Ph4UXZhLWOK56AoIO3cyGdpOTS/9q94e8mERfjTvGXYlV6ywMWYdRJmnQt7K7twrqaAeGpaiY/XZgO//vrr3HDDDZhMJi5evKgZM5lMmExmZFnGZDJp3LeyLCHLsrrNZFeGxtvbC5PJhE7WYbTGytnQ6WRQQJIlzGYzZrNljoLCAvLy8vD396ekpAQvLy+HRJyQkBCKiooIDAwkKyuLESNG8MwzzzBz5kzee+89WrZsSe/evSkoKKCoqEi9Lp1Oh6Io+Pj4YDQaNSLZbDZjMpnIz88nMDCQ7OxsSkpKKC8v5+LFixgMBry8vCguLkZRFPU+3XPPPWRnZ/Pmm28SERFBUFAQ/fr1Izs7W3Mvi4uLMZvNqrvZ39+f0NBQfHx8aNmyJc899xyjR4/m//7v/2jZsiUFBQU89dRT3HfffRQUFODn50dubi5giWn18/Nj7969fP/992zYsIFHH32Ul19+ma+//hpvb28URVGFqk6nc7iHoaGhFBYWEhgY6PAzt3XK8fLyorS0lNLSUnXMy8uLwMBAioqK0Ov1Du7z4OBgiouL1XtoNld8Jnx9fdHpdACUl5drYmxlWSY0NJT8/Hx8fX3Va7URFBREaWkpfn5+5OXlYTKZ1DEfHx/0ej1msxlFUSgqKlLHJEkiLCyM/Px8/Pz8yMnJ0cwbEBBAeXk5BoOBwsJCtVsQWLqC+Pr6UlZWhizLFBYWOr2HAQEBZGVlacb8/f1RFAUvLy9KSko0iU9eXl4EBARQUlKCt7e3wz20/3xX/p3z9fVFlmVkWcZoNGruoU6nIzg4mIKCAgwGg8OXwKCgIEpKSggICCA3N1dzDw0GA97e3tbfRTPFxcWae+jn50dJSQmFhYV8+eWXmnn79+9Peno6SUlJ/PLLL5rPU3x8PG3btiUjIwNvb2927NihOfauu+5i06ZN9O7dm88//1wz1rNnT4qKioiLi2Pfvn2cOXNGHYuKiqJnz54cOXKEiIgINm3apDl26NCh/PbbbyQnJ7N8+XLN57BTp054e3sTGBhIWloax48f19yjm266ie3bt9OqVSt++OEHzbypqans27eP5ORkVq5cqblPbdq0ISIiArPZTG5uLvv371fHfHx8uOOOO9i4cSOdO3dm1apVmnkHDhxIWloanTt3ZsOGDRrvT/PmzWnVqpW6bdeuXZpjc8/Fs2PrSXQ6L4xGI6kJWyAQJAnKFZnyE7+weHMcJpOJkAi4tp/ldzAmJoZrr72WkydPEhwcrHqubNx+++1s27aN5ORkPv74Y81Y165dAcvvwLFjxzh16pQ6FhoaysCBA9mzZw8JCQls2LBBc+zgwYPZs2cPycnJrFixQvP3JSkpieDgYGRZJjMzk0OHDqljvr6+DBs2jI0bN9KhQwfWrFmjmXfQoEEcO3aMHj16sHbtWs3nv2XLliQkJJCfn4/RaGTv3r3qmCzLjBgxgo0bN9K9e3e++uorzbx9+/YlMzOT1q1bs23bNs6fP6+OxcXF0aFDB86cOaP5fWpoRPu8+tEoxKHNxZeRkUGzZs3U7RkZGWryQ0xMjOYDCJaHaVZWlnp8TEwMGRkZmn1s72tyI54+fZqgoCDNtjNnzqDT6Rwye3UniixCDvDy0jmdz5bwIMuOnnubGPD2rvr263Q6rLsR4B+grs3f3x/AaXmXwMBAwOJCffDBB3nuuedYs2YNH3/8MY8++ig+Pj74+Pjg5+enuS5JkvDy8sLb21tzrQaDQTNvaGgozZs358KFC4SFhanXuG/fPiRJUo/dtm0b77zzDoMHDwYs9/bixYv4+/tr5rc91G2u7sDAQIdx2zrCw8O59tpr+fPPP7n66qurvG8Aw4cPZ/jw4UyYMIG2bdty9uxZrr32WvWe2YRedfewumxub29vAgICHLbbtjk7tvI9rAofHx/153upa7K1bQsJCalyXqi4l5c6r+3e2P9O2LBZY22fkUud10ZV7eZs11/dPQwLq9rKo9frL9s9tG+lWVJSgsFgwN/f32ks71VXXQXATTfd5HS+iIgIAK655hqHseTkZIAqY4Qr72PPtddeC0BCQkKVx4wYMaLKeZs1a6aJ9bXRp0+fKtdkm3fYsGFVzgvQuXPnKo91Nq/teXDzzTc7nc/mGWrbtq1m+1uv/qR+RvV6b06VNgfLRwAvycyRwtbq3734hBhGjhzodJ2VE+0uZb2V12W7X5Wx3dfq7uEdd9xR5bwJCQnqz/dS12S7R7feeqvTOZs1a8bmrxcRm/4z3q360+cvD13SvLbP1w033OB03rCwMLfyyHkajUIctmjRgpiYGNavX6+Kwby8PLZu3cqjjz4KQO/evcnJyWHHjh1069YNgB9++AGz2az+wvXu3ZvnnnsOo9Go/sFft24dbdq0qfahDJaHYOUHYWXrQ1MkICBAtR7m5eUxZsyYWs+RmJjIxo0bufvuu/Hx8SEiIoKBAwdy4cIFXnvtNYYPH87q1av57rvvNPeudevWfPDBB3Tv3p28vDz+8Y9/OBUn9uTk5JCeno7ZbObIkSPMnDmTa665hnbt2gEwbdo0brvtNhISEhg+fDiyLLNnzx727dvHrFmzWLp0KSaTiV69euHn58d///tffH19ad68eZXXIxAI3A9jmdYrk1FW8YXyjYt3cy6/m/reu4ov+J7C5q8X0Wfn/2FWJOSdK9kMGoHYVBF1DutHgyWkFBQUsHv3bnbv3g1YklB2795NWloakiQxceJEZs2axddff83vv//O/fffT2xsrPpNtF27dtx8882MGzeObdu2sWnTJsaPH8/dd99NbGwsYHFn6vV6xo4dyx9//MHy5ct58803mTRpUkNdZqNi7NixZGdnk5qaqt6j2jBz5kxOnjxJq1atiIyMBCw/h3feeYe3336bzp07s23bNiZPnqw57t///jfZ2dlce+213HfffTzxxBMO8aLOeOCBB2jWrBlXXXUVI0eOpH379nz33XeqBSA1NZVvvvmGtWvX0qNHD6677jreeOMNVfyFhITw/vvv07dvXzp16sT333/P//73P9Va5Ox6BAKB+1FWqnVn6nUVru5zRe01Y15ejSIvs8HIuljEG7N+4N03fuG/72/j4s51mBWQJQWzIlGw/0fSTmSReb6A4qIrU/NWcOWRlMrBO5eRDRs2cP311ztsHz16tFp2Zfr06bz33nvk5OTQr18/3nnnHY3LJSsri/Hjx/O///0PWZa58847mT9/vsbFt3fvXh5//HG2b99OREQEEyZM4Omnn65yXXl5eQQHB5Obm+tgOTxx4gQtWrRwcJ199tvpRtshRSAQNAzV/Y0QXFleeOo70s9UxOg2C/2DaRHzAXj6z5nkFVckP/bo05wHH+/d4Gu8UvyZlsMH721T3/uW/cxEv/nq+3lFT1Cs7w+AwdebJ59zfG5fKlU9Xy8ntnNOeHUNPr6OISZ1pbS4kLeeTm3Qa7mSNJhbeeDAgVSnQyVJYubMmdVm1IaFhfHRRx9Ve55OnTrx888/13mdl8KwrnHc1qn2lri64uVhWVICgUBQVxRFwViqdSsbvConE2mTBD3NclhUoLUGFuv7c9K0nERdBp+UDlGFIYB/gGsqWFwJhFu5fjSKmMOmhrdOxtuzw1QEAoGgUVJWZsJsZ4gw6Cpl66MVhzpPE4eFjq5iL6tgPqfrqdnu5990xaGgfghxKBAIBAK3obiwDPt2Fr5y5VJOduJQ51nisLDAURyGSZasYqMSorl1/k1YHJplCbMLrX2unKspIMShQCAQCNyGokIj9iXp/GTnbmXZwx744MRyqBTjJ1nqKprQdtBq0pZDV7e887CPimd9ZRIIBAKBW1PkJMPWX1dRrL2yW1mWZRRzg+RkNhoKCko173VYrIbFih4Fbe3XphxzKKgfwnIoEAgEArehuMjoYOTxlyosh7JUqaOVTnKIT3R37C2H3lIOAFkEIUlae5FfExaHwq1cP4TlUCAQCARuQ1FhmYMLMFCusBxWFoc6nYyHaUOHbGW9YrEc5ijBDvs25ZhDQf0QlkOBQCAQuA1FdgkpChAoOc9WlmVJ7WHvKdhbDg2SpR5kruJYu68pxxyK3sr1Q4hDgUAgELgNxUVGzfsyWSJYch5zqNNJHhVzaDaZKS7W3h9fLOIwH0dx2JRjDhUdmF1YI1jxsPJ1wq0suGRmzJih9r6+nEiSxMqVKy/7ed577z3i4+ORZZl58+Zd9vNdCQYOHMjEiRMvef+TJ08iSZLa5lIgaGoUFZZpspXLZIkgKlkO5UqWQ51cbXMGd6O42OjgRve3isMCJ27lpmw5FNQPIQ7dkDFjxiBJEpIkodfrufrqq5k5cybl5eU1H1wNkydPZv369S5aZdVi89y5c9xyyy0uO48z8vLyGD9+PE8//TRnzpzh4Ycfvqznq4nExET1Z+bsNWbMmDrNu2LFCl588cVL3j8+Pp5z587RoUOHOp2vKoqKinjmmWdo1aoVBoOByMhIBgwYwFdffaXuk5iYWCeRXlsBLHBviuwsh+U6haBKbmW5suXQw9zKzmocBlhrHBbZlbHR6SR8DE3XuahIrn95Ek33Jy+olptvvpklS5ZQWlrKqlWrePzxx/H29uaZZ55x2LesrAy9vuZviAEBAZo+1peLmJiYy36OtLQ0jEYjt956K82aNXO6z6XeF1ewfft2TCYTAJs3b+bOO+/k0KFDag9PX19fzf5GoxFvb+8a5w0LC6vVOnQ63WW5/4888ghbt27lrbfeIikpiYsXL7J582YuXrzo8nMJPJtiO8uht65YM66JOdR5VikbZ91Rgqwxh8VOahxKHhZnJ6hAWA7dFB8fH2JiYmjevDmPPvooKSkpfP3114DFsjhs2DBmz55NbGwsbdq0AeD3339n0KBB+Pr6Eh4ezsMPP0xBQYE6pzNL36JFi2jXrh0Gg4G2bdvyzjvvaMb//PNPRo4cSVhYGP7+/nTv3p2tW7eydOlSXnjhBfbs2aNax5YuXQo4upVrWpftev75z3/SrFkzwsPDefzxxzEatRYEG0uXLqVjx44AtGzZEkmSOHnypHp9ixYtokWLFhgMBsAiJIcOHUpAQABBQUHcddddZGRkONyXxYsXk5CQQEBAAI899hgmk4nXXnuNmJgYoqKimD17dpU/r8jISGJiYoiJiVEFXVRUFDExMZSUlBASEsLy5csZMGAABoOBDz/8kIsXLzJy5Eji4uLw8/OjY8eOfPzxx5p57a1qiYmJvPTSSzz44IMEBgaSkJDAe++9p47bu5U3bNiAJEmsX7+e7t274+fnR58+fTh06JDmPLNmzSIqKorAwEAeeughpkyZovmsfP311zz77LMMHjyYxMREunXrxoQJE3jwwQfVdZ46dYonn3xS/TwANV7jmDFj+Omnn3jzzTfV406ePEl2djajRo0iMjISX19fWrduzZIlS6q8/wL3wWI5rBA1ei+tONRmK0t4kDZ0ajkMttY5LLVLSGnqLmVbb2VXvjwJYTmsBYqiUGw01enYHw6eZ9uJLHq2CGNQ26haH+/rravXtzhfX1+NlWb9+vUEBQWxbt06AAoLC0lNTaV3795s376d8+fP89BDDzF+/HhVtNnz4YcfMm3aNBYsWEDXrl3ZtWsX48aNw9/fn9GjR1NQUMCAAQOIi4vj66+/JiYmhp07d2I2mxkxYgT79u1j9erVfP/99wAEBzvGvFzqun788UeaNWvGjz/+yNGjRxkxYgRdunRh3LhxDnOOGDGC+Ph4UlJS2LZtG/Hx8URGRgJw9OhRvvjiC1asWIFOp8NsNqvC8KeffqK8vJzHH3+cESNGsGHDBnXOY8eO8d1337F69WqOHTvG8OHDOX78ONdccw0//fQTmzdv5sEHHyQlJYVevXrV9scHwJQpU5gzZw5du3bFYDBQUlJCt27dePrppwkKCuLbb7/lvvvuo1WrVvTs2bPKeebMmcOLL77Is88+y+eff86jjz7KgAED1C8JznjuueeYM2cOkZGRPPLIIzz44INs2rQJsHwOZs+ezTvvvEPfvn355JNPmDNnDi1atFCPj4mJYdWqVdxxxx0EBgY6zL9ixQo6d+7Mww8/rPmZ1XSNb775JocPH6ZDhw7MnDkTsAjtv//97+zfv5/vvvuOiIgIjh49SnFxscN5Be6F2WSmpNioKWXjY285lDw35tCZ5TDU6lYuI0SzvamXsTFLEmYXWj5dOVdTQIjDWlBsNJE0bU295li25VSdjts/MxU/fe1/XIqisH79etasWcOECRPU7f7+/ixatEh1m77//vuUlJSwbNky/P39AViwYAFDhgzh1VdfJTo62mHu6dOnM2fOHO644w4AWrRowf79+3n33XcZPXo0H330ERcuXGD79u2qNezqq69Wjw8ICMDLy6taN+ZHH310SesKDQ1lwYIF6HQ62rZty6233sr69eudikObBRIqLHY2ysrKWLZsmSoW161bx++//86JEyeIj48HYNmyZbRv357t27fTo0cPAMxmM4sXLyYwMJCkpCSuv/56Dh06xKpVq5BlmTZt2vDqq6/y448/1lkcTpw4Ub3XNiZPnqz+e8KECaxZs4ZPP/20WnE4ePBgHnvsMQCefvpp3njjDX788cdqxeHs2bMZMGAAYBGpt956KyUlJRgMBt566y3Gjh3LAw88AMC0adNYu3atxrr73nvvMWrUKMLDw+ncuTP9+vVj+PDh9O3bF7C4v3U6HYGBgZqfR1xcXLXXGBwcjF6vx8/PT3NcWloaXbt2pXv37oDFYipwf2yZuJUf4wZ7yyGVimDLnpWtXGgnDhXFRKjVclhul63clAtgC+qPcCu7Kd988w0BAQEYDAZuueUWRowYwYwZM9Txjh07auLpDhw4QOfOnVUBBtC3b1/MZrODCxEsFr1jx44xduxYNRYxICCAWbNmcezYMQB2795N165dax33VplLXVf79u3R6SpqDTRr1ozz58/X+nzNmzdXhaHt/PHx8aowBEhKSiIkJIQDBw6o2xITEzUWsejoaJKSkpBlWbOtLmuyYRM6NkwmEy+++CIdO3YkLCyMgIAA1qxZQ1paWrXzdOrUSf23JEnExMTUuK7Kx9hiNG3HHDp0yEGM2r9PTk7m+PHjrF+/nuHDh/PHH3/Qv3//GpNl6nqNjz76KJ988gldunThqaeeYvPmzdXuL3APigodQ0l8dUWa9xWWQ8nj6hzaWw5lCvCy3g+TvThs4pZDZMn1Lw9CWA5rga+3jv0zU2t93A8HzzP+o13oJAmTorDgnq61di37eteuyNL111/Pv/71L/R6PbGxsXh5aX/UlcVWXbBZhd5//30HS5hNpNknUVxO7JMzJEnCbDZXsXfV1PW+ODu/q9ZU1dpef/113nzzTebNm0fHjh3x9/dn4sSJlJU5uo5qWmtN66p8jC28obbX4u3tTf/+/enfvz9PP/00s2bNYubMmTz99NNVJv7U9RpvueUWTp06xapVq1i3bh033HADjz/+OP/85z9rtWZB06LY1le50nPcIGvFoS1bWWetgedRbmW7mEMvbN1R/JEk7d+FplzjUFB/hDisBZIk1cm1e1unWHy8dPx6/CLXtQznxiRHF62r8ff317hwa6Jdu3YsXbqUwsJCVYRs2rRJdYnaEx0dTWxsLMePH2fUqFFO5+zUqROLFi0iKyvLqfVQr9erGbquWperadeuHadPn+b06dOq9XD//v3k5OSQlJR02c9fHZs2bWLo0KHce++9gEWsHT58uMHX1aZNG7Zv387999+vbtu+fXuNxyUlJVFeXk5JSQl6vd7p5+FSrrGqz1FkZCSjR49m9OjR9O/fn3/84x9CHLo5NsuhVEkd+ldhOZRl25ecBlpcI8ChrzI5AGS7WXcUALMEZhf6Rs2eZTgUbuWG4sakaJ6/LalBhGFdGDVqFAaDgdGjR7Nv3z5+/PFHJkyYwH333ec03hDghRde4OWXX2b+/PkcPnyY33//nSVLljB37lwARo4cSUxMDMOGDWPTpk0cP36cL774gi1btgAWV+yJEyfYvXs3mZmZlJaWumRdriQlJYWOHTsyatQodu7cybZt27j//vsZMGCAg5u3oWndujXr1q1j8+bNHDhwgL/97W+aLOqGYsKECfz73//mP//5D0eOHGHWrFns3btXk0A1cOBA3n33XXbs2MHJkydZtWoVzz77LNdff71aricxMZGNGzdy5swZMjMzL/kaExMT2bp1KydPniQzMxOz2cy0adP46quvOHr0KH/88QfffPMN7dq1a7ibIrgiFBU5WpT9qrAcyjrL48+TLIf22co+1mSUHJz0VW7qlkNJcv3LgxDiUACAn58fa9asISsrix49ejB8+HBuuOEGFixYUOUxDz30EIsWLWLJkiV07NiRAQMGsHTpUjVL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Dxw4wIYNG3C73eTn5/OVr3yFjo6O2Pb169fzta99LWE+t912G/fee2/seVlZGf/8z//Ml770JbKysvjKV74CwPbt21m/fj0ej4fc3Fw2bdpEc3Nzn+atUCgUYwElDhUKxWVz8OBB3n///Zhl7tFHH+UXv/gFTzzxBIcOHeLrX/86X/jCF3j33XcB+Pa3v83hw4d59dVXOXLkCD/+8Y8pKCgAwOfzsWnTJnJzc/nwww957rnneOutt3jooYf6Pa/vf//7LFy4kI8//phvf/vb7N27l+uuu47y8nJ27NjBtm3buPXWWzEMo0/zVigUirGAcisrFIpL4qWXXiIjI4NIJEIwGETTNH70ox8RDAb5zne+w1tvvcWqVasAmDp1Ktu2beMnP/kJ11xzDRUVFSxevJhly5YBlpWvi2eeeYZAIMAvfvELvF4vAD/60Y+49dZb+e53v0tRUVGf57hhwwb+6q/+Kvb8c5/7HMuWLePf//3fY2Nz584F6NO8FQqFYiygxKFCobgkrr32Wn784x/j8/n413/9V2w2G3feeSeHDh2is7OT66+/PmH/UCjE4sWLAXjggQe488472bNnDzfccAO33XYbV199NQBHjhxh4cKFMWEIsHr1akzT5NixY/0Sh13is4u9e/dy1113pd335MmTF523QqFQjAWUOFQoFJeE1+tl+vTpAPzsZz9j4cKFPPnkk8ybNw+Al19+mdLS0oRjnE4nADfddBPnzp3jlVde4c033+S6667jwQcf5Pvf/36frq1pGlLKhLFwOJx2jvG43e4ez9kV09jbvBUKhWIsoGIOFQrFZaNpGn/3d3/H3//931NeXo7T6aSiooLp06cnPCZOnBg7Zty4cdxzzz3893//N4899hg//elPAZgzZw779u3D5/PF9t2+fTuapjFr1qzYsdXV1bHthmFw8ODBi85zwYIFbN68Oe22vs5boVAoRjtKHCoUigHhrrvuQtd1fvKTn/CNb3yDr3/96zz99NOcOnWKPXv28MMf/pCnn34agEceeYQXX3yRkydPcujQIV566SXmzJkDwOc//3lcLhf33HMPBw8e5J133uGrX/0qX/ziF2Mu5Q0bNvDyyy/z8ssvc/ToUR544AFaWlouOsdvfetbfPjhh/z5n/85+/fv5+jRo/z4xz+moaGBzMzMi85boVAoxgLKraxQKAYEm832/7drhzYaAkEYhr9LCMmuwtACBZAACkENKAwCTUKQrEWQIKiDFqALGgA6uXMrTtwV8L9PAzPyTWbU973WddXzPIrjWMuy6L5vRVGkNE3lnJMkhWGoaZr0vq+MMSrLUvu+S5KstTqOQ8MwKMsyWWtV17W2bfOzuq7TdV1q21ZBEGgcR1VV9e+OSZLoPE8555TnuYwxKopCTdNIkuZ5/nNvAPgEX9+/H3cAAADwsTgrAwAAwCMOAQAA4BGHAAAA8IhDAAAAeMQhAAAAPOIQAAAAHnEIAAAA7wecYpXSVy7dsgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "figs, axes = sb.plots.plot_parameters_separate()\n", + "for param, fig in figs.items():\n", + " fig.savefig(param + \".png\")" + ] + }, + { + "cell_type": "markdown", + "id": "d94e99ce", + "metadata": {}, + "source": [ + "### Conclusion\n", + "\n", + "As mentioned before, the initial analysis does not paint the whole picture. From that high-level evaluation, we saw that 1,000 reads per sweep gives us a good performance ratio at a low number of sweeps (22). This corresponds to a 22,000 value for our resource. However, looking at the input recommendation plots, we see that:\n", + "\n", + "- The only moment when it is worth using 1,000 reads is when we have more than $10^5$ available resources.\n", + "- We can reach 1.0 performance ratio around a much lower resource value ($10^3$).\n", + "- From the first plot, it is noticeable that the confidence interval becomes narrower from resource value $10^3$ and forward.\n", + "\n", + "From the deeper analysis provided by the framework, we can see that there is pretty much no point in ever using 1,000 or even 100 reads per sweep. We should, instead, stick with 1 or 10 reads per sweep, investing, at most, $10^3$ resources." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}