{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4d6d065a-be52-4462-9d33-fd12928aea6a",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:10:35.353150Z",
"iopub.status.busy": "2026-06-25T14:10:35.352952Z",
"iopub.status.idle": "2026-06-25T14:10:35.356293Z",
"shell.execute_reply": "2026-06-25T14:10:35.355625Z"
}
},
"outputs": [],
"source": [
"import os\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = '0'"
]
},
{
"cell_type": "markdown",
"id": "036f012a-0623-494b-95f2-35ad8c4a604f",
"metadata": {},
"source": [
"### Tutorial B6: Design\n",
"\n",
"> ersatz (substitute) + predict + ersatz (substitute) + predict + ..."
]
},
{
"cell_type": "markdown",
"id": "1f33fe28-fe87-4f70-948a-8b18cfce5154",
"metadata": {},
"source": [
"Most of the functions we've discussed so far center around extracting what a sequence-based machine learning model has learned after training. Marginalization experiments show the individual effect that each motif has on model predictions; ISM shows the individual effect that each mutation has on model predictions within an observed sequence. However, these models can be used for more than just identifying relevent sequence features and their syntax rules.\n",
"\n",
"For example, trained sequence-based models can be used in the design setting. Although these are numerous methods for designing sequences, each with their own set of important details, the overall approach is to train a model that predicts some sort of readout of interest and then perturb the sequence input until the predicted output matches what is desired by the user. Sometimes, this involves starting with an informative sequence and designing edits, other times this involves the de novo generation of sequences from scratch that exhibit the desired characters. Regardless, the trained model is considered to be an \"oracle\" that outputs how good the in-progress sequence is.\n",
"\n",
"#### Greedy Substitution\n",
"\n",
"The most conceptually simple design method is that of greedy substitution. Given an initial sequence, a predictive model, an output goal, and a set of motifs that one could substitute into the sequence, the task is to find which motifs and what exact positioning should be used to achieved a desired output from the predictive model. Because the aim here is to be conceptually simple, the method proceeds across several iterations where at each iteration, every motif is tried at every position in the sequence, and the motif+position pair that yields the largest improvement in terms of getting the model towards its goal. Naturally, this can be very time consuming but is the most straightforward approach.\n",
"\n",
"Let's start by loading up the Beluga model again."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4c78f4e4-4cb3-4013-89d6-a3d72a68ec4c",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:10:35.358182Z",
"iopub.status.busy": "2026-06-25T14:10:35.358050Z",
"iopub.status.idle": "2026-06-25T14:10:36.677351Z",
"shell.execute_reply": "2026-06-25T14:10:36.676559Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import torch\n",
"from model import Beluga\n",
"\n",
"model = Beluga()\n",
"model.load_state_dict(torch.load(\"deepsea.beluga.torch\"))"
]
},
{
"cell_type": "markdown",
"id": "889446fe-2114-44c6-bec4-1aa809b6f6fb",
"metadata": {},
"source": [
"Let's see if we can get this model to design a sequence that predicts high AP-1 binding. Yes, this task is unrealistically simple because AP-1 factors bind to a known motif and one could just insert that into the sequence, but it's a good initial task to show how to use the function. \n",
"\n",
"For the purpose of this example, we can randomly generate a single sequence and use a subset of predefined motifs from JASPAR. Here, we have inserted a motif that we known the Beluga AP-1 tasks respond to as the third motif in the list. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "61fd30eb-ff58-4dfe-965a-c40c8016024d",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:10:36.678955Z",
"iopub.status.busy": "2026-06-25T14:10:36.678760Z",
"iopub.status.idle": "2026-06-25T14:10:37.300960Z",
"shell.execute_reply": "2026-06-25T14:10:37.296033Z"
}
},
"outputs": [],
"source": [
"import numpy\n",
"from tangermeme.utils import random_one_hot\n",
"\n",
"X = random_one_hot((1, 4, 2000), random_state=0).type(torch.float32)\n",
"motifs = [\n",
" 'GCTAATTAAC',\n",
" 'ATGCCCACC',\n",
" \"GTGACTCATC\",\n",
" 'AGAACAGAATGTTCT',\n",
" 'TGATGACGTCATCGC',\n",
" 'ACATTCCA',\n",
" 'GGGAGGAGGGAGAGGAGGAG',\n",
" 'TAATCGATTA',\n",
" 'CGTCTAGACA',\n",
" 'TGCTATTTTTAG',\n",
" 'CATTGTTTATTT',\n",
" 'TTTCACACCTAGGTGTGAAA',\n",
" 'GGCACGCGCC'\n",
"]"
]
},
{
"cell_type": "markdown",
"id": "521a90a2-a718-43ec-a84c-59a5897741d7",
"metadata": {},
"source": [
"Next, we need a target that we are trying to get the model to predict with the designed sequence. In this case, we probably want all of the tasks for AP-1 factor proteins (e.g., c-/FOS, c-/JUN, etc). Since the predictions from Beluga are in logit space, we can set it to a relatively high positive value to indicate that we want binding of those specific tasks. Note that the first dimension is `1`. Although this method will accept a batch of sequences, the batch size must be `1` because, here, you are designing a single sequence."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e5114ea7-b91c-490a-b823-3650ab83d61c",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:10:37.306806Z",
"iopub.status.busy": "2026-06-25T14:10:37.306458Z",
"iopub.status.idle": "2026-06-25T14:10:37.311491Z",
"shell.execute_reply": "2026-06-25T14:10:37.310961Z"
}
},
"outputs": [],
"source": [
"names = numpy.loadtxt(\"beluga_target_names.txt\", delimiter=',', dtype=str)\n",
"idxs = torch.tensor(['jun' in n.lower() or 'fos' in n.lower() for n in names])\n",
"\n",
"y = torch.zeros(1, 2002)\n",
"y[:, idxs] = 3"
]
},
{
"cell_type": "markdown",
"id": "ff622d6e-b217-41e9-8705-3840b24de721",
"metadata": {},
"source": [
"Now, we can call the function. This function has a similar signature to other `tangermeme` functions in that it takes in the predictive model, the initial sequence, and a list of motifs. It differs from other functions in that it also takes in `y`, which is the target that we want the predictive model to output. Optionally, `greedy_substitution` can take in a mask that is applied to the predictions from the model and the target. Basically, if your model makes predictions for more outputs than you care about, this mask lets you remove some of those outputs from the loss. In our case, we can remove all predictions not related to the AP-1 factors and say that we want to design a sequence with the highest binding of AP-1 factors regardless of what happens to all other tasks."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f830db0f-c013-4962-be98-e6873b6df227",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:10:37.312595Z",
"iopub.status.busy": "2026-06-25T14:10:37.312509Z",
"iopub.status.idle": "2026-06-25T14:12:15.947447Z",
"shell.execute_reply": "2026-06-25T14:12:15.946240Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 72.97, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:01<00:25, 1.00s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:19, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:12, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:08, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:05, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:04, 1.73it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:03, 1.89it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:02, 2.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:02, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:01, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 14.17, Improvement: 58.8, Motif Idx: 17, Pos Idx: 966, Time (s): 17.89\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:14, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:13, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:13, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:09, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:09, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:07, 1.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:07, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:11<00:06, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:06, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:05, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:04, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:02, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 7.049, Improvement: 7.12, Motif Idx: 15, Pos Idx: 1031, Time (s): 18.81\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:16, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:15, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:15, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:14, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:14, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:19, 1.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:07<00:22, 1.23s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:08<00:19, 1.15s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:09<00:17, 1.08s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:10<00:15, 1.05s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:11<00:13, 1.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:11<00:10, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:11<00:08, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:12<00:06, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:13<00:06, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:05, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:14<00:05, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:15<00:05, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:16<00:04, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:17<00:04, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:18<00:03, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:18<00:02, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:19<00:01, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:20<00:00, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 4.952, Improvement: 2.098, Motif Idx: 2, Pos Idx: 1068, Time (s): 21.22\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:19, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:13, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:06, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:05, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:04, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:04, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 4.222, Improvement: 0.7302, Motif Idx: 10, Pos Idx: 984, Time (s): 19.48\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:19, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:12, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:11, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:09, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:08, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:08, 1.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:08, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:08, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:06, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:05, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:04, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.42it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 3.897, Improvement: 0.3251, Motif Idx: 19, Pos Idx: 844, Time (s): 18.26\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"from tangermeme.design import greedy_substitution\n",
"\n",
"X_hat = greedy_substitution(model, X, y, motifs, output_mask=idxs, max_iter=5, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "7e524d59-5d7c-4822-973a-2147540becd4",
"metadata": {},
"source": [
"We can see what is happening during the process from the logs. `Iteration 0` is meant to show what the loss looks like before any substitutions are made. We specified that only five rounds should happen, but can also specify that the improvement must be above a certain threshold (`tol`, default is `1e-3`). The process will terminate early if adding in more motifs would cause a higher loss than the previous iteration. \n",
"\n",
"Unsurprisingly, by looking at the motif idx we can see that an AP-1 motif or its reverse complement is chosen in most of the rounds and that these insertions are somewhat close to each other. The middle is the sequence is not necessarily preferentially chosen by the design method, but it is possible that the models being used will prefer motifs to be in the middle of the sequence as an artifact of how they are trained. \n",
"\n",
"We can now take a look at what the predictions from the model look like before and after substituting in these motifs."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "030dba20-5bf3-4faa-810f-e6ce5cefadac",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:12:15.950427Z",
"iopub.status.busy": "2026-06-25T14:12:15.950317Z",
"iopub.status.idle": "2026-06-25T14:12:16.992148Z",
"shell.execute_reply": "2026-06-25T14:12:16.991434Z"
}
},
"outputs": [
{
"data": {
"image/png": "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PhMmTODtt99m5syZpdkcm6B9lEREpDKoMCNL0dHRvPjiizRt2vS2z+/YsYOjR4/y3nvv4efnR3BwMC+//DIJCQnk5eXd9pxjx46xfft2pkyZYhmxeuutt/jqq684e/ZsaTZHREREKogKM7J0Jz/99BNNmzaldu3almMdO3Zk4sSJHD16lGbNmt1yzr59+6hevTr+/v6WY0FBQdjb27N//366dOlSohpMJtPdN6AcutmeytaukrD1PrD19oP6QO237fZD5e6D4rap0oSlrKysQkEJsDzOzMws8hwPD49CxxwdHalRo0aR51hz4MCBEp9TEVTWdpWErfeBrbcf1Adqv223H2y7DwwNS++//z4LFy60+pqNGzfSuHHFWCDs7++Pg4OD0WXcMyaTiQMHDhjerk+/P8n8/xwn6lFvXmjXoEzfu7z0gVFsvf2gPlD7bbv9ULn74Gbb7sTQsDRw4EAiIiKsvqZ+/frFulbt2rXZv39/oWNZWVkA1KlTp8hzzp8/X+jY9evXuXjxYpHnWOPg4FDpfpDA+HbN/88JTl+4yvz/nCAyyMuQGozuA6PZevtBfaD223b7wbb7wNCw5OHhccs02N1q1aoV8+fPJzs7m1q1agGQkpKCq6srDz744G3PCQwM5NKlS/z888+0aNECgNTUVAoKCggICLgndcn/bnjnxsQlH9MWBCIiYogK82m4jIwM0tLSyMjIwGQykZaWRlpammVPpI4dO/Lggw8yduxYDh8+zPbt25k9ezZ9+/bFyckJgP379xMeHm75pFvjxo3p1KkT//rXv9i/fz8//vgjkydP5qmnnuL+++83rK1SWL/2Ddk5PkTbEIiIiCEqzALvOXPmsHbtWsvj7t27A7BixQratWuHg4MD8+fPZ+LEifTq1QsXFxciIiKIjo62nHPlyhVOnDhBfn6+5dj777/P5MmTGTBgAPb29oSFhfHWW2+VWbtERESkfKswYWnatGlMmzbN6mvq1atndcF4u3bt+OWXXwodc3d31waUIiIiUqQKMw0nIiIiYgSFJRERERErFJakXFqZms4j075lZWq60aWIiIiNU1iSciku+RinL1whLvmY0aWIiIiNU1iScml458bUc3fR3koiImK4CvNpOLEt/do31L5KIiJSLmhkSURERMQKhSURERERKxSWRERERKxQWBIRERGxQmFJRERExAqF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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"import seaborn; seaborn.set_style('whitegrid')\n",
"\n",
"from tangermeme.predict import predict\n",
"\n",
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "774f60a5-0f09-4357-be16-d50c98ef1ae9",
"metadata": {},
"source": [
"Not only do we see that the tasks related to AP-1 binding have increased logits, we can see that they seem to be close to the desired value of 3. Interestingly, not all of the AP-1 tasks are increased to that level, and there seems to be quite a bit of a jitter in all of the other tasks. "
]
},
{
"cell_type": "markdown",
"id": "8623eb11-4db2-4256-a3b4-d001ced74a4f",
"metadata": {},
"source": [
"### Greedy Saturation Mutagenesis / Evolutionary Algorithms\n",
"\n",
"Rather than implanting entire motifs into sequences, some approaches consider changing only one nucleotide at a time. This is sometimes done probabilistically, where only a subset of potential mutations are considered, and is sometimes comprehensive, e.g., saturation mutagenesis. Regardless, each approach proceeds similarly to the greedy approach described above: a nucleotide is changed, the change in score is recorded, and the best individual mutation is made at the end of each round.\n",
"\n",
"This approach of only changing a single nucleotide in each round can be performed by simply passing in the four nucleotides as options rather than entire motifs."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e59f16bb-46c5-46c8-85c8-2bd285e0716e",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:12:16.994758Z",
"iopub.status.busy": "2026-06-25T14:12:16.994614Z",
"iopub.status.idle": "2026-06-25T14:13:04.590883Z",
"shell.execute_reply": "2026-06-25T14:13:04.590156Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 72.97, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 53.46, Improvement: 19.52, Motif Idx: 2, Pos Idx: 1058, Time (s): 3.247\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 40.33, Improvement: 13.13, Motif Idx: 2, Pos Idx: 1083, Time (s): 3.084\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 32.48, Improvement: 7.845, Motif Idx: 3, Pos Idx: 1087, Time (s): 2.859\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 27.84, Improvement: 4.637, Motif Idx: 3, Pos Idx: 1029, Time (s): 2.803\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 19.53, Improvement: 8.317, Motif Idx: 0, Pos Idx: 1031, Time (s): 3.008\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 6 -- Loss: 13.43, Improvement: 6.095, Motif Idx: 1, Pos Idx: 1028, Time (s): 3.029\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 7 -- Loss: 11.12, Improvement: 2.313, Motif Idx: 1, Pos Idx: 1035, Time (s): 2.938\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 8 -- Loss: 9.498, Improvement: 1.62, Motif Idx: 3, Pos Idx: 994, Time (s): 3.238\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:03<00:00, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 9 -- Loss: 8.412, Improvement: 1.086, Motif Idx: 0, Pos Idx: 1061, Time (s): 3.1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 10 -- Loss: 7.221, Improvement: 1.192, Motif Idx: 3, Pos Idx: 1062, Time (s): 2.664\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:01, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:01<00:00, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 11 -- Loss: 6.564, Improvement: 0.657, Motif Idx: 3, Pos Idx: 1086, Time (s): 2.532\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:01, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:01<00:00, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 12 -- Loss: 6.02, Improvement: 0.5434, Motif Idx: 3, Pos Idx: 1071, Time (s): 2.235\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:01, 2.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:03<00:01, 1.19s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:04<00:00, 1.43s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:04<00:00, 1.25s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 13 -- Loss: 5.359, Improvement: 0.6612, Motif Idx: 1, Pos Idx: 1070, Time (s): 4.983\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:01<00:05, 1.95s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:03<00:03, 1.74s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:04<00:01, 1.38s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:05<00:00, 1.10s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:05<00:00, 1.29s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 14 -- Loss: 4.795, Improvement: 0.5639, Motif Idx: 2, Pos Idx: 1065, Time (s): 5.171\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:01, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:00<00:00, 2.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:02<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.59it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 15 -- Loss: 4.527, Improvement: 0.2686, Motif Idx: 1, Pos Idx: 979, Time (s): 2.511\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"X_hat = greedy_substitution(model, X, y, ['A', 'C', 'G', 'T'], reverse_complement=False, output_mask=idxs, max_iter=15, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "0dda145f-2a1f-43fe-a1e7-c4ee6c41af34",
"metadata": {},
"source": [
"Each round is much faster because, although you are considering changes at roughly the same number of positions, you are considering a significantly smaller number of \"motifs\". However, you will likely need many more iterations because adding in a motif of length 8 will require 8 rounds rather than the single round in the other approach. Something interesting to note is that midway the improvement increases, indicating that an epistatic effect was discovered, i.e., that the inclusion of one or more earlier positions was required before that position could really improve output."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "91ecc591-89f1-4c88-a2fd-c1a3b88380ce",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:13:04.592015Z",
"iopub.status.busy": "2026-06-25T14:13:04.591916Z",
"iopub.status.idle": "2026-06-25T14:13:04.981141Z",
"shell.execute_reply": "2026-06-25T14:13:04.980608Z"
}
},
"outputs": [
{
"data": {
"image/png": "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qVOnrnmMq6trhW1NmjTB2dn5msdYk5eXd8PH1AfVbVfqppOcKiknddM+ujQ7c5Orql0N9dpWVWNvP6gP1P7G3X5o3H1gaFh6/fXXWbx4sdV91q1bh5dX/Zh+CQgIwM7OzugybhqTyUReXl612xX7+/9Glrp3r/7IkpH+bB/Ud429/aA+UPsbd/uhYffB5bZdj6FhafTo0URGRlrdp3379lU6V+vWrcnNza2w7fTp0wC0adPmmsecOVNxxOPixYucPXv2msdYY2dn1+DeSFD9dkWFeBAV4lEDFdW+hnptq6qxtx/UB2p/424/NO4+MDQsubq6XjUNVl3du3cnLS2NoqIi3NzcAMjJycHR0ZE77rij0mOCgoL49ddf+e677/D39wdgx44dlJeXExgYeFPqEhERkfqt3nwbrrCwkPz8fAoLCzGZTOTn55Ofn2+5J1JoaCh33HEHcXFx7Nu3jy1btjBv3jxGjhyJvb09ALm5uURERFi+6ebl5UWfPn14+eWXyc3N5ZtvviEhIYEHHniAW2+91bC2ioiISN1RbxZ4p6amsnr1asvjBx98EICVK1fSs2dP7OzsSEtLY/r06TzyyCM0b96cyMhIYmNjLcecP3+eQ4cOUVZWZtn2+uuvk5CQQHR0NLa2tgwYMICXXnqp1tollXtvx2EWZR/gqb5ejOrV0ehyRESkEas3YSkpKYmkpCSr+7Rr187qgvGePXvyww8/VNjm4uLCnDlzbkqNcvNceSNKhSURETFSvZmGk8ZFN6IUEZG6ot6MLEnjMqpXR40oiYhInaCRJRERERErFJZERERErFBYEhEREbFCYUlERETECoUlERERESsUlkRERESsUFgSERERsUJhSURERMQKhSURERERKxSWRERERKxQWBIRERGxQmFJRERExAqFJRERERErmhhdQENgNpsBMJlMBldyc11uT0Nr141o7H3Q2NsP6gO1v3G3Hxp2H1xu0+XP8WuxMV9vD7mu0tJS8vLyjC5DREREqiEgIAB7e/trPq+wdBOUl5dz8eJFbG1tsbGxMbocERERqQKz2Ux5eTlNmjTB1vbaK5MUlkRERESs0AJvERERESsUlkRERESsUFgSERERsUJhSURERMQKhSURERERKxSWRERERKxQWBIRERGxQmFJRERExAqFJamyQ4cO8dRTT9GzZ0+Cg4MZPnw4O3bs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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "b4a5264b-3da6-4f0d-aee6-25389871ca02",
"metadata": {},
"source": [
"Looks like we are starting to get there, but are not as close as implanting ten entire motifs.\n",
"\n",
"This method has strengths and weaknesses. The weaknesses are that it may take many more iterations to get good results and that it gives potentially too much flexiblility of the model, allowing it to overfit to spurious correlations (e.g., finding a random mutation that is not part of the model but happens to make the model predict closer to the desired output). The strengths are that it does not rely on a set of pre-identified set of motifs and so can make changes that fall outside the set of motifs, e.g., adding in a lower affinity version of a motif or an alternate version of the motif that is actually stronger than the one provided. "
]
},
{
"cell_type": "markdown",
"id": "a369065f-723f-4021-b0cc-45a2035c1ddc",
"metadata": {},
"source": [
"#### Balancing Losses\n",
"\n",
"Is it possible to design a sequence that keeps the other tasks as close to their original values as possible while still increasing the predictions for AP-1 binding? To do this, rather than using a mask to ignore the outputs from non-AP-1 tasks, we will set the target values for that task to the original predictions from the model."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f5e43a8f-137e-4d19-9f57-a3adda8f30d8",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:13:04.982322Z",
"iopub.status.busy": "2026-06-25T14:13:04.982244Z",
"iopub.status.idle": "2026-06-25T14:16:08.976800Z",
"shell.execute_reply": "2026-06-25T14:16:08.975817Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 1.13, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:07, 3.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:07, 3.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:10, 2.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:11, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:11, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:11, 1.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:11, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:10, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:12, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:11, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:10, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:09, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:07<00:08, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:08<00:07, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:06, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:09<00:06, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:10<00:05, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:10<00:05, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:11<00:03, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:11<00:02, 2.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:11<00:02, 2.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:12<00:01, 2.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:12<00:01, 2.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:13<00:00, 2.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:13<00:00, 2.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 2.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.6534, Improvement: 0.4765, Motif Idx: 15, Pos Idx: 896, Time (s): 14.37\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:17, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:15, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:11, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:10, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:10, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:09, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:08, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:08<00:07, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:06, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:10<00:04, 1.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:11<00:06, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:07, 1.07s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:06, 1.15s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:04, 1.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:03, 1.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:02, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 0.5999, Improvement: 0.05355, Motif Idx: 2, Pos Idx: 905, Time (s): 18.59\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:15, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:14, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:13, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:11, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:10, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:08, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:07, 2.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:06<00:05, 2.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:07<00:05, 2.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:07<00:05, 2.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:08<00:04, 2.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:08<00:04, 2.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:08<00:03, 2.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:08<00:02, 2.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:09<00:02, 2.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:09<00:01, 3.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:09<00:01, 3.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:10<00:01, 3.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:10<00:00, 3.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:10<00:00, 3.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:11<00:00, 3.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:11<00:00, 3.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:11<00:00, 2.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 0.5821, Improvement: 0.01778, Motif Idx: 14, Pos Idx: 1063, Time (s): 11.45\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:16, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:14, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:13, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:11, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:10, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:09, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:09, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:08, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:07, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:08<00:07, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:06, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:09<00:06, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:10<00:05, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:11<00:04, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:11<00:03, 1.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:11<00:02, 2.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:12<00:02, 2.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:12<00:01, 2.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:12<00:01, 2.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:13<00:00, 2.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:14<00:00, 2.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 1.87it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 0.5714, Improvement: 0.01067, Motif Idx: 13, Pos Idx: 852, Time (s): 14.67\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:14, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:14, 1.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:13, 1.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:13, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:16, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:16, 1.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:15, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:14, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:14, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:13, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:12, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:12, 1.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:11<00:11, 1.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:12<00:10, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:13<00:09, 1.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:14<00:08, 1.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:15<00:06, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:15<00:05, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:16<00:04, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:17<00:04, 1.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:18<00:03, 1.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:19<00:02, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:20<00:01, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:21<00:00, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 0.5648, Improvement: 0.006629, Motif Idx: 12, Pos Idx: 704, Time (s): 21.86\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:22, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:21, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:20, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:19, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:19, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:05<00:18, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:06<00:17, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:07<00:16, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:08<00:15, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:09<00:14, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:10<00:14, 1.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:11<00:13, 1.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:12<00:12, 1.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:12<00:11, 1.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:13<00:10, 1.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:14<00:09, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:15<00:08, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:16<00:07, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:17<00:05, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:17<00:04, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:18<00:03, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:19<00:03, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:20<00:02, 1.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:21<00:01, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:22<00:00, 1.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:22<00:00, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:22<00:00, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 6 -- Loss: 0.5588, Improvement: 0.006038, Motif Idx: 23, Pos Idx: 1550, Time (s): 22.89\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:22, 1.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:21, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:21, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:20, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:19, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:05<00:18, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:06<00:17, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:07<00:16, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:08<00:17, 1.05s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:09<00:16, 1.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:10<00:15, 1.03s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:11<00:13, 1.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:12<00:11, 1.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:12<00:10, 1.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:13<00:09, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:14<00:08, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:15<00:07, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:15<00:05, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:16<00:04, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:16<00:03, 1.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:17<00:03, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:18<00:02, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:18<00:01, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:19<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:20<00:00, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 7 -- Loss: 0.5535, Improvement: 0.005304, Motif Idx: 3, Pos Idx: 805, Time (s): 20.89\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:24, 1.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:20, 1.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:18, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:17, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:12, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:09, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:07, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:05, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:04, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:03, 1.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:02, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:01, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:19<00:00, 1.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 8 -- Loss: 0.5496, Improvement: 0.003878, Motif Idx: 12, Pos Idx: 1193, Time (s): 20.01\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:17, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:06, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:06, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:03, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:03, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 9 -- Loss: 0.5465, Improvement: 0.003076, Motif Idx: 5, Pos Idx: 1588, Time (s): 19.47\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:15, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:14, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:13, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:09, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:06, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:06, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:03, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.34it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 10 -- Loss: 0.5449, Improvement: 0.001644, Motif Idx: 11, Pos Idx: 1803, Time (s): 19.46\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"y = predict(model, X)\n",
"y[:, idxs] = 3\n",
"\n",
"X_hat2 = greedy_substitution(model, X, y, motifs, max_iter=10, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "326e70ee-bf46-4b9b-9d01-33430e2e6ff8",
"metadata": {},
"source": [
"Unsurprisingly, we can see that the magnitude of the loss goes down because we are now averaging over two orders of magnitude more tasks. Interestingly, after picking the AP-1 motif and its reverse complement (motif indices 2 and 15) in the first two rounds, the method switches to a variety of other motifs rather than continuing to stack strong AP-1 sites. When every task counts, piling on more strong AP-1 binding would push the other tasks too far from their original values. Additionally, it looks like the motifs are placed in the sequence further apart than they were in the other example."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "92c7a9ca-7d23-47d2-b942-e2423f6f89fc",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:16:08.979456Z",
"iopub.status.busy": "2026-06-25T14:16:08.979352Z",
"iopub.status.idle": "2026-06-25T14:16:09.404565Z",
"shell.execute_reply": "2026-06-25T14:16:09.403616Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGwCAYAAABRgJRuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlEpJREFUeJzs3XlYlOX6wPHvbMCwyCYuoCKQYi6ImUtWaFba0bTU6pdlddpO2mqZS+fUKSuPaZZldbT9WKbVsVw6WqQZWZZZ5r4rBgqiKIssA8zy/v4YZ5yBAQdlGGa4P9fVpczyzv28Gtw+z/3cj0pRFAUhhBBCCB+n9nYAQgghhBANQZIaIYQQQvgFSWqEEEII4RckqRFCCCGEX5CkRgghhBB+QZIaIYQQQvgFSWqEEEII4Re03g6gMVksFkwmE2q1GpVK5e1whBBCCOEGRVGwWCxotVrU6trnY5pVUmMymdixY4e3wxBCCCHEeejRowcBAQG1Pt+skhpbdtejRw80Go2Xo2lYZrOZHTt2+OXY3CHjb97jB7kHzX38IPfAn8dvG1tdszTQzJIa25KTRqPxuz9wG38emztk/M17/CD3oLmPH+Qe+PP4z1U6IoXCQgghhPALktQIIYQQwi9IUiOEEEIIv9CsamrcZTabMRqN3g6jXsxmMwAVFRV+u5ZaF0+OX6fTNct7KoQQvkaSGgeKopCXl0dRUZG3Q6k3RVHQarVkZWU1yx48nh5/REQEbdq0aZb3VgghfIUkNQ5sCU2rVq0IDg72qR9giqJgMBjQ6/U+FXdD8dT4FUWhvLycEydOANC2bdsGu7YQQoiGJUnNGWaz2Z7QREdHezucerN1WwwKCmq2SY2nxq/X6wE4ceIErVq1kqUoIYRooqRQ+AxbDU1wcLCXIxFNke3vha/VWgkhRHMiSU01zXGWQ5yb/L0QQoimT5IaIYQQQvgFSWqEEEII4RckqRFCCCGEX5Ckxk9s2bKFSy+9lAceeKDGc0ePHiU5Odn+X79+/bjnnnvYvXt3ndd88cUXGT16NN27d+eGG26o87W//vqr02e4+u/XX3+9oDGeL1tsp0+f9srnCyFEc6AoCpWVlV6NQbZ0+4kvvviC//u//2PFihUcP36c1q1b13jNf/7zHy666CLy8vKYMWMG999/P19//TUtWrSo9bpjxoxh27Zt7Nu3r87P79WrFz/99JP96xkzZlBaWsrMmTPtj4WHh9drTEajEZ1OV6/3CCGEaHy5ubnMmTOHnJwc3nrrLVq2bOmVOGSmxg+UlZWxevVqbr75ZgYNGsSyZctcvi4iIoKYmBh69OjBlClTOHnyJNu2bav1uk8//TS333477du3P2cMAQEBxMTE2P8LCgpyemzPnj3cddddXHrppfTr148HHniA7Oxs+/tts0mrV69m3Lhx9OjRg6+++gqTycSLL75of9/LL7/M1KlTefDBB+3vtVgsvP3221x//fX07NmTkSNH8s0339ive+eddwLQp08fkpOTmTZtGgDffPMNI0aMICUlhX79+vHXv/6V8vLyc99wIYQQdj/88AOPP/44Bw8eJCAggICAAK/FIjM1nmAyQWYmJCaC1vO3+OuvvyYxMZGOHTsyYsQIZs6cyQMPPFDnNuSgoCCg8fquGAwG7r77bpKTkykvL+f111/noYceYsWKFajVZ3PrOXPmMG3aNC6++GICAwN59913+eqrr5g5cyaJiYl89NFHrF27ln79+tnf8/bbb7Ny5Ur+/ve/k5yczO+//87kyZOJioqid+/evPHGGzzyyCN88803hIaGEhQUxIkTJ5g0aRKTJ0/mmmuuoaysjN9//x1FURrlfgghhK+rrKzk3Xff5dtvvwWgW7duPPnkk3XO/nuaJDUNzWSCyy6D33+HSy+FX37xeGKzdOlSRo4cCcCVV17J3//+dzZt2uT0g9/R6dOn+fe//01wcDApKSkejc1m6NChTl//61//4rLLLuPgwYN07tzZ/vhdd93FkCFD7F8vWrSIv/3tb1x77bUA/POf/2T9+vX256uqqnj77bf54IMPSE5OJjg4mA4dOrB582Y+++wz+vbta1/2io6Otv/Plp2djclk4tprryUuLg6A5ORkzwxeCCH8zNGjR5k1a5b9vL2bb76ZsWPHer3juiQ1DS0z05rQgPXXzExw+KHd8B+XyY4dO3jzzTcB0Gq1DBs2jKVLl9ZIam699VbUajXl5eW0b9+e1157jZYtW3LfffexefNmAGJjY1m1alWDx/nnn38yb948tm3bRmFhoX1G5NixY05JTffu3e2/Lykp4eTJk06Jl0ajoVu3blgsFgCysrIwGAzce++9KIpin50yGo1cfPHFtcbTpUsXLrvsMkaMGMEVV1zBFVdcwdChQ+td9yOEEM3NunXrmD9/PpWVlYSHhzNp0iRSU1O9HRYgSU3DS0y0ztD8/jv06WP92oOWLl2KyWQiLS3N/piiKAQEBPDPf/6TsLAw++Nz587loosuIiIiwml6cMaMGVRUVADWpMgTxo8fT1xcHC+++CKtWrXCYrFw/fXX11j+qu8xFbYamAULFtCiRQunAy3rWtfVaDR8+OGH/PHHH2zYsIGPP/6YuXPn8vnnn7tVQySEEM1NRUUFb7/9Nt999x0AKSkpPPHEE0RFRXk5srMkqWloWq11yakRampMJhMrVqxg2rRpDBgwgIqKCvuBjg899BD/+9//GDt2rP31bdu2pUOHDjWu42qnVEMqLCzk8OHD9oJfgN9ts1l1CAsLo2XLluzYsYM+ffoA1oNHd+/eTZcuXQBISkoiICCAY8eO0b17d5enq9t2UJnNZqfHVSoVvXv3pnfv3jz00ENcddVVrF27lrvvvvuCxyyEEP4kOzubWbNmceTIEdRqNbfeeis333yz15ebqpOkxhO0Wo8uOdlkZGRQXFzMTTfdRGhoKOXl5fYf6kOGDGHp0qVOSU19ZWVlUV5eTn5+PhUVFezZswc4m0i4Kzw8nIiICD777DNiYmLIzc3llVdeceu948aN4+2336ZDhw4kJiayaNEiiouL7YlLaGgo99xzDzNnzqSiooLLLruM0tJS/vjjD0JDQxk1ahRxcXGoVCoyMjIYOHAggYGBHDx4kF9++YXLL7+c6Ohotm3bRkFBAYkenlkTQghfoigKa9as4Z133qGqqoqoqCgmTZpEjx49vB2aS5LU+LClS5cyYMAAwsLCauzaGTp0KO+99x579+4lNDT0vK7/9NNPs2nTJvvXN954IwDfffcd7dq1c/s6arWauXPn8uKLL3L99deTkJDA008/zR133HHO995///2cPHmSqVOnotFouOWWW7jiiiuc/nUwceJEoqKi+PDDD3nxxRcJCwuja9eujB8/HrDORD3yyCO88sorPPXUU9x4443cf//9/PbbbyxcuJDS0lJiY2OZNm0aAwcOdHtcQgjhz8rLy5k/fz4//PADYO1H9vjjjxMREeHdwOqgUprRHlaz2czWrVtJTU2tMWVWUVHB4cOHSUhIsG939iWKojjN1Pgri8XCX/7yF/7yl78wceJE++OeHn9T//tR19/t5qK534PmPn6Qe9CQ4z98+DCzZ88mJycHtVrN7bffzpgxY5xacDQmd8cmMzWiScvJyWHDhg306dOHqqoqPvnkE3JychgxYoS3QxNCCL+jKArp6em8++67GI1GoqOjmTx5Ml27dvV2aG6RpEY0aWq1mi+//JJZs2ahKAqdO3fmww8/JCkpyduhCSGEXykvL+fNN9+0H3lz6aWXMnHiRK8206svSWpEk9a2bVs+/fRTb4chhBB+7eDBg8yePZu8vDw0Gg133nknN9xwg9eWm86XJDXVNKMSI1EP8vdCCOGPFEVh1apVfPDBB5hMJmJiYpg8ebK9bYavkaTmDFsvk/LycvR6vZejEU2NrcmfnBouhPAXpaWlvPHGG/zyyy8A9OvXj0cffdSpaauvkaTmDI1GQ0REBCdOnADwuV1EiqJQWVmJWq32qbgbiqfGb9tVdeLECSIiIprljgohhP/Zv38/s2fP5sSJE2i1Wv76178yYsQIn//5IUmNgzZt2gDYExtfoigKRqMRnU7n838pz4enxx8REWH/+yGEEL5KURRWrFjBwoULMZvNtG7dmilTptCpUydvh9YgJKlxoFKpaNu2La1atapxJlFTZzab2bt3LxdddFGznE3w5Ph1Ol2zvKdCCP9SUlLC66+/bm+qOmDAAB555BFCQkK8HFnDkaTGBY1G43M/xGznGgUFBflc7A2huY9fCCHqsmfPHl5++WVOnjyJVqvlvvvu4y9/+YvfzexLUiOEEEL4KYvFwrJly/j444+xWCy0bduWKVOm+G2vL0lqhBBCCD9UXFzMa6+9xubNmwFIS0vjwQcfJDg42MuReY5vddVx8M4775CcnMyMGTO8HYoQQgjRpOzcuZPHHnuMzZs3ExAQwEMPPcSkSZP8OqEBH52p2b59O59++inJycneDkUIIYRoMiwWC//973/59NNPsVgsxMXFMWXKFBISErwdWqPwuaSmrKyMyZMn8+KLLzJ//nxvhyOEEEI0CUVFRXzyySdkZmYCcNVVVzF+/Phm1VDW55Ka559/noEDBzJgwIDzTmpsO2X8iW1M/jg2d8j4m/f4Qe5Bcx8/NO97sH37dubOnUtRUREBAQE88MADDB48GPCP++HuGHwqqVm1ahW7d+9m6dKlF3SdHTt2NFBETY8/j80dMv7mPX6Qe9Dcxw/N6x5YLBZ++OEH1q9fD0BMTAw333wzUVFRbN261bvBeYHPJDXHjh1jxowZfPDBBwQGBl7QtXr06OF3vUzMZjM7duzwy7G5Q8bfvMcPcg+a+/ih+d2DgoIC5s6dy86dOwEYPHgw/fv355JLLvG78dv+bM/FZ5KaXbt2cerUKUaPHm1/zGw289tvv/HJJ5+wY8cOt/8QfbG5nrv8eWzukPE37/GD3IPmPn5oHvdgy5YtvPrqqxQXFxMUFMSECRNIS0tj69atzWL8tfGZpKZ///589dVXTo899dRTJCYmcv/99zfbP0AhhBDNh9lsZvHixSxduhRFUejYsSNTpkyhXbt2flE7c6F8JqkJDQ2lc+fOTo8FBwcTERFR43EhhBDC35w8eZI5c+awe/duAK677jruvffeCy7J8Cc+k9QIIYQQzdXvv//O3LlzKSkpQa/X8/DDD3PllVd6O6wmx6eTmo8//tjbIQghhBAeYzKZ+Pjjj1m2bBkASUlJTJ48mdjYWC9H1jT5dFIjhBBC+KsTJ07w8ssvs2/fPgCuv/567r77bnQ6nZcja7okqRFCCCG8ZNHGLOZnHGLCoCTG9Y+3P75x40bmzZtHaWkpISEhPPLIIwwYMMCLkfoGSWqEEEIIL5mfcYicIgPzMw4xrn88RqOR//znP/bdvp06dWLy5Mm0adPGy5H6BklqhBBCCC+ZMCjJPlOTl5fH7NmzOXjwIAA33HADd955pyw31YMkNUIIIYSXjOsfz7j+8fz8889MnDiP8vJyQkNDeeyxx+jXr5+3w/M5ktQIIYQQXlJVVcUHH3zA6tWrAejSpQuTJ08mJibGy5H5JklqhBBCCC/Izc1l9uzZZGZmAjB69GjGjRuHVis/ms+X3DkhhBCika1fv5633noLg8FAixYtePzxx+ndu7e3w/J5ktQIIYQQjaSyspL33nuP9PR0ALp27crkyZOJjo72cmT+QZIaIYQQohEcPXqUWbNmkZWVhUql4uabb2bs2LFyIHMDkqRGCCGEaCC1NdP7/vvvmT9/PhUVFYSHh/PEE0/Qq1cvL0bqnySpEUIIIRpI9WZ6FRUVvP3223z33XcA9OjRg0mTJhEVFeXlSP2TJDVCCCFEA3Fsppednc2sWbM4cuQIKpWKW2+9lVtuuUWWmzxIkhohhBCigYzrH8/t/Tqwdu1annjibaqqqoiMjGTSpEmkpKR4Ozy/J0mNEEII0UA+XL+fTxe+R2D+XgBSU1N54okniIiI8G5gzYQkNUIIIUQDOHz4MEvfnEFgRSEKKnoMHM5zj9+HWq32dmjNhiQ1QgghxHlatDGL+d8fZEh4Htu/+xKN0YhRG0JW3NUUGBMloWlkktQIIYQQ52nB2t1o9n7L5tOHALj00kuJu2IMH2w6zoRBSV6OrvmRpEYIIYRwUFuvmeoOHTpEhwP/pfT0SVRqNXfdeSc33ngjarWaewd3a8SIhY0kNUIIIYSD6r1mqlMUhVWrVvHBBx9gMpmIiYlh8uTJdOnSxQvRCkeS1AghhBAOHHvNVFdaWsobb7zBL7/8AkDfvn157LHHCAsLa+wwhQuS1AghhBAOxvWPdzlD8/qXP/DtknfRVJ5GrdZQ0uFy4q++SRKaJkTKsoUQQggHizZmcflL61i0MQuwLjetWLGCtQvnoqk8jTmwBQXdbuZQ8MUs+CHTy9EKRzJTI4QQQjhwrKm5oVsUr7/+Ops2bUIFVEZdxP/99X4CgoJrLFG5W2AsPEeSGiGEEIKzSUnv+EgAbr5IzWOPPcbJkyfRarXce++9DBs2DJVKBViXqWyzOrY6nLoKjIXnyfKTEEKIZqf6EhOcnaHZ/GcBT3QqJGPRa5w8eZK2bdvy8ssvM3z4cHtCU/09thmauAi99KfxIklqhBBCNDuOyYjNhEFJtAuBbifWsHDhQiwWC1deeSVz584lKcl1ouKYyIzrH8+GaYNllsaLZPlJCCFEs1N92/aijVm8u3I9cVlryCspIiAggPvuu4+hQ4eiUqlqrZepbaeU8A5JaoQQQjQ7jsmIxWLhP4uW0CL7FwwoxMXFMWXKFBISEuyvl3oZ3yDLT0IIIZqtwsJCHnh8GsHZP6NCIaRjT1599VWnhAaQehkfITM1QgghmqVt27bx6quvUlhYiEWlJaft5QS3TeWLbSdqLDXJMpNvkJkaIYQQPsvVLqZzMZvNLF68mH/+858UFhbSomUbjnQeQ1FEF3p3jHJZRCx8gyQ1QgghfFZ9E5CCggIemDiFTz/9FEVRuOaaa3h//huoQmNQgPX782WpyYfJ8pMQQgifVdfhk9Vt2bKFV199leLiYswqLfnt0visvDtRW/KoNJkBqDSZZanJh0lSI4QQwmc5JiBms9nla8xmM0uWLOG///0viqJQpY/mcOzVVAVGothneWxN9VQuryF8gyw/CSGE8CuLf82219mcPHmSf/zjH3z++ecoikJir8u59eG/07J1LCN6xtqXmQK11h+Htl+Fb5KZGiGEEH5h8a/ZzFt7girlFMUGI+8tW8vyP9dSZSjDrNZxtG0ae4yd+Gr1foanxDJvbC+n97taxpJDKn2Lz6Skb7/9NmPGjKFXr15cdtllPPjgg2RmypHvQgghrBaszyS/3IJKMdGp6Hda7FlBlaEMQ1BLDiSOoTj8IowWBbMCq7bnOr23tiMOZCeUb/GZpGbTpk3cfvvtfP7553z44YeYTCbuvfdeysvLvR2aEEKIJmB8WiKtNWX0Ov4N+tzNAIR16kv+xTehCYlyqpYZnhLr1jVlJ5Rv8Znlp/fff9/p65deeonLLruMXbt20adPHy9FJYQQoqm4SJVH7L6lnKqqwKIJILvtQMJiurF12mDA9VLSuZaXZCeUb/GZpKa6kpISAMLDw+v93toq5H2ZbUz+ODZ3yPib9/hB7kFzHv+inzNZtOhj9Me2AlAeFEPhRUMJaxHN+LQE+z0Z26cdY/u0A87ep/kZB8kpqmB+xkH7c77Kn/8OuDsmlaIoiodjaXAWi4UJEyZw+vRplixZ4vb7zGYzW7du9VxgQgghGk36oXJWbsulxcFvCTLkA9CmS2+2BPcmOUbPvlNVjOoSytCk4DqvsWxv6TlfJ5qG1NRUNBpNrc/75EzN9OnTOXDgAIsXLz6v9/fo0aPOm+KLzGYzO3bs8MuxuUPG37zHD3IP/H38i3/NZsH6TManJQLWomBz3n6i//wOjaUKizaQy0eOY0iPdvTo0YOrXv2R/HILqzKrmDpmQK3XTU2FqY00Bk/z578DtrGdi88lNc8//zwZGRksWrSINm3anNc1NBqN3/2B2/jz2Nwh42/e4we5B/46/gXrD5NTVMFzX+0mLEBF8J8/0qpwFwCB0e3IbDuYjw4F8EnmcaZWRjFh0EX2Whl/vB918de/A+7wmd1PiqLw/PPPs2bNGhYuXEj79u29HZIQQgg3nM+hk9VNGJSERgWaymLa7P2ClmcSmtOtL+FA/AhOWfQYjBZKqxQWrM+sdYu28G8+k9RMnz6dlStX8sorrxASEkJ+fj75+flUVFR4OzQhhBB1qKvXi6uEx9Vj4/rHc2+nSjof/pIAQz4WbRCH2/+FP6P7gEpDhF6HXqcmNEBlX6ISzY/PLD/ZCoLvuOMOp8dnzpzJ6NGjvRGSEEIIN9R16KRjwmObVameBM3/bh99qraQuWUDaqBr164kDr6VuT8eQ2W0kNY5hnlje9k3g6SmdmjM4YkmxGeSmn379nk7BCGEEOehrl4v1ROekW/8RE6RAbUKyipNvLZiI5EHvyazsgBQUdymN98E9eXJFpFEhRSQU2Rgc1ZhI45GNGU+k9QIIYTwP9UTnu05xQBYFODYLtrk/YTaYiQwOJT8jteSRSuoMNsTodpmgETzJEmNEEKIRuXYxRdw6uibEhfOjiMnicvbQFSRdYa+R48eTJo0idX7S5iTbn3M9nopBBaOJKkRQgjRqKrXzDjW1Lx5Qwf+/txHnC7KA1SUt+tL8vDbiIqKYlz/qFqTGGuidJDhiQGkpjbeWETT4jO7n4QQQjRt7m7ddjwk0vb78QMTWbt2LU888QSnT+YRFNKCP+OHc7BFKs+u3E3q9G/rvK41Uapg2d7Sescj/IfM1AghhGgQrnYyuVJ92Wjj/mO8++83iCg+AFhb4a/T9uF0ufXf3QpQZDDWeV1rfY11pqa+8Qj/ITM1QgghGoTjDIy7Dh8+zIGV/yai+AAKKsaNG8dzzz3HJZ3aoQJ0ahV6nbUPTfXrOs7EjOsfz/rJg5zObzqfeIRvk5kaIYQQDaL6DIxjQXD1mRJFUUhPT+e9994jsKoKozaE8i5/YeofITy7I51ArQYFMFoUWrUIYMO0wTU+71wzMVJI3PzITI0QQog6nW9tSm2dhMvLy3n4qen8+9//pqqqit69e/PZf97mqBKNAhiMFgAi9DqXMzQ2MhMjqpOkRgghRJ3qOubAUfXkx1XScejQIR5//HGO7P4DBRVl8VfwzDPP0KJFC4anxKIC1CooNhhJ6xzD1meH1DrbIuc7ierqvfxUXl7OO++8w8aNGzl16hQWi8Xp+e+++67BghNCCOF97ja5q74cZPtv0cYsLp/5HdeE5bLtu2VYzCY0weH8GTuYooBWTPxsG/PG9rL/l/TUKizAqu25zBvbq3EGKfxCvZOap59+mk2bNnHDDTcQExODSqXyRFxCCCGaCHdqUxZtzKKs0uRyuWjB2l1o9qSzpeQwAMWh8ZQkXctpkwZFcU5eFm3MIkCrocJopltsOJe/tM5lTY4QrtQ7qVm/fj1vv/02vXv39kQ8QgghfIRjIfD8jEMUGYzEReidEpADBw7Qfv9/KSs5hQU1ea37cTKqB3o0dIsNY3tOMWqVyr5k9eyKnZgViIvQc6qsSrZki3qpd1LTokULIiIiPBCKEEIIXzInfR9FBiNz0vfx5NBkpyUqRVFYuXIlCxcuxGQyERIexaG2V3NSHQVAoFbDqbIqwLrD6dkVOwkL0mFWQKOixhEKQrij3knNY489xuuvv86sWbPQ6/WeiEkIIYQPqTSZ7WcyAZSUlDD5uZfIPbADgMsuu4yjsQPZuKcQnVqFVqOm0mSm0mRGr7MuNZkV63tthcW2mRmZoRH1Ue+k5sMPPyQ7O5sBAwbQrl07tFrnSyxbtqzBghNCCNF0PTk0mTnp+yg2GO3bsF/5fB1LsteiqSrBolJT1O4Kpk2bxEV/X23vO2O0mO3XsCUx8zMO0Ts+ks1ZhV4ajfAH9U5qrrnmGk/EIYQQwkvqapLn6rlHl2xh1fZchqfEEhKopchgBEUh5tQ22pz4DRUWKnUtyG53DbRojUqloltsONtzip2ubSsqthUiX/7SOqmhERek3knNww8/7Ik4hBBCeEldnXldPbdqey7mM7uWpt/QnQVrdhKX8z2GE9azm4pbJHGkbRoWTQARWg2AvX7GRoV1psfx83rHR5JXbKB3fKQHRyv8mTTfE0KIZq62zry1bdMenhKLRmX9tVdYKTE7l2DIPYBFpYGLh1B80XUEBgURodfx5NBk+2dE6HXodWpUWA+prN7Mb3NWIWYFWYIS563eMzV9+vRx2ZtGpVIREBBAfHw8o0aNYsyYMQ0SoBBCCM+qrQ9N9W3aizZmMWPVHiqMZq5PacMVmgP84x+LsVgsVAaEk9XuWipU0VBhQqOCfwzvWqPg17F2pnoS5W6TPyFqU++k5qGHHmL+/PmkpaWRkpICwPbt2/nxxx+5/fbbOXr0KM899xxms5lbbrmlwQMWQgjROCYMSmJO+j7KKk322hqD0YzGZGDnV++TVXYUgKLwThxteyUWtc7+XrNi7Tnz7IqdDE+JZd7YXvalLMDlAZVyAKW4UPVOajZv3szEiRMZO3as0+OffvopGzZs4I033iA5OZmPP/5YkhohhGgE1oTjIMMTA0hNvdDrHHIq3nWsqZkwKIlXP1tL66w16EzlWFRayhOv4khAAsqZGXyNCvv2bNuvto7BMhMjPK3eNTU//fQTAwYMqPH4ZZddxk8//QTAwIEDOXLkyIVHJ4QQ4pysiUcFy/aWnvO1dZ24Xf3gykUbsygoqwSgoNTAtyu/IO7QSnSmcgiJJjNxFN37XkGPdhEApMSFM/2G7uh1zj9ahqfEAnIApfC8eic14eHhfP/99zUe//777wkPDwesh16GhIRceHRCCCHOyVroG8SoLqHnfO2c9H3kFBmcmuU5X0fv1M3XYLSgNZbR5uBXFO3MQIVCQUQyO9rfQHlgFCu35ZJdUA7Ajpxi5qTv4x/Du5ISZ/15kBIXzryxvepMpoRoKPVefnrwwQd57rnn2Lhxo72mZseOHaxfv57nnnsOgJ9//pk+ffo0aKBCCCFcG9c/nrF92rF169YLvo7jLMqEQUm8tOgb2uesQ2c2oKh1HGlzBUURnZ3eV2myNt5TgCKD0WlXk20rd13bxoVoKPVOam655RaSkpL45JNPWLNmDQAJCQl8/PHHXHLJJQDcc889DRulEEKIBlH9jCZHizZm2Wdwnrj2ItSZP5OQvQoVYAiM4ki7a6gItPaQ0WlUGM8UzRiMZqfruDq3SeppRGOod1ID0Lt3bzmlWwghzlNdHXw9ra4dRrYt3FpjGYvenE1QaS4qoKRlN4raX4nKogKjhQi9jq3PDrF3AHaUEhfu8twm2dkkGoNbSU1paSmhoaH239fF9johhBCueWMpxpZI2XrEVO8VMyd9H5UmMxHlR4g9sg6tuQKzWkdubBqT7ryRcf3j7ccjpHWOAayzL88s34kC9oZ6tuWm6p/njQROND9uJTV9+vThp59+Ijo6mksvvdRl8z1FUVCpVOzZs6fBgxRCiNrYfniOT0uga6C3o3FPYyzFVJ8NsiVSecUGzAr2GRZbMmOoMtLmxG+0OrUNAENQS7LirqEqMNyefLnq+Buut/amSesc45QkVf88qaURjcGtpGbhwoX2nU0fffSRRwMSQoj6sP3wXLA+k3nXRng7HLdc6FKMO8tX1WeDHE/Ctp3dZGMqLybp6HeEGI4DcDKyGyfbXsZ1PdvbZ3Uuf2md/Uwmx8TF1nF43theTp/v+Hnr9+fbG/hJYiM8ya2kpm/fvi5/L4RohkwmyMyExETQnldZXoOy/fAcn5YAFHg7nEbhzvJV9dkgx0Sqb0KUfYZGX3SYuD/XojFXYlYHcDR2IMUtEgFYuS2XkT1jWb8/nyKDkbJKE1ufHVLrZzhy/Dw5fVs0lnr3qVm/fj2///67/etPPvmEG264gUmTJlFcXFzHO4UQPs9k4mRKb0hOtv5qMnk7IntDt9v6dfB2KI3G1QGUi3/NZvyqEyz+NfucMznj+sfz+DVJRB79iZhDq9CYKykPiiG7883EX+w847Jqe67990UGIxc/87W914y7zfRqOzBTiIZW76Tm5ZdfpqysDIB9+/Yxc+ZMBg4cyNGjR3nppZcaPEAhRBOSmUnLPdsBrL9mZno5oObJVTIxZ80B8sstzFlzoEZnYHDuJLzgm818PG8mLU/tAKCwZQqHEm5AExJJdkE5OvXZukmzAh2igu1fG4yWGqdrn0+8QnhCvZOao0ePkpRkzba//fZbBg8ezBNPPME///lP1q9f3+ABCiGakMRETl5sbbp58uIU6xKUaHSuuvOqUOy/upoZsSU6cz5eyVcLZhJsOIFJHcCf7YeS0/oyFJWG0xVGigxGjBaFCL0OzZncZlduMSN7xqIC9Dq1zLiIJqveSY1Op6OiogKwdg6+/PLLAevxCefa7i2E8HFaLS23b4Z9+6y/Vq+pMZlg//4msSzlz1zNxFzZqSVqFbSPCna59PS3KzoQl/cTHY6sQWOpokzfigOJN3E6rCOWM0XDFsX5c4anxKJRYT9l+/BLw9nzwl9kxkU0WfVOai655BJmzpzJW2+9xY4dOxg0aBAAf/75J23atGno+IQQTY1WC507u0xomlq9jb9yNRPzR3YRFgV2556ukfDk5uay9Yu3iC7YBYAhtjeHOo7EGBDmdF21yjoTE6HX2bdoT7+hu5zdJHxGvZOaf/7zn2i1WtLT03n22Wdp3bo1YC0gvvLKKxs8QCGEj5B6m0bjWKNiSzYu6RBBTLCaYT3a2BOeRRuzuOrJBTz86EQOHTqEWRPE4fbXcTDiUlBpalzXokBUSCBbnx3C5qxCp+TI1eyQEE1NvfdjxsbG8vbbb9d4/O9//3uDBCSE8FFn6m1a7tlu/VXqbRqFLdkorTQRoIK+HaN447beVFZWct2E5wg7uQsT0LJdIr+EDMCgCaFm+9SzbP1kqm/XlrObhC84ryYT2dnZfPHFFxw5coR//OMfREdH88MPPxAbG0unTp0aOkYnn3zyCe+//z75+fl06dKFZ555xn5auBDCi2z1NpmZ1oSmCfSw8XW1bc12fHzCoCTmpO+j2GBEwboL6p30zXTMWUvYyVwU4ETLXmS3ugxDhfXgyWqlM+jUKiyKQoBWbT9lu/puJTm7SfiCei8/bdq0iREjRrB9+3a+/fZbysvLAev27jfeeKPBA3S0evVqZs6cyUMPPcSyZcvo0qUL9957L6dOnfLo5woh3FRbvY04L9WXfBZtzCJ1+rc8s3wnOUUGnlm+kxmrdtsTGrUKQk7tpcXWxRSfyCUwOJTDHYZxvFVfyqos9utqVNb/4iKC0KhAq1FhViBQq5F+MsKn1TupeeWVV5g4cSIffvghOp3O/nj//v3ZunVrQ8ZWw4cffsgtt9zCmDFjuOiii5g+fTpBQUF88cUXHv1cIcT5kwLT+rPds97xkcRF6OkdH2lPZorOJDBgnXExGC0ogFYxclXFz7T8cy0axURMh04MuXcaZaHtATCe2dqkUUFYkA6zAnnFFU7JzJNDk6WfjPBp9f7n1P79+5kzZ06Nx6OioigsLHTxjoZRVVXFrl27eOCBB+yPqdVqBgwYwJYtW+p1LbPZ3NDheZ1tTP44NnfI+Jvu+OdnHCSnqIL5GQcZ26edxz6nse/B4l+zWbA+k/FpiQ3ezdh2z0Bh/eRBpL2cQZHB6PQarVqFTqPCYLQQbi6ix6kfyD+ZhwJ0u/w6nn/8PvrMzKix1KRg7Qys16m5qFUou3NPc2WnaF77v1Sgaf4dcldT/v+gMfjz+N0dU72TmrCwMPLz82nfvr3T43v27LHvhPKEwsJCzGYz0dHRTo9HR0eTWc9dFjt27GjI0JoUfx6bO2T8TW/8wxMDWLa3iuGJAR6fzYXGuwfz1p4gv9zCvLV76RpY88yp9EPlLNtbyqguoQxNCnZxhdpVv2fDEwN4948KpwTFZFEwWRQii/YRd+wnTismTNpgsuIGk1fZnpt37MDsYlu9rRdNpcnC4fwSzAp8v/d4o/zZNJam+P9BY2rO4693UjN8+HDmzJnD66+/jkqlwmKxsHnzZmbNmsWNN97ogRAbXo8ePdBoam5n9GVms5kdO3b45djcIeNvuuNPTYWpjfA5jX0PHq08O1OTmlpzpubRNRnkl1tYlVnF1DED6rxW9Vkf2z278d8/884fecRGBNFCr0OFQpHBmqioLUZij/1EVPF+AEpC4jgSNxizNpjBF7UiNTWVq/Zt5X/b89BqVGjOHH1gMluToUCtGpMCoKDVaEhNTW24m+MlTfn/g8bgz+O3je1c6p3UPP744zz//PMMGjQIs9nM8OHDMZvNXH/99UyYMOG8gnVHZGQkGo2mRlHwqVOnaNmyZb2updFo/O4P3Mafx+aOeo2/iZ023RCa+58/NN49uGNAAncMSKj1+QmDLrLvUDpXPAvWHyanqIIF6w87XXNHzmkAcousXdzjIvR0iAph/6FM4nPWElhZhIKK/FaXkhedCiprmeQf2cVoNBr+yC5GAYxmhVZhQWyYNhg4e2p2hF5HdEigWzH6kub+/0FzHn+9v5MHBATw4osv8uCDD3LgwAHKysro2rUrHTt29EB4zp/brVs3fvnlF6655hoALBYLv/zyC+PGjfPoZws/dKb7rb2niquW/0JcgPpsgXbsAWPbrh0dEmB/Xq0CRYGcwnIMh//gorwNqBUzRm0w2XFXUxYSi16nRoOCRqt16i0zJ32f/feuPk+KgoU/Oe/v4rGxscTGxjZkLOd09913M3XqVLp3705KSgoLFy7EYDAwevToRo1D+AFX3W87d/ZyUB7gh7NR/sKx14wj2zbunCKD/TGLAmpzFe2PrSfitHV79+mQ9hyJuwqzVg9AgFbDB9dHk5qaes5/pUvPGeGv6vVdrry8nHfffZc1a9aQk5MDQLt27Rg6dCj33nsver3eI0HaDBs2jIKCAubNm0d+fj4XX3wx7733Xr2Xn4RoFt1vZTaqSbIlMwVllRiMFuak7yMkUEtOkYFnV+xkeEosecUGzGcKenVqFZqyfOJz1hBYdRoFFXmt+pIf3ROVSsXInrFszipkfFoC4FywPD/jkH3X1Jz0fZLICL/n9ne4qqoqxo0bx4EDB0hLS+Oqq65CURQOHTrEggUL+PHHH1m0aJFT7xpPGDdunCw3iQvXHLrfNpfZKB9jm4mxHVVQbDCS1jmG3CJrIrNmdx4BWjUGowUUhRYnd9H2+M+oFQtV2lCy211NebD18OAgnYb1+/NJ6xzDgvWZDE8MYHdlNq+sOQBgv271bd1C+Cu3v5MvWbKE48ePs2LFChKr/av20KFD3HnnnXz66afccccdDR6kEB5h637rrzw9GyVLW+fFVudSaTJTcaZx3uasQrRqFUaLYk1mALW5kna564kosbasKG0RT1abQZi1QfZrGYxmDEYzX22zHofw7h8VtNhzgOIzszObswp54cbucmaTaDbc7ii8Zs0aHnzwwRoJDUBSUhLjx48nPT29QYMTQlyYlkuXwK5dDb/0dGZpi+Rk668u+qEI192Ux/WPJyRQi8FoIUinQQUUlFXZO/4C6A0n6JT5BRElmSioyW19GZlxQ50SGgC9TkOEXkeQzvqtXAFUKETodUTodfZCYOkSLJoLt5OagwcP0rdv31qf79evHwcPHmyQoIQQF8iWdHTrxsmbxjb89V0tbYkabEtNz67Y6ZTYTBiURIReR4XRfOaogzPdUhWF6FM7SDq8gkBjCVW6MI50GsWAwdehUp09W9v2u6iQAJ4cmkygVkOQTk1ogIpJ13Zm67ND2PrsEElkRLPjdlJTUlJCRERErc9HRERQWlraEDEJIS6Up5OOM0tbgPVXfyy0bgATBiWhUYFZsSY4tpkbgJBArVOti85cQfzRb4k7/jNqLBSHdSRp5ENsfeUu5o3tZZ+N0evUvHBjdyL0OsoqTcxJ30eRwYjRZOG27mENfmSDEL7E7aTGYrHUuU1QrVb75XkTQvgkTycdtkLrfftkV1UdxvWPZ/oN3e0nX9tmbuak76Os0mRfJgouP05S5heEl/yJRaUmp83lZLUbwrqDp50SIbAePmmbgSkyGCkyGFFhTZwW7ywh7eUMOTxUNFtufydSFIW77roLbS3fvEyypi5E09EYu7v8vdD6AizamHWmGNhCoFbNk0OT7YnIjFV77Nus9VoVIXlbaX9iEyosVOpakN3uGgz6GAAqjGZ7IqTXadCorDuaqgvX6wgJ1FBcVnnm8NBDsvQkmiW3v9M9/PDD53zN0KFDLygYIUQDkqTDYxwb59mSB9tjveMjWbU9195nxmA0Myd9HzNW7bHX0ABoTAZaZ2fQojQbgKIWiRxtm4ZFE2j/nBE9Y+mbEGXva2NWYP3+fPtMjF6nJlCr4cmhyYzt045ZX/zMqswq2ekkmq0GTWqEEE2IbLn2GNvsieOMiO0xW+M8FdY+MoFa6yq/vRgYCC4/Roej3xFgKsOi0pDbegAFkReDQzHwizd2t197XP94Uqd/a9/ubWuqFxeht5/nZDabGZoUzNQxA5rtuT9CuF1TI4S4ACYT7N/feFufZcu1R00YlGSvk3F8LEKvI0CrRq/TEK7X8Y/hF7P12SE8OTQZ3ZkDnGJObiHpz68IMJVRGRDOwYRRFER1JaVdBBH6s81LbWc22Tw5NJm4CD1pnWPs9TgyIyOEM0lqhPA0byQYsuW60Tn2nzEYzRQZjDy9fCcXP/M1c9L3EaauIiF7NW1PbEKFQmH4RRxIGE1FUDQ6tYrsgnJ70S9ApclC6vRvSZ3+LYs2Ztn7zWzOKqTIYCQkUOtUN7P412zGrzrB4l+zvXMDhGgCJKkRwtO8kWBc4O4nV03jxFmOy0+ObFu4HRmMFowns2i9+1PCyo5iUWk52nYgR2IHY9FYT+K2Nd6Li9AzomcscRF6QLHvbnL8HFezRAAL1meSX25hwXpJYEXzJQvtQniaNw7PvMDdT65qRporxwLgzVmFTBiUZN+e3Ts+ktTp3wLQISqYHTnFzr1nVAqRJ/6gdf5mVCgYgyLJ7XAtxdpIp89QgdMOKcBeQ6MCpwSmthO2x6clMm/tXsanSc8g0XzV6zud0WjkvvvuY/r06XTs2NFDIQnhZ7x1eOYF7H6y/dBuyjUbrnYgeUL1AuAZq/ZQZTIzPCXWvhQEUJRT7PQ+ramcdke/I6w8F4CC8M4UtE/DYHEu4tWoYPoN3WuM4cmhyS7HZ9subnuNLcbxaQksGN6K1FRpviear3p9d9XpdOzbt+/cLxRCOPOx7dW1zQY0JY01m+Q4K7M5q9B+6vXKbbmM7Bnr8hTs0NKjtM9Zh85sOLPcdCVFEZ3BAmfqhYmLCAJUtSZljn8GjgmcbeeT7R4A5BQZWLA+k3nXRnjsPgjhC+pdUzNy5EiWLl3qiViEEMJttdWWNATHmqJx/eOZMCjJvvTUIy7c/jrbKdj2MhrFQusTv5GQvQqd2YAhMIrDF40hbeAg+2uUMxlQblEFZZU1i8Zd1TM5JnC2XVa23U+2+yDLTkKcR02N2WxmyZIl/Pzzz3Tv3h29Xu/0/FNPPdVgwQkhRG0aajbJVc1M9Vkg2/lKzyzfSfiZbdca1dlal3C9jrLTRbTP+Y7Q8mMAnIroQm6by1HUWnvyM2PVbnuvGQXs15yTvs++lPTsip32s6IAe2yAfVan+rjH9Y/HbDazdWvBBd8PIXxZvZOa/fv307VrVwAOHz7s9JzjKbJCCNHUVK9HcUxYcooMAPYEwzYrsmhjln25RwHKqkxoVNAtNpz5GYcoqzRhyj9Ep5zv0ZorMKt15LRNoyj8Ikb2jLUnSoA9oXFkS25sSYxZOZsw2ZIrwN5kTwhRu3onNR9//LEn4hCidu50xjWZCMzKgu7dQbqpilpUr0dxNdNTaTLbZ0MWbczimeU7nZ43njn/YHtOMShm2pz4nVantgJgCIomK+4aqgIjAOibEMW8sb0A7LukAHRqFRZFsXceDndopOfYdM8XCraFaErOextGVlYW2dnZ9OnTh6CgIBRFkZka0fDONK6zb4d2dSK0yURhah+6791BQWJnonZtg6Ag78QrmrQJg5LsSYNtFqbSZEYFaNUqjBaFCqOFR5dsYXNWIWWVphpFwDY6Yykdjq4lxHAcgJORXTnW+jIU9dm/n8+usCZEjsmTCnh2ZDcAp2Uv2+scl742TBvc5Au2hWhK6l0oXFhYyF133cXQoUP529/+Rn5+PgB///vfeemllxo8QNHMudO4LjOTlnt3ABCVuZ/CbqkN17W3sY838FGN3azvfD7PVjvz5NBktj47xJ5AGIwWFMBkUVBhXQ5atT3Xvuzj6p9qYSV/0ilzKSGG45jVAWS1u5bctlc6JTQaFU61MU8OTSZCr7PX5Dh2CHZs5OfJAmgh/F29k5qZM2ei1WrJyMggyOFfw8OGDePHH39s0OCEcKszbmIiBYlnt0tHZu5rmK69/nB+UiMlZbV12G0o1ZOY8/k8x/c8umQLSU+tIjokwH7eknLmvwi9juEp1q6+HaKCAetyEYBKMdM27xcSjqSjNVdSHhTDgcQxFLeo+ffSdg1bcmI7RuFcHYJtyY7M0AhRf/VOajZs2MDkyZNp06aN0+MdO3YkNze3wQITAjjbuG7fPtdLT2deE779D060t/5gOZ9jAVzy9fOTGjEp8/TsQvUkxratuazS5PZsjWOMX23LxaxY62LSOsc4zcbYam4mDEpi+5kOwSaLQrCphKTDK4kpsP6dyI/qzqGON1AV0MLl563clmvftWRLyFzdJ1sSAzid9SSEqL96JzXl5eVOMzQ2RUVFBAQENEhQQjixNa6rqxNvUBBH/rsY8+7dtSc/9XWB5yd5XSMmZZ6eXXA1m+Fq1sNdQbqz3/q+2pZbo25m5bZcZqzabf867PRhEg4uJbjiBCZ1AH+2G8KxNpcTFKijLqu25zInfR85RQZ7wbGt+NeWuNhmoWy7sM53TEKI80hqLr30UpYvX+70mMVi4b333qNfv34NFZcQ9edO8lPP651zlqgp8/WkzIGrpKm+s0O22Z456fsI1J7dIRekU7usmzEYLagsZmLzNtDx6LdoLFWU6VtxIPEmTrdIsL+mOr1DwmRWrFvAwbq0NT/jkD3JsRUsO27bdmyqJ4Sov3p/l548eTJ//etf2blzJ0ajkZdffpmDBw9SXFzMkiVLPBGjaC7c2brd2Lx8vMEFnW/krTOnGkl9m+/ZZkjKKk0UGYxE6HWEBGrpHR/JV9tqLp0HVBXT4ehagitOApAfncKxVn1B5bplgDWZURGoVfOP4V3tTfRMZsVet+O4+6p6XJ4+w0qI5qDe3+U6d+5Meno6ixYtIiQkhPLycq699lpuv/12WrVq5YkYRXPgztbtZuiCzzdq5KSssQ6ZrG8sYL2X0SEB5BYZ0OvUpHWOYf3+fJfLT+HFh2h37Ac0FiMmTSBHYq+iJOzseHRqFajO9qyBs7M2BqOZ+RmHGJ4Sy6rtuQxPibX3qrFxjMsXztkSwlfU+6dGbm4ubdu2ZcKECS6fi42NbZDARDPjqv7Dhw6A9BRfa77W0IdM1pYkuZM82WJ5dsVOwoJ0Tl2DDUYLK13MzqgsJmKP/0J0obWepkzfhhMdr0UT3AIMzoXWjgmNI1s34HH942skMyBJjBCeVO+amquvvpqCgprnixQWFnL11Vc3SFCiGfKj+o+G5Gvbext6F1RtW7drezz9UDlpL2fw6JIt9sMizcrZHU21UQEBlUVcdHi5PaE5EZ3KoY4jaBEZTUi1gmCjpWZCExcRRFyEnuk3dPeZPy8h/E29k5raOgeXl5cTGBjYIEGJZsjXi3IbkduN57zQOLChk7DakqTaHl+2t5ScogpWbsulyGB0KgDW6zRoVK6b6YUXH6BT5hfoK09h0gSR2WEYea37gUrNidMVFJRV2t+nUUFKXDga1dn+NVYqe82MbMsWwjvc/skxc+ZMwHpo5WuvveZ0OrfZbGb79u106dKl4SMUzYeXi3J9hVtLPB6oUfJGvUz1pRrHGBwPeLQ+fpDk6AAKDBX2QyGHp8SyZvdxKoxmru3aGsBp2UllMRKX9zNRRXsBKA2OJTtuMCZdiP01RouC0aKg12kI1KqpNJnJLihn+g3dAewnbxeUVdq3ZYPzKdtNocZIiObA7e9yu3dbp2QVRWH//v3odGenYwMCAujSpQv33HNPw0coRGNqijuwHCzamEVZpenc2349UKNk+4E9J32fR35AuzpBu7raEjpbbCdPQ1iQlkqTgsls4attuWjVKhRq9qMJrCwk/ugagioLUYATLS/heExvULmewA7Uqu29cQxGi/1sJltMtkJhx51ODV1jJISom1vftT/66CPeffddgoKCeOqpp/jHP/5BaGiop2MTonG5mt2AJpXk2E6ZjovQ1/1D8kyNkn0sTbxGadHGLPsWaHB9ECTULJy2zdxUmqwJRaUFKg0m+xlOcLb+xTGhiSzaR9yxn1ArJowaPUfiBlMa2q7W+FRYEy3A6UBM26/PLN+JAgRqNWx9dojTe32p0FsIX+dWTc1LL71EWVkZAMuXL6eystKjQQnRKKrXnFSf3di/v8md/eR2Ia4HapSeHJpMXITe/sO9Ic3POIRZsSYPKpwPgnRUvWbH1sjOYDQ71coogNpF8YzaYqRdzve0z81ArZgoCYnjQNJNdSY0cRF6RvSMtcez9dkh9gMxbTGN6BmLRgVpnWPqjFcI4Vlufadr1aoV6enpDBw4EEVRyMvLqzWxkS3dokF5ajnI1axM9dkNaHLbzOu1HbiBa5Q8uRW5+gzMnPR99nOd3P3MIJ2aijMnbgPYNijZZm2CKk7R4ehagqqKUFBxPOZSTrRMrbHcpNOoMJkVFKw7miYMSrLPItlmkMC5VmZzViFmBTZnFdYZY1Pq4yOEP3Lrp8SECRN44YUXeOGFF1CpVNx00001XmPbFbVnz54GD1L4sAtJSjzZkK+WmhOnDrzgU0s4vqx6wlS9FqV6I7056fvOLDkp6NQqjBbFXtMSpFNjNFnsS1koCjHF+2h97CfUihmjNpjsuKspC3H9DzDH/jMFZVVOy2KOM0iO8bnbT0hqbITwLLd+Qvzf//0fw4cPJzc3l5EjR/Lhhx8SGRnp6diEr7vQpMSTDflqqzmpNrvhz8cMNGXVkwRbMmCrXXGkcVhmOtPoF7Ni3W5tNlYSd+xHIk8fBOB0SHuOxF2FWavHHbaZH9tOqs1ZhU4x1bcrsK81UxTC17j9XTo0NJTOnTszc+ZMevfuXeNE7tOnT7Ny5UrZ1i3OutCkxJPFru6eiyTbzL2iepLQOz6SnCJDjYQGIEBrXXYK0qnp3SaAn45UAKApzyfx6FoCq4pRUJHXqi/50T2hWp8t2/KUY3GxRgVtwvVEhwSwK7eYbrHhLhOa+s62SDdhITyr3v/0HDVqlNPXv/zyC0uXLmXNmjXo9XrGjRvXYMHZHD16lH//+99s3LiRkydP0qpVK0aOHMn48eNrJFeiCbnQpMTTBzJKwtJkVd/ebatVUWFdXgLHs5bOnpT905EKUBSiCncTe/wX1IqZKm0I2e2uoTy4jcvPUqr9CtZ6nA3TBnP5S+swK7Art7jWpSchRNNxXj8ljh07xhdffMGXX37JsWPHGDZsGG+++SaXXXZZQ8cHQGZmJoqi8PzzzxMfH8/+/ft55plnMBgMTJ061SOfKRpAQyQlkng0S7at63CmaLjKuvMsNiKIskozxdWOPVCrrMmN2lxJu2PriTidCcDp0A7ktR9Mherc3c41KgjQaqgwmukRF87lL62jd7x1mb13fGStS09CiKbD7Z8yRqORtWvXsnTpUn7//XeuvPJKpkyZwqRJk5gwYQIXXXSRx4JMS0sjLS3N/nX79u05fPgwS5YskaSmqbuQpKSJN8ITDc9WENw7PpKyShOVJmsCY5tFySmqcPk+iwJ6Qz4djq4l0HgaBTXHWvfjZFQPUKnsS0v6arM8jhzPbLr8pXX2wy8d62Act3ELIZoet39SpKWlkZiYyMiRI3n11VcJDw8HYNKkSR4Lri4lJSX2GOrLbDY3cDTeZxuTX4ztTP+Ywptvp+W+HZzs0oPIrb/Vmdj41fjPgy+Nf/Gv2SxYn8n4tERu69fB6bn5GQfPJC4Km5++mrSXM2pNZOwUheiCnbQ9vhE1Fqp0oWTFXYMhuLX9JdentGHtnhMYjJZq5zVZ9Yhrwdg+7ez3b3xawpkYE+wxzc84yNg+tfez8TZf+jvgKc39Hvjz+N0dk0pRFFe1dzX07duXzp07M3LkSIYNG2bvKNytWzdWrFjh0Zma6rKyshg9ejRTp07llltucft9ZrOZrVu3ei4wceFMJtre9ldiM/c6Pbzziy+ojJd/HfuD8atOkF9uQa2C+3q1YGhSsP259EPlLN5RQoVJwaxAsE5FmVEhKVLL1QnBLN5ZQnmVgm2eRWOupF1uBuElfwJQHNaRo7GDMGvOLjcFaqy/VtbxPTEmWM2C4a1cPpd+qJxle0sZ1SXUKVYhRONLTU1Fo9HU+rzbMzU//vgj6enpLF26lBkzZpCWlsbIkSNdntjtrjlz5vDuu+/W+ZrVq1eTlHR27fr48ePcd999XHfddfVKaBz16NGjzpvii8xmMzt27PD9se3fj6ZaQnOySwoXDx9+zpkavxj/efKV8S/+NZsq5RQqLFgUWJVZRft27ViwPpNLOkSw/oCBMqNiX24qM1p/l1lookKpYup1F/PPldZz6PTlx4nPWUuAsRSLSs2x1pdxKrJbjd1NVWZq7JrS69QEatVc2aklf2QXMT4tkdTUDriSmgq+sMjtK38HPKm53wN/Hr9tbOfidlITGBjIyJEjGTlyJNnZ2XzxxRe8+OKLmEwm5s+fz+jRo+nfv3+9buQ999xTYzdVde3bt7f//vjx49x555306tWLF154we3PqU6j0fjdH7iNz4+tU6ezO6a69KDlF5/SsnNnt2tqfH78F6gpjL+urrkL1h+m2GAkQq8jJFDrcOhjBXnFeZhdzBtbdzxpyCmqYMH6w6AotCzYTtvjm1BhoVLXgux212DQnz2iIEKvpchgsjfms9GpVTw7sptTXI8u2cJzX+3mt6wi5o3t1eD3o7E1hb8D3tbc70FzHv95VV926NCBxx9/nMcee4wff/yRL774ggceeICQkBB+/fVXt68TFRVFVFSUW6+1JTTdunVj5syZqNVuHVslGktDFfV6ehu38DhbozxXh1L2jo8kr9hAWucYpwTCVhy8ZndejSLe2Ahrv5jtOcVE68zojnxDi9JsAIpaJHI8biCVKufWDkUG624pk0Wxn5pdZDDSqkUQYC0EtiVdq7bnYlZg1fZce0xynIEQvumCMgO1Ws3AgQOZN28e69evZ/z48Q0Vl5Pjx49zxx130LZtW6ZOnUpBQQH5+fnk5+d75PNEPZ3pHHxBBz86Hi5p2zElCc0FW7Qxi8tfWseijVmNds0Jg5LQqFwfSnmuM5IqqiU0apW1J8z2nGKCy/MwbviAFqXZWFQajra5kuy4a6hUBbg8vBKcl50i9DqHmSGDPbbhKbH2jsE21V8jhPANDTbdERUVxd13391Ql3OyYcMGsrKy+OWXX0hLS+OKK66w/ycaQfXTrKtz1Tm4ntdvaqdh+wtP/HCu65q2GY7hKbEuTxN3dcr4jFW7ySkysHJbrlMSolOrrIdSKgoxJ7eQ9OdKdKYyjIHhHEy4kYKorvb6GcfDK/U6NRF6HSN7WmMA6yxNSYXRZQzzxvbi0MzhTjNHbp+GLoRoUnzin8KjR49m9OjR3g6jeXLn/KYL7RzsyTOeGpqP9c5xddbQhS6t1HV+kS3hKas0ERKorfF5mw4XkFds4PPfjtg7BrvqGQNgtChoTAY65KwjrOwoAIUtLiKn7ZVYNK47id9/SQumjhmARqNh0cYsNmcVktY5xr7END/jEBumDT7nuOU4AyF8U9P/riy8y52E40LrYDx5xlND8uSp4RfAmjQcZHhiAKmpzs+5+uF8vidFOyYnG6YNdvl8WaXJXsPiOJtjq7GxFQJvzym2v89WzOt49hJASFkuHXK+Q2cqx6LSkNPmCgojkmvsbrItdTn2n1m0Mcvp86bf0F26AAvRDEi1rajbmYQDsP5aW8JxIXUwtqRo374mkyi4dKHLbB5i2z20bG+pW68/36UVWzI0J32fy5oa29EGIYFa0jrHoFFZC4Mda2yqUwHaM8ds259WLLTK30xi1v/QmcqpCIjgQMJoCiO7oFbXTGjahOuJ0OswWhT7PZiTvs/+eb3jIxnXP94+w9SQ9UVCiKblgpMas9nMnj17KC4uPveLhe9prITDF4qD3U3wGpk1SQliVJdQt14/rn+8fQmmPoXEtmQIcFlT0zs+0p7IVC8IDgvS2etcbGmJbWYmUKuxz+5oTeUkZK+mTf7vqFAISUjlQOJoKoOsuyQ11ZIas4L9OINwvQ6DUWHxr9lUms522rPFIMW/Qvi/eic1M2bM4L///S9gTWjGjRvHqFGjGDRoUL22cwsf4gsJR2NoojNK4/rHs37yoPPqduu4/fpciY0tGXpyaLLLmR7HRMZxNshxBmfe2F68cGN34iL0jDhTyPvk0GRCArWElh6l06GlhJXlYFFpyWs/mE3B/VDUOvtnGKtN9+h1ZxMigFKjwoL1mQRqrT06VGCPU4p/hfB/9f6unJ6ezsiRIwH4/vvvOXr0KF9//TUrVqxg7ty5fPrppw0epBBNhp+dGj5hUJK99sTdGpvaimirH/zo+Jrq9SxllSbW7M4DVMz5Zg8tT/xO1NFNqABDYBTHOw7BGBSJuZYiYrAmNNd2bW0vAo7Qa4kJVjM+LRGVWu3yEEop/hXCv9U7qSksLCQmxtq584cffuC6664jISGBMWPG8NFHHzV4gEIIz7H9kPdUEa2rnVZz0vdRZLBur9Yay2ib8x3B5ccAKIzowtp3XyAwMJCLn/m6zmsHatX22SGNCiZd25mugQWkpnZAo9FIAiNEM1Tv5aeWLVty8OBBzGYzP/74I5dffjkAFRUVzbYtsxBNxeJfs+vdbM+xxuZC2Jaynlm+k9Tp39oTGlsdy6NLttBx2ip7QhNamk3nzKWElh/DrNaRHTeYXn8ZS2BgIIs2ZtVoxOeKbUlp+g3da5z4LYRofuqd1IwePZqJEydy/fXXo1KpGDBgAADbtm0jsYkUTgrRXC1Yn+m1YljbLicFa7O7Oen7KCirBODE6QpWbsu1vlCx0Ob4ryRmf43WXIEhMJoDCaMpCu9E34QoFm3M4pnlO1Gw1sTYamYi9NZiY1tzvbTOMfbjFeZnHGLxr9ajE84nsRNC+Id6JzWPPPIIL774Iv/3f//HkiVLCAiwNsHSaDTcf//9DR6gEP7IE8cXAIxPS/RqMWxYkDXpUKusiY2tsZ7tUEmdsZSkP7+i1amtAJyM7MrBhBupCowArN2Fnz6T0IB1R5OtMBms14wKCWTrs0PYnFVITpGBVdtzySkysGC9dYu9NxM7IYR31bumZvny5QwbNsyezNgMHz6c1atXN1hgQpwXkwkOHWryHX+rN8BzrD2xPX8+HX9v69eBOwYkXFBs9ek4bHtt7/hIe8GuRnX22AIbtQqiyo/QOvs7NOZKVLpAslpdSVF4ktNJ2o7dhSPOJDSOtTi285vgbGGybQv5+LQEoIDxaYksWH9YdjkJ0QzV+7v+U089xZVXXkl0dLTT42VlZTz11FPceOONDRWbEPVjMlGY2oeWe3c0qY6/rlQ/aqB6DxVbbcqc9H1OP9hrs/jXbOatPcGjldkXnNTYCnnnpO+rkXDV1p04r9hgb3ZXvcmeSjHTOm8TMQXWxoUXXXQRv7W4gqKKQMB6knZ1ep2GJ4cm2++HbVt4XIS+1t1MZrOZrVsLGiSxE0L4pnovPymKgqpam3KwnqQdFhbWIEEJcT4Cc3JouXcH0LQ6/rpSvTjXsYdK9doUd5ZRFqzPJL/cwpw1BxpsWavSZCZ1+rc8s3ynU8JlWzp7dMkWyipN6HUaArQ1v5XERej5S5KepD9X2hMaQ9tUZs2axQPX9ba/zjGlSYkLR6OCa7u2dkr0bPend3ykfXyLNmaROv1be1GyEEK4/c/YG2+8EZVKhUql4q677kLr8C9gs9nM0aNHufLKKz0SpBDuqIyL42SXHmdnanyocN1VDxXbgY/uLKOMT0tk3tq9GBXlvM51cmSbISkoq7LvVLJ1Cr78pXWUVZooMhidZmeqi9DrGNm2lK3fLCHYUIYuSE9u3FUYIhL5bHMu4/rHs+lwwdniYawJzamyKnsDv97xkeQVG+zHHIzrH8/lL61zSrBs8c3POMTYPu3Oa7xCCP/hdlJzzTXXALBnzx6uuOIKQkJC7M/pdDri4uIYMmRIw0cohLu0WiK3/gZZWed3sKaHnM+p2PVtFHdbvw50DSxgd2UUr6w5QFmliUUbs9y+RvUYx/WPJ3X6txiMZlScPRAyp8hg34VUabJgMJ49jkCvUxMVEsgl7cLYmbGCDZutszMB0e3YGZWGKjgCw5mZp3H945k3thfr9+fbE5NTZVVOdTK2Gh3bMQdQc9muPomfEML/uf1d/+GHHwYgLi6OYcOGERgY6LGghDhvTbDj7/mein0+buvXgQXrD7v1eY6JTPWanvkZh0jrHGM/8sA2s5JXbKBDVDC7cotrzNIEajXc0bMFKz9aQFjZCQAMsZewM/wSLCoNGM3odRpyigxc/Mw3/GP4xTw5NJkZq3ZTYbQQHRLgFI+t6NgxYame7FWvqRFCNG/1rqkZNWqUJDRC1ENjnznk7ufNSd9nP3W7+llNOUUGe0JjO9l6/f58zApsz6mZ0AAox/fy1dsvoS07gVkTyImk4Vw88AZrQnNGxZmZHYPRbC+EDtRqULBet3oNzfQbuktnYCGE29yaqenbty/ffPMNUVFR9OnTx2WhsM2mTZsaLDgh/IG7S0nns0x1vp+3aGMWxWeWfVy9p7YZHFdUFhNtj/9Cy8LdABjDYhl113gW/lHA+v35Tq8N0mmoMJpROFsIHaHX2U/sdjyAsqzSxJz0fWw6XOA0YySEELVxK6l56qmnCA0Ntf++rqRGCHF+6rNMdT69ZBxfOz/jEArW5Z0nhyY7vd6W4Dy6ZAu5RQb0Oo090Zi+cpe9pwxAQGUR8UfXoq88BcCJ6FT6XDOShX8UkHPmvTbW7xoK4XodHaKC2ZFTTNCZrdu2beThep29INhWa2OrrWmM5TshhG9zK6kZNWqU/fejR4/2WDBCNGfVi2DrUp8EyNVrq5+oDTWTn1Xbc1GAKpN1yWhO+j6nhCai+ABxx35EYzFi0gSRHXcVpaEd+PFggfX5M8cb2IqJg3RqDEYLBqOF4pxiFKyHUro6VHPCoCR7EbBjbY8QQtSl3ttDSktLa30uICCgRqdhIYR7zrVs5Jh01CcBmjAoiRmrdp8p0P2afwzvWusW8iKDkRmrdjM/4xDdYsPZlVvM8JRYp5O1VRYjsXk/E120F4DS4LZkx12NWReCXqeh0mTGYLTYOwI/Yz/2QGVPdGyvKTIYSZ3+LU8OTWbDtMFu3wshhHCl3knNpZdeWufyU5s2bRg1ahQPP/wwanW965CFaHANVavibY4zLuc6Vbv6mJ9dsROwHkPg6mgGx2tVGC3kFBkAODRzOACp078FILCykA5H16KvLEABTrS8hOMxvUGlPnP9szuQbDU7thkaUNj67BB7fM+u2IlZOdtg0Jf/bIQQTUO9s46XXnqJVq1a8cADD/DWW2/x1ltv8cADD9C6dWuee+45brnlFj7++GPeeecdT8QrRL25U+x6oTx1QKWjunY1Lf41m/GrTthPqq4+5uEpsaiw9pJxdTTDo0u2UGwwotepGdEztsbnPDk0mciifXTK/BJ9ZQFGrZ6SrqNp3esaVCrX30YUOJNMWf8RFKg9W18zrn8802/obu95I0tLQoiGUO+ZmmXLljF16lSGDRtmf2zw4MF07tyZzz77jIULF9K2bVsWLFjA+PHjGzRYIc5HfZZqzlddNS6NsavJ8ZiEBesP0zs+Eji7k6hvQlSNHUS2+xIdEmDv7FtlsjBvbC+n2F9ZvZPwrAzaF1prXEpC4jgSN5hhPS9ic1ah0zEH1ZkVa91MVEiAvSOxY4M/x3oex+eEEOJ81HumZsuWLXTt2rXG4127dmXr1q0A9O7dm2PHjl1wcEI0hOrnLHlCXbMojTFTND4tkZhgNSoUe48ZxzG7isF2X3blFtsfG54S63Td15f/TMzuz2hRuA8FFXkxl3K4wzBM2mBWbc9lwqAkqi9G63Ua4iL0jDwz42Orl1m/P9/eF6e6xrhHQgj/V++ZmrZt27J06VKefPJJp8eXLl1KmzZtACgqKqJFixYNE6EQPqCuWZTzmSmq7+zObf06cOToUT7bY3C5nOMYg+3a0SEB7MotJixIS5HBhE6tom9CFGA9uHbNmjW03vM5asWMURtMdtzVlIXEolZZF5SGp8TaOw2v2p5Lm/Ag8ooruLZra6fZHnc0xmyaEML/1TupmTJlCo899hjr16+nR48eAOzcuZPMzEzmzZsHwI4dO5yWp4Rozs5nJ8/5HK2wbG8pxQYLcRH6Gu+xxeBYoGsrBi4ymAAwWhTrtu3KCj5d+B6BJ/ehBkpC2pEdNxizVg+ARbGewA1w+UvrKDhzCGVuUQUKZ89qqp6Y2Q7KdJW4yG4nIURDqHdSc/XVV/P111/z2Wef8eeffwKQlpbGW2+9Rbt21lNyb7vttgYNUojm5nxmLkZ1CWVVZpXTbIzjTM+jS7bYa2c0KmgTHkROUQUReq09sakoPManb3xMYFUxCirKO1zG4ZDuUG3HY06RwX5Kt+2ZIJ2aQK3Gfphm9cRMEhchhKed1zHG7du3r7H8JIRoOLUlAO4uS9kSCttW7nH94+0JDUCAVkNZpXX7dUmFCRSFqMLdxB7/BbVipkobQna7qykPbuvy+hqVdflpc1YhveMjnc6JsiUyveMjySs22IuW6xO/EEKcj/NKak6fPs3SpUs5dMha1NepUyfGjBlDWFhYgwYnhL+50B/qdS1LLdtbSn65xX592zKTq9cajGZMZgsAbUNUqPeuIeJ0pvW58Hj0qSOpPFlF3JnZHLDOyIzoGXvOc5hsCc1X26wdiR3Pf2rME8uFEM1PvXc/7dixg2uvvZb//Oc/FBcXU1xczIcffsg111zDrl27PBGjEH7jQnf5uNpltWhjFmkvZ5AcHUBcRJA94Zh+Q3en147sae1Vo1NbO/saLQp6Qz4hWxYTcToTBTWF7S4nfeHrrJx07ZnGe9bFJRUQrtfRNyHKvqvKVW8e246q2rZ6N/aJ5UKI5qXeMzUzZ85k8ODBvPDCC2i11rebTCaefvpp/vWvf/HJJ580eJBC+IvaamVsMziOSzmuuv66WpayJkoVHCuG6SO62p+37Ux6dsVOPv/tCNkF5YTrddazlP4sQJuzhTbHf0GtWAgOjyKzzWCqQtuweNMR+3VtS0dllaYanX/rmnVxPLvJ8cBMqasRQnhSvZOanTt3OiU0AFqtlvvuu48xY8Y0aHBC+JvafqjbEgRb8a0tUag+s2NLNGxLOk8OTaZ3fCQ5RQYsirUJ3x0DEuzJUG6RAQXYnnO2F83XWw4Tm5NBdMmfABSHdeTGeyYwb/0RigzGGidxb5g22Cm5sqmrmFmSFyGEN9Q7qQkNDeXYsWMkJTl/Izt27BghISENFpgQ/sZVPY3jDA3gNFMDzomDLcGxbcUGnJax1Cq4pEPEmW3WlRiMFnRqFRZFoVtsONkF5ZgLc4g7spYAYwmoNRxr1Y/8yO68vC7Lfm6TY0Jji8NVkiKJixCiqal3UjNs2DD+8Y9/MHXqVHr1sjbY+uOPP5g9ezbDhw9v8ACF8Beulmtsj5VVmggJ1NI3IcqpcZ3j62y7iWzbqMPPNNnbdLiAvGIDl7UL4o/sInthr82hmcP5+Jc/+c/i/xKctQEVFip1LTja/hoi2rRHU1zhdBCljV4nB9IKIXzLeTXfs/1qNlu/EWq1WsaOHSvbvEWzdq6dTa6Wa2yPlVWaaq1PsSU+ANNv6O50Ddt7zQpszatEo9USoddRdOaEbJNF4f11u1n03r8JK7UedlkUlsjR2DQsmkDKqiVANvozJ2vLLiUhhC+pd1ITEBDA008/zaRJk8jOtn6T7NChAzqdjlOnTtG6desGD1IIX+Cq/sUxwalrCcdVzYqNYzLkeI3U6d9SdOZk7biIIIrLKyk2GInQ69Dr1FQYLfQIKeG/b71ImLEUi0pDbuvLKIjsWqOZHkCEXkdJhfHMIZQaokIC7fFIfxkhhC84rz41AHq9nuTks7sa9u7dy6hRo9izZ0+DBCaEr3FV/+LuTEdd9Snnql0J1GpYP3kQs774mc/2GCg2GFEUhaSyXSi7fyYAhcqAcLLaXUNFUEun90bYdkM51PG4Sl6kv4wQwhf43KJ5VVUVN9xwA8nJyZJANTaTCfbvt/7ajLnqzwLOp4HX1k/G9r7armF7fOKi37h10kI++emQ03Op078ldfq3LNqYxZNDk4mL0JPWOYZLXvyOxTtKqDKZUZsMJGR/TUj2BlQolEV2IvDyv9ZIaAB7HU/1MQBO8Ul/GSGEL/C5pGb27Nm0atXK22E0PyYTJ1N6Q3Ky9ddmnNi400DPMcFx9b7arjE/4xB5BaXcPfl2Pn31r6Tc8hf7vZ6fcYgig9GpX4yt0V2xwUipUUFddJTOmUsJKzuCRaXhaNs0DrW5ilsuu8h+CKWNTqOirNLEnPR9NWKpHp+r8QghRFPjU0nNDz/8wIYNG5g6daq3Q2l+MjNpuWc7gPXXzEwvB1S72mZBGsr5zlo4vq+2a0wYlEQ3w0l65h0AoMexA/Z7PWFQEjq1tRbmREmF0yyKTq3QKv8PErP+h85Ujq5FSw4mjKIg8mJQqexLStZ6Gw0Reh1atZoig5GSCmtRcXRIwAWPUQghvMntmpq9e/fW+Xymh3/InTx5kmeeeYa33nqLoKCgC7qWbdeWP7GNyWNji4+nsEsPWu7dwckuKUTGx0MTuo+O45+fcZCcogrmZxxkbJ92Df5ZY/u0s1+3Pvfb8X22r6tfY2yfdrzzXTu2telEz7wDZCV2pd2Zez22Tzv7AZVGs8Kc9L3MzzjIX3u3pP3hVYSW5QBQEN6ZsoRBVFSdLQbOLTLw2W/ZKECF0YzBaLafrm0+05ZmR04xPad/iwqFSdd2ZnxaAvMzDqJYLNzWr0M971Lj8/j/A01ccx8/yD3w5/G7OyaVoiiujmipoUuXLqhUKly93Pa4SqXySJ2Loijcf//9XHLJJTz44IMcPXqUq6++muXLl3PxxRe7fR2z2czWrVsbPL5mw2QiMCeHyrg40J53jbnHpR8qZ9neUkZ1CWVoUrC3w6mVY5yA/fe786vYmFVG0uk8Bg3shKLROj234UgFGpU1GQkpPUqH3HVoTQYsKi05ba+gMOJsAb8tcXH1P/kV7YP4+WgFtl57gRo4c3A3McHWSdz8cgsxwWoWDJclXyGE96WmpqLRaGp93u2fTN99912DBORozpw5vPvuu3W+ZvXq1WzYsIGysjIeeOCBBvncHj161HlTfJHZbGbHjh2eH9ull3ru2hfAcfypqRq8vUC5+NdsFqzPZHxaYq2zHI+uySC/3MKqzCoA++/LKk2Y1Br2RcRRmmUBquzPjU9L5HBJJqUVRoKyN9Lq5B+ogIrASLLaXUtlYKTTZwTp1BjNCiaLQmxEELkOfWkWjh/kFOemPwv43/Y8AnVqHr2mC4D9udRU35ipaZT/B5qo5j5+kHvgz+O3je1c3E5q4uLiLiggV+655x5GjRpV52vat2/Pxo0b2bp1Kz169HB6bsyYMYwYMYJZs2bV63M1Go3f/YHb+PPY3NFUxr9g/WFyiipYsP4wdwxIcHru7NEIUUDNrdS2gyBVwIRBF9V4rvR0ER1z1xFclgvAqYgu5LYZgKLWOX2OCut2b4PReOZrFSlx4WzPKSYlLhyNRsMdAxLs8S1YfxgFiA4JtD9WPXZf0FT+DnhLcx8/yD1ozuP36hpCVFQUUVFR53zd008/zcSJE+1fnzhxgnvvvZe5c+fSs2dPD0YoxPmx9arpHR/J5S+tc+r74tgh2LZ9GqixU8r2nkeXbCG3yMD0r3YRWJxN55x1aM0VmNU6ctpeSVF4J6fPTokL51RZlT1ZmrFqDxVGM73jI52OYKgtZikOFkL4Kp/Y/RQbG0vnzp3t/3Xs2BGwdjJu06aNd4MTTUb6oXLSXs5osF1PF7KLynG7dfXt0radRbaEx3Z92+cB9u3TizZmsXJbLopiITp3I4nZq9GaK9BFtKHDX8ZTEtHJviPK5lRZldP26yqTGQXYnFXoVsyybVsI4at8IqkRwpXqSceyvaVndj3V3j+mPtd11b+lvlxtjbY151u1PbfGsQo5RQbmpO/j8pfW8eiSLTy7Yic6YylJf35Fq1NbATgV2ZW8Ljcx/4FrmX5Dd0wOp2prVGdP1l60MYtnV+zErDg/LoQQ/qrpbmGpQ7t27di3b5+3wxBe5tggbmyfdozqEsqqzKoL/uFtu65ep0ajgt7xked+Uy0cl5yqf207bbus0sSjS7ZQUGYtGLY12MsrNhB8Oov2ud+jNVeCJoCsNmkUhyeREhbM5S+to6Cs0r6zKVANQYFn62psn6FRWQ/ClBkYIYS/q/dMzf/+979an6tvwa4QF6L6LMjQpGDWTx50wT+8bdcN1GowK+detjkXV92DbZ8RfuZE7VXbczEYz/Zh0GAmsfA3Eo58g9ZcSXlQSw4mjaE43DrW7TnF5BQZMBgtAETotbQIUlN8ptuw42dIQiOEaC7qndQ899xz/PDDDzUe/9e//sVXX33VIEGJxufpLrye4KkaENt1bWcruTPzU9f9q20JyvEzhqfE2p/TVZVwZdFa9Ll/AHAyqjuHOt5IubaFy8/WqGDStZ0Z1SWUCL2WskoTizZmSY2MEKLZqXdSM2fOHCZNmsTvv/9uf+yFF17g66+/ZuHChQ0anGg87pxn1NzUJymo6/7Vdkjkoo1ZzEnfR1mlib4JUUTodbQ4fZjkw19QkPsnJnUAf7YbQsvew4iNCiUlLhwV1jObIvQ6RvaMtSdEC9ZbO3qHBGrtZ0MJIURzU++kZtCgQTz77LM8+OCD7Ny5k+eee45vv/2Wjz76iKQkKUT0Vf5y1s/iX7O9MuN0rvtnK9qtXhhsq5+Z8/VurlbvpOPRb1GbKynXt+JA4k2UtEiwb89e+cgVxEboMZ4512BzViG94yPPFBxXsGxvKePTEv3iz1EIIc7HeRUKjxgxgtOnTzN27FiioqJYtGgR8fEyxe3LxvWPb5LLFLZGdY59XuqyYH2mfQeUJ8fjGBdg70lTvSDY9rqySpO9aNe2ldt2eEFA1WlaZq7hQMVJAG688Ua2BPTg8K4TBGnV9kTItmvKdr2cIgN5xQb7dUd1CeW2fh18smGeEEI0BLeSmpkzZ7p8PCoqiq5du7J48WL7Y0899VTDRCYEzss67iQp49MSWbD+sMdnKqovNzkmGI6x2l4XodfZZ1Acm++Fn86kXe4PaCxVmDSBHIkdxPKyzqy8pw9vUDN5siWftqWrSpOZQK2GSdd2omtggUfHLIQQTZ1bSc3u3btdPt6hQwdKS0vtz6tUKpevE+J81bfLbWPNVFSPyzZTszmr0ClWx9c5dQxetw/V/u+JKtgFQJm+NdntrsaoC2N7TrG90Le2GbRx/ePty1dRIYHc1q8DW7dKUiOEaN7cSmo+/vhjT8chhEtNdVmsely1xej4OtusSzSlBG9dhr7iFAAnolPJa3UpqM6e1TInfZ/LazrO3FRPrNIPlfPomgwmDLqoSd4zIYTwtAtuvldaWsrGjRtJSEiQQmHhl+pb11Pb+wvKqgg8uY+IY+vRW4yYNEFkx11FaajrE7Bdfa7jspfjziyz2cyyvaXkl1s8Xk8khBBNVb13Pz322GMsWrQIgIqKCsaMGcPEiRMZOXIk6enpDR6gEN7kateSu++z7cKan3GI3IISorPW0SHnOzQWI6XBbdmfeBOloR3QqCBCb+0ErML6+yeHJtfZtM/VctyoLqGE63UUlFWSOv1bn+o5JIQQDaHeMzW///47EyZMAGDNmjUoisJvv/3GsmXLmD9/PkOHDm3wIIXwFsejBlyduA2ud0KVVZqsW7XT96GtKKTzn18TWFGAAqgSLuNwUHe0Gg0RgVqeHJpsf5+tLgdc1xPVtRw3NCmYVZlV5BiMGIwyYyOEaH7qPVNTUlJCeHg4AD/++CNDhgxBr9czaNAgsrLkX4bCt5yrk7LjUQNrdueRU2Rg+spdTu9xPIjSNqtTZDCiAgJO7KbN7s8IrCjAqNFT0nU0p9r2Q1GpMTocRGlLXhxP9T6fjsDj0xKJ0OuI0OukV40Qotmpd1LTtm1btmzZQnl5OT/++COXX345AKdPnyYgIKDBAxTCk87VSdkxsag4c86S0aKQU2TgmeU7SZ3+LdEhAaiwHkR5pi8eKouRuJzvaXNkHWrFRFDrBEp6jeO+G69ySjZsszm2GNxp4ldXEnZbvw5sfXYIW58dIrM0Qohmp95JzZ133snkyZMZOHAgrVq1ol+/fgD89ttvdO7cucEDFMKT6tNJeUTPWDQqSIkLR6Oyts4rMhjZlVtsPylbo4KUcCOdDi8jqng/Ciq6XTmMJQteZfyQFHvyZKuhsbHFcK7ZGTnOQgghalfvmprbb7+dnj17cuzYMQYMGIBabc2L2rdvz8SJExs6PiE8qj5bxueN7cW8sb0AGPnGT2zPKUanVnFx2xbsyClGq4Ko4n1Ydv9EkGLCqA0mO+5qjpTHs/7lH+x1Ns+u2MnwlFjW788HcKqpscVUm/r27RFCiObkvLZ0d+/ene7duzs9NmjQoIaIRwi7C91K7cnP3pVbDIBFUcguKEdlrqJN3o9EFh8EoCSkHdlxgzFr9USAvauwRgVmxXpu09Znh9ivd/lL69zqnNxU+/YIIURTcF5JTV5eHt999x3Hjh3DaDQ6PSfHJIiGUt8jEhrSnPR9FBmMPL18J3PS95HWOcbeLXhc/3iGp8Ty1bZcArRqTEV5dDqyhsCqYhRU5LXqw8noVBSVipS4cG7p077G7qjqMy0yAyOEEBeu3knNL7/8woQJE2jfvj2ZmZl06tSJnJwcFEWha9eunohRNFO1/aBv7BmcIoORVdtznc51mje2F5v/LMBw+A9ij/+MWjFTpQ0ht8M1nA5qY39vdkG5U+O8CYOS2DBtsFfHI4QQ/qrehcKvvPIK99xzD1999RUBAQG88cYbZGRk0KdPH6677jpPxCiaqdqKZhujWPbJoclE6HXodRoi9DqGp8QSF6G396r58Ie9pBatp13ej6gVM6dDO3AgcQwlQW2Ii9Cj11n/1yo2GO1JS20x23Y/zUnf57HxCCFEc1DvpObQoUPceOONAGi1WioqKggJCeGxxx7jvffea+j4hKihd3wkGhVEhwTUub35QoUEavnH8IvZ+uwQ5o3txYZpg9mcVUjBsWyWvjWDI3u2oNFouPvuu2nR//8wa/VoNSp6x0cSqNWgwrpDyp2t2kIIIS5cvZOa4OBgex1NTEwM2dnZ9ucKCwsbLjLR7NXWk2VzViFmxVqs686Mzbl6u7ji2FDP9l5FUYg+tYOkP5ejqSgmJiaGQeMe4+9/BLE99zQARrPCV9tyKTIYCdfr3Nqq/eTQZOIi9PZdUEIIIc6P20nNm2++SXl5OT179mTz5s0ADBw4kFmzZjF//nz+/ve/07NnT48FKpqf2pZsbLMetiUhx1Oq017OqJG8VL+OO0mO7TPAunNpwdpdPDjln7DvO9SKhdNhHXnttdf4/IAFw5mmfDZBOjVxEXrSOse4Nc7z6RwshBCiJrcLhd966y3Gjh3LU089RVlZGQCPPPIIZWVlrF69mo4dOzJt2jSPBSqan9oKhV1ta/7458O8t+U0Fodi3tquY9vZNCd9X61nOG06XEBesYE24UGYCnJolfU9OWVFWFBzrHV/Blw1hBW7Cigoq7S/PyUunFNlVfaZGXe3aQshhGgYbic1imLtmdq+fXv7Y8HBwTz//PMNH5UQ1K8ny4L1mVjOHDzpThJk45jIOCY7JRVGzBaFykObSDj+KyYsVOnCyOs4hCdvHgTAsyt22o9F0Kjglj7t7Z+zaGMWZZUmOYNJCCEaUb1qalQqlafiEOKCjE9LJCZYzXMjup4zEUrrHINGZf3VsXam2HC259J1yRF0PJJO7PFfUGGhOCyR/YljKAloybj+8fbTu23/R5gVnHYvzc84RJHBSEigVmZphBCikdSrT83QoUPPmdhs2rTpggIS4nzc1q8DXQMLSE3tcM7X2gqNbc305mccoqCsyn5+U0DpMU6tXUeL0kIsKjXlHQeS0m8g2duPoVGpSJ3+rb1exnGGx5E00xNCiMZXr6TmkUceISwszFOxCNEobIlIWaUJgA3TBpM6/VsMVSZiTm2j9YlNlKMQGhnDgTaDKQ2IpuDAScL1OooMRooMRtbvz3c65qB6AiPHGQghROOrV1IzfPhwoqOjPRWLEI3CtnyUU2TgmTPHIHQIhch9XxNWegSAkPgevDfrH/SeuR6D0YzBaPZy1EIIIc7F7ZoaqacR3nI+fWbOdZ0Jg5LszfGMJ7MwbviAsNIjWFQajrZNIzt2MMHBwVRUS2YizvSecewp0xgdjoUQQpxbvXc/CdHY3D3YMv1QOY+uyWDCoItcvs7xkMoIvY4grYqwY5tpnf87KhTM+kjaD7yVQ8egsLiCy1/6Dse/9SqsjfKqX1vqZ4QQomlwO6nZu3evJ+MQolbuJg3L9paSX25xqy9MaUkx7XPWEVaWA0B89z7MfuZJ9Ho9SU+tQgFyiirsr9eoYPoN3V1eV+pnhBCiaaj3MQlC1KWhloocudNxd/Gv2ZyutKDCejaUq5jSOscQodcRVZFLp8wvCCvLwaLSciR2EKuVS/hi2wkAhqfEolFBXEQQKkCvU9sTGk+MTwghRMOoV6GwEOfi7lJRQ3tlzX4qz5S/bM5yPoPMFhOKhev0B9m1+RtUgEkfTYerbmVPlgmzYm2mBzBvbC/mje1lf7+tQZ/jtRy/tnUQFkII4V0yUyMaVGOeRu04a6KcaYNnm6lxnE3pHR9JoKmMuEMr2f2TNaGpaNWNZR8tYMH4oUy/oTsa1dkGetVnYhwTGcfxSYGwEEI0LZLUCJ/lmFQ8eW0nYoLVPD+yK5uzCp2Sje3btpJ0aCkVJ/5EqwugpNN13HnfeAIDA+3XCgvSEaHXAdRIVBwTGcelsMZM4IQQQpybLD+JBuXp5SfHs5p6x0eSV2ygd3ykU0dhlVrNnPR9FJQaGPi36YTnWU+VD28Vy8znnqZdu3b2a9mOR1DAntRUP6+ptkJgKRAWQoimRZIa0aA8vb25+pKPWYFV23PpEx9B17MTLxhKCml35DtCDHkAXHfdddx7771OszO285nAumxlS27iIvSSrAghhA/yqeWnjIwMbr75ZlJSUujTpw8PPvigt0Nq2kwm2L/f+msjcWenUm1c7iyqNoYJg5KI0OsoqzTROz7SXgvzypr9jF91gsW/ZvPm5+kkHfqCEEMeFrWO/jf+lQcffNApoXG8VoReR7heh4LrU76FEEL4Bp+ZqUlPT+eZZ57h8ccfp3///pjNZvbv3+/tsJouk4mTKb1puWc7Jy9OoeX2zaBt2n/cNZauTCayknsSn7mbrMSuxO/b5nTEweasQrrFhrM9p5jSSjMms4mPPvqIVrnW5aaq4Bg+ePUFYmNjXX6e4/KRbSlKCCGE7/KJmRqTycSMGTOYPHkyY8eOJSEhgYsuuohhw4Z5O7SmKzOTlnu2A1h/zcz0ckA1VZ+ZqVF4m5lJfOZuAOIzdzPy8Y/sRxzYXrcrtxgAdcVpOmd9hf5MQlMSk0Kn68cz7N2dpE7/1v4Zts98dMkWp88e1z+ekEAtRQaj7GYSQggf1bT/6X7G7t27OX78OGq1mhtvvJGTJ0/SpUsXpkyZQufOnet9PbPZ/w4ntI3JPrb4eAq79KDl3h2c7JJCZHw8NLFxz884SE5RBfMzDjK2Tzv7f3BmHPHxHE3sSnzmbra16cQufUvmZxxk/eRBKBYLL6fvQ61SEXL6MInHf8BSVYFZHcCR2IGoWiezetcJzMrZzxrbp539M3OLDCjAnPS99s8cn5bAgvWZjE9L8Lm/IzX+/Juh5n4Pmvv4Qe6BP4/f3TGpFB841GnVqlU88cQTxMbGMm3aNOLi4vjwww/56aefSE9PJyIiwq3rmM1mtm7d6tFYmxSTicCcHCrj4prk0lP6oXKW7S1lVJdQhiYFu3zNt/tPk5FxgIPhbdBqNfSJC2JrXiWlRgWVYqbN8Y3EFFib5lXoY8jtcA0EhQNYXwOEBKi4rXsYQ5OC7Z95utJCpRlCA1QsvKF1Yw1ZCCHEBUhNTUWj0dT6vFd/0s2ZM4d33323ztesXr0ai8UCwPjx4xk6dCgAM2fOJC0tjW+++YZbb721Xp/bo0ePOm+KLzKbzezYsaPm2C691HtBnUNqKkw9x2seXZNBTmQcAG1aBHG4xJqsBFSdpsPRtQRX5AOQH5VCXuu+tAgOJDRQyyUdIvjxwEkUVDx5bSdu69fB6TMX/5p9ZlYmkdTUDh4bY2Op9c+/GWnu96C5jx/kHvjz+G1jOxevJjX33HMPo0aNqvM17du3Jz/f+oMrKensrpSAgADat2/PsWPH6v25Go3G7/7AbZrq2Bz7y9RnZ9SEQRcxJ30flSYLZZVm0jrHYMn7hag/16GxVGHWBJIdOwhTVCItdWBUbAdRFhMSqCOnyMCC9Ye5Y0CC03XvGJBQ4zF/0FT//BtTc78HzX38IPegOY/fq0lNVFQUUVFR53xd9+7dCQgI4PDhw1x6ZubBaDSSk5NT684W0XQs2pjFM8t3nqlh2VevpMa2Q+nyl9aRW1DC3u+/ICbPWgDdpUsXkq4ey0dbChmflsCRo0f5bI/BqXmeJ3vmCCGEaFqaXqGFC6Ghodx666288cYbtG3bltjYWN5//33A2lRNeFZ9ZllcvXZ+xiHqW7hV/TrjUsL46uNP0JZZZ+1Gjx7NuHHj0Gq1PDDUOjXZf+1eig0WIvQ65mccqnFatxBCCP/mE1u6AaZMmcLw4cOZMmUKN910E7m5uSxcuJDw8HBvh+b36nNwo6vXOja5e3Jocr0/c/369WQsnIO2LB91YDBZHf7CH4E90Z4pfl60MYu0lzNIjg4gLiIIsJ7ftGp7rhw4KYQQzYhPzNQA6HQ6pk6dytSp5yotFQ2tPkcfuHrt+ZyR1Ds+kmMFJWj3fsucn629arp27coy0yVUakNYtT2XeWN7AbYEqIJjxTB9RFdUarV9pmZzVqEsPwkhRDPhM0mN8J76JCW219qa3DkuQ9VnGWvLnkMkHf4f+soCFMDQri9lPa5DvfckKqOZ4Slna6kmDEri2RU7MSuwYH0mG6ZdLWc3CSFEM+Qzy0/Ct7hahnJ3Gev7778nZten6CsLMGv15HcaycEWvVi98zgGo5nYCD19E6LsHYHH9Y/nuRFdiQlWMz4t0dNDE0II0URJUiM8osaRB9Uec3V4ZUVFBa+//jpz587FZKyiR48efPzefB6++VriIvQMT4m1v796gnRbvw4sGN7K3o9GCCFE8yPLT6JBOS4xbZg22Ok5x2Wsy19a53R4ZXZ2NrNmzeLIkSOo1WpuvfVWbr755jO9FkoA6JsQxbyxvVi0MYuySpPT1m0hhBBCZmrEBak+4zJj1W5yigzMWLW7ztfaZm3GD0zk+bc/5aFHJ3LkyBEsumDSxj7Mrbfeam8eVX1WZn7GIYoMRkICtVI7I4QQwk6SGnFBqiccFUaL06+uXvvsCutZTWsfu4z8X77k91WLUVlMlIS0Y0/CTXxx2PmvZfWlLFdLW0IIIYQsP4kLUn0L94iesazanuu0O8nxtc8st+5Sen3ZBjYs/JGcnBwUVOTFXEpp20tpExpYI1mpvvvqfLaICyGE8H+S1IgLUj3BmDe2l71/jKvXzvlmL+pj22mT9zM5ipno6GhS/jKOpZkq/lHPc6GEEEIIR5LUiAtSV++Z6s+Vl5dzueEXjhz7A4BLL72UiRMn0qJFCx73RvBCCCH8iiQ14oK4KuK1JTFz0vdRZDAyY9Vu3vnfL7Q78i2lhSfRaDTccccd3HjjjajVUtYlhBCiYchPFHFBHIt2XTbXUxRCjm+nxY5PKS08SUxMDDNnzmT06NGS0AghhGhQMlMjLkj1mhrHouFHB7bns/+8S2DBQQBiO/Xg5eemERYW5pVYhRBC+DdJakSd6nNek2OC88CbX5H1/acEGkvQarX89a9/ZcSIEahUqgv+HCGEEMIVmf8XdXL3vCYbRVFYsWIFOWveJ8BYQpUujFmzZjFy5MhaE5rz+RwhhBCiOklqRJ16x0eiUVl/deTq7KaSkhJmzJjB+++/j1qxUNwigaSRD9GpU6dzfo401BNCCHGhZPlJ1GlzViFmxfqr4xKR48zKuP7x7Nmzh5dffpmTJ0+i1Wq59957GTZs2DmXm3rHR7I5q9DlWVFCCCFEfUhSI+rk2DHYMZGxfT1+YAJffPEFH3/8MRaLhbZt2zJlyhSSklzPuNiSmbJKE0UGI3nFBswK9uRICCGEOF+S1AiXajtt27GYd8TFEbz22mts3rwZgCuvvJKHHnqI4ODgWq9rS4wi9DriIvROMzVCCCHEhZCkRrhUfXmp+u6kXbt28fLLL1NQUEBAQAD33XcfQ4cOtS831babyXHmR2ZmhBBCNCRJaoRL1Q+qtCc53x8kIPtXFi9ejMViIS4ujilTppCQkOD0/uonctsSGDmMUgghhKfI7ifhlgmDkmgXbKFrXjqLFi3CYrFw1VVX8eqrr9ZIaGyv16iw18sIIYQQniZJjXCpet+YHvoikg4t5fjhvQQEBPDoo48yceJEvth2osbWbrDOyEy/obts0xZCCNFoZPmpmXG3c69t+emBtAQWL17MZ599hqIotG/fnqlTp9KhQwegZu2NI1lqEkII0ZhkpqaZcbdz77j+8Xz1t1T2rXqPTz/9FEVRSOjZn62xI1mfq9hfJ03zhBBCNBWS1DQz7iYhW7Zs4bHHHmPHjh0EBQXx+OOP83tIf3JKTE4J0bj+8fZZnepLUEIIIURjkuWnZuZcS0Jms5nFixezdOlSFEWhY8eOTJkyhXbt2jFBn+W0I8qmriUoIYQQorFIUtMM1VZXc/LkSebMmcPu3bsBuO6667j33nsJDAwEaiZEjkcdgPV8qMtfWic9aIQQQniFJDXNkG1mZU76Pnty00Wbz9y5cykpKUGv1/PQQw+Rlpbm1nUANkwbzOUvrZMZGyGEEF4jNTXNkK2uBiCnsJSF//kPzz//PCUlJSQmJjJ37txzJjSO17EtR0nRsBBCCG+SmZpmyLaM9Hb6FpZ/tABdyTEAhg8fzt13301AQEC9rlPb10IIIURjkqTGzyz+NZsF6w+fs67l119/5YeFr6MrLSUkJIRHHnmEAQMGNGKkQgghRMOSpMbPLFifSU5RRa11LUajkYULF7Jy5UoAOnXqxOTJk2nTpk1jhyqEEEI0KElq/Mz4tET7TE11eXl5vPzyyxw4cACAG264gTvvvBOdTtfYYQohhBANTpIaP3Nbvw7cMaDmAZM///wzb7zxBmVlZYSGhvLYY4/Rr18/L0QohBBCeIYkNX6uqqqKDz/8kFWrVgHQpUsXnnzySVq1auX2Ndw9L0oIIYTwJklq/Fhubi6zZ88mMzMTgNGjRzNu3Di02vr9sUvHYCGEEL5Akho/9a/3v+Tn/y1Gba4iLCyMxx9/nEsvvfS8rmU720n6zwghhGjKfCapOXz4MLNnz+aPP/7AaDSSnJzMY489Rv/+/b0dWpNSWVnJhx9+yMb0dNSAMSyW119/kZYtW9b6nnMtL0n/GSGEEL7AZzoKjx8/HrPZzMKFC/nyyy/p0qUL48ePJz8/39uhNRknT55k2rRppKenAyrK2/Vl7ENT6kxowHl5SQghhPBVPjFTU1BQwJ9//smMGTPo0qULAJMmTWLx4sUcOHCAmJgYL0fofRkZGbzzzjsYjUbCw8N54okn6NWrl1vvleUlIYQQ/sAnkprIyEgSEhJYvnw5Xbt2JSAggM8++4zo6Gi6detW7+uZzWYPROkdlZWVvPPOO6xbtw6A7t278/jjjxMVFeX2OMf2acfYPu0A3703trh9Nf4L1dzHD3IPmvv4Qe6BP4/f3TGpFEVRPBxLg8jLy+PBBx9k9+7dqNVqoqKieOedd+jatavb1zCbzWzdutVzQTayEydOsHTpUvsS3MCBA0lLS0Ot9plVRSGEEMJtqampaDSaWp/36kzNnDlzePfdd+t8zerVq0lMTGT69OlER0fzySefEBQUxH//+1/Gjx/P0qVL69VzBaBHjx513pSmTlEU1q1bx/vvv09VVRWRkZE8+uijgO+P7XyZzWZ27Ngh42+m4we5B819/CD3wJ/HbxvbuXg1qbnnnnsYNWpUna9p3749GzduJCMjg99++43Q0FAAunXrxs8//8zy5cv529/+Vq/P1Wg0PvsHbjAYWLBgAd9//z1gzVoff/xxWrRowdatW316bA1Bxt+8xw9yD5r7+EHuQXMev1eTmqioKKKios75OoPBAIBKpXJ6XKVSYbFYPBJbU2Tb1p6Tk4Narea2227jpptuQq1W++UaqhBCCFEfPlEonJqaSosWLZg2bRoPPfQQgYGBfP755+Tk5DBo0CBvh+dxiqKQnp7Ou+++i9FoJDo6mieffPK8iqSFEEIIf+UTSU1UVBTvvfcer732GnfddRdGo5FOnTrx1ltv2bd4+6vy8nLeeustfvzxRwB69+5tX24SQgghxFk+kdSAtQD2/fff93YYjerQoUPMnj2bY8eOoVarufPOO7nxxhtld5MQQgjhgs8kNc2JoiisXr2a999/H5PJRMuWLZkyZYrfz0oJIYQQF0KSmiamtLSUN998k59//hmAvn378thjjxEWFublyIQQQoimTZKaJuTAgQPMnj2b48ePo9Vqueuuuxg5cmSNXV9CCCGEqEmSmiZAURRWrlzJwoULMZlMtGrViilTptC5c2dvhyaEEEL4DElqvKykpITXX3+dTZs2AXDZZZfxyCOP2JsMCiGEEMI9ktR40d69e3n55ZfJz89Hq9Vy7733MmzYMFluEkIIIc6DJDVeYLFYWL58OR9//DFms5k2bdowdepUkpKSvB2aEEII4bMkqWlkp0+f5rXXXuP3338H4Morr+Shhx4iODjYy5EJIYQQvk2Smka0a9cu5syZw6lTp9DpdNx///0MHTpUlpuEEEKIBiBJTSOwWCwsXbqUxYsXY7FYiIuLY8qUKSQkJHg7NCGEEMJvSFLjYUVFRbz66qts3boVgEGDBjFhwgT0er13AxNCCCH8jCQ1HrR9+3ZeeeUVCgsLCQgI4IEHHuCaa66R5SYhhBDCAySp8QCz2cznn3/OZ599hsVioX379kydOpUOHTp4OzQhhBDCb0lS08AKCgp49dVX2b59OwBXX301DzzwAEFBQV6OTAghhPBvktQ0oC1btvDqq69SXFxMUFAQEyZM4KqrrvJ2WEIIIUSzIElNAzCbzSxZsoT//ve/KIpCfHw8U6dOpV27dt4OTQghhGg2JKlpAJ988glLly4FYOjQodx3330EBgZ6OSohhBCieZGkpgG0bt2aNm3aMG7cONLS0rwdjhBCCNEsSVLTAIYOHcrQoUO9HYYQQgjRrKm9HYAQQgghREOQpEYIIYQQfkGSGiGEEEL4BUlqhBBCCOEXJKkRQgghhF+QpEYIIYQQfkGSGiGEEEL4BUlqhBBCCOEXJKkRQgghhF+QpEYIIYQQfkGSGiGEEEL4BUlqhBBCCOEXJKkRQgghhF+QpEYIIYQQfkHr7QAak6IoAJjNZi9H0vBsY/LHsblDxt+8xw9yD5r7+EHugT+P3zYm28/x2qiUc73Cj1RVVbFjxw5vhyGEEEKI89CjRw8CAgJqfb5ZJTUWiwWTyYRarUalUnk7HCGEEEK4QVEULBYLWq0Wtbr2yplmldQIIYQQwn9JobAQQggh/IIkNUIIIYTwC5LUCCGEEMIvSFIjhBBCCL8gSY0QQggh/IIkNUIIIYTwC5LUCCGEEMIvSFIjhBBCCL8gSY0fOnz4MBMmTKBfv35ccskljB07lo0bN3o7rEaVkZHBzTffTEpKCn369OHBBx/0dkheUVVVxQ033EBycjJ79uzxdjiN4ujRo/z9739n8ODBpKSkcM011zBv3jyqqqq8HZpHffLJJwwePJgePXpw8803s337dm+H1CjefvttxowZQ69evbjssst48MEHyczM9HZYXvPOO++QnJzMjBkzvB2KV0hS44fGjx+P2Wxm4cKFfPnll3Tp0oXx48eTn5/v7dAaRXp6OlOmTGH06NGsWLGCJUuWcP3113s7LK+YPXs2rVq18nYYjSozMxNFUXj++edZtWoVTz31FJ9++ilz5871dmges3r1ambOnMlDDz3EsmXL6NKlC/feey+nTp3ydmget2nTJm6//XY+//xzPvzwQ0wmE/feey/l5eXeDq3Rbd++nU8//ZTk5GRvh+I9ivArp06dUjp37qz89ttv9sdKSkqUzp07Kxs2bPBiZI3DaDQqV155pfL55597OxSvy8jIUK677jrlwIEDSufOnZXdu3d7OySveffdd5XBgwd7OwyPuemmm5Tp06fbvzabzcoVV1yhvP32216Myjts3wM3bdrk7VAaVWlpqTJkyBBlw4YNyrhx45QXX3zR2yF5hczU+JnIyEgSEhJYvnw55eXlmEwmPvvsM6Kjo+nWrZu3w/O43bt3c/z4cdRqNTfeeCNXXHEF9913H/v37/d2aI3q5MmTPPPMM8yePZugoCBvh+N1JSUlhIeHezsMj6iqqmLXrl0MGDDA/pharWbAgAFs2bLFi5F5R0lJCYDf/nnX5vnnn2fgwIFOfw+aI0lq/IxKpeI///kPu3fv5pJLLiElJYUPP/yQ9957r1n8T37kyBEA3nzzTSZMmMCCBQsIDw/njjvuoKioyLvBNRJFUZg2bRq33norPXr08HY4XpeVlcWiRYu49dZbvR2KRxQWFmI2m4mOjnZ6PDo6mpMnT3opKu+wWCz861//4pJLLqFz587eDqfRrFq1it27dzNp0iRvh+J1Wm8HINwzZ84c3n333Tpfs3r1ahITE5k+fTrR0dF88sknBAUF8d///pfx48ezdOlSn62vcHf8FosFsNYVDR06FICZM2eSlpbGN99849M/2Ny9Bxs2bKCsrIwHHnigkSJrHO6OPykpyf718ePHue+++7juuuu45ZZbPB2i8LLp06dz4MABFi9e7O1QGs2xY8eYMWMGH3zwAYGBgd4Ox+skqfER99xzD6NGjarzNe3bt2fjxo1kZGTw22+/ERoaCkC3bt34+eefWb58OX/7298aI9wG5+74bcXQjj/YAgICaN++PceOHfNojJ5Wn78DW7durTFLM2bMGEaMGMGsWbM8GabHuDt+m+PHj3PnnXfSq1cvXnjhBU+H5zWRkZFoNJoaRcGnTp2iZcuWXoqq8T3//PNkZGSwaNEi2rRp4+1wGs2uXbs4deoUo0ePtj9mNpv57bff+OSTT9ixYwcajcaLETYuSWp8RFRUFFFRUed8ncFgAKzLUI5UKpV9FsMXuTv+7t27ExAQwOHDh7n00ksBMBqN5OTkEBsb6+kwPcrde/D0008zceJE+9cnTpzg3nvvZe7cufTs2dODEXqWu+OHswlNt27dmDlzJmq1/660BwQE0K1bN3755ReuueYawLoM88svvzBu3DgvR+d5iqLwwgsvsGbNGj7++GOnxLY56N+/P1999ZXTY0899RSJiYncf//9zSqhAUlq/E5qaiotWrRg2rRpPPTQQwQGBvL555+Tk5PDoEGDvB2ex4WGhnLrrbfyxhtv0LZtW2JjY3n//fcBuO6667wcXeOonrwFBwcD0KFDh2bxL9jjx49zxx13EBsby9SpUykoKLA/FxMT48XIPOfuu+9m6tSpdO/enZSUFBYuXIjBYHD617u/mj59Ov/73//497//TUhIiH22NiwsrFkUyYeGhtaoHwoODiYiIqJZ1RXZSFLjZ6Kionjvvfd47bXXuOuuuzAajXTq1Im33nqLLl26eDu8RjFlyhS0Wi1TpkyhoqKCnj17snDhwmZRKC1gw4YNZGVlkZWVRVpamtNz+/bt81JUnjVs2DAKCgqYN28e+fn5XHzxxbz33nvNYvlpyZIlANxxxx1Oj8+cObNZJHXCmUpRFMXbQQghhBBCXCj/XWgWQgghRLMiSY0QQggh/IIkNUIIIYTwC5LUCCGEEMIvSFIjhBBCCL8gSY0QQggh/IIkNUIIIYTwC5LUCCGEEMIvSFIjhB+44447mDFjhrfDcPLll1/az99qitauXcu1117LxRdf3OTuXUM5evQoycnJ7Nmzx9uhCNEo5JgEIRpJcnJync8//PDDPPLII40Sy9GjR7n66qtZvnw5F198sUc+Y9iwYQwcOND+9RtvvMHatWtZsWLFeV/zyy+/5KmnnrJ/HRwcTEJCAuPHj2fIkCH1utY///lPRo8ezR133EFISMh5x3Q+HMehVqsJDQ2lY8eODBw4kLvuuouwsLAG+Zy2bdvy008/ERkZ2SDXE6Kpk6RGiEby008/2X+/evVq5s2bxzfffGN/zHbwpL8ICgryyIGCoaGh9vtWVlbGl19+ycSJE/nf//5HYmKiW9coKyvj1KlTXHHFFbRu3fq8Y6mqqiIgIOC83msbh6IolJSU8Mcff/DOO+/w5ZdfsmTJkguKy0aj0fjtIZ5CuCLLT0I0kpiYGPt/YWFhqFQq+9cGg4Enn3ySAQMG0KtXL8aMGcPPP//s9P5PPvmEIUOG0KNHDwYMGMCjjz5a62dlZGTQu3dvVq5ceV6xVlVV8eKLL3LZZZfRo0cPxo4dy/bt251e891339njueOOO1i2bBnJycmcPn0acF5++vLLL3nzzTfZu3cvycnJJCcn8+WXX6IoCm+88QaDBg2ie/fuXHHFFbz44ot1xuZ43zp27MjEiRNRq9VOh1VWVVUxa9YsrrzySlJTU7n55pv59ddfAfj111+55JJLALjrrrtITk62P5eens7w4cPp3r07gwcP5oMPPnD67MGDB/PWW28xZcoULrnkEv75z38C8Pvvv3PbbbeRkpLCwIEDefHFFykvL3drHK1atSIpKYmbb76ZTz/9lPLycl5++WX76ywWC2+//TaDBw8mJSWFkSNHOiXDxcXFTJo0if79+5OSksKQIUP44osvANfLT+7+uf3444/85S9/oVevXtx7772cOHGizvEI0RTITI0QTUB5eTkDBw7k8ccfJyAggOXLlzN+/Hi++eYbYmNj2bFjBzNmzGD27Nn06tWL4uJifv/9d5fX+uqrr3j22Wd55ZVXuOqqq84rntmzZ5Oens5LL71EXFwc7733Hvfddx/ffvstERERHDlyhMcee4w77riDm2++mT179jBr1qxarzds2DAOHDjAjz/+yIcffghAWFgY6enp/Oc//+HVV1+lU6dOnDx5kr1797odp9lsZvny5QB069bN/vjzzz/PwYMHmTt3Lq1atWLNmjXcd999fPXVV/Tq1YtvvvmG6667jjfeeINevXoRHh7Ozp07mThxIg8//DDDhg1jy5YtTJ8+nYiICKfTnj/44AMeeughHn74YQCys7O5//77eeyxx/jXv/5FQUEBL7zwAi+88AIzZ86sz20nOjqaESNG8MUXX2A2m9FoNLz99tusXLmS6dOn07FjR3777TcmT55M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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat2).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "201fd87f-b7d1-4200-8267-c57c357a0fa1",
"metadata": {},
"source": [
"And it seems like we've reached a new compromise! The AP-1 related tasks are nicely separated from the other tasks (except for two of them) and, although they do not reach the desired objective value of `3`, the flip side is that the other tasks seem to be much closer to their original values.\n",
"\n",
"\n",
"#### Input Masks\n",
"\n",
"Sometimes, we may not want to consider substitutions at every position in the sequence. Perhaps we know that the most important part of the sequence is in the middle, or have known motifs in our sequence that we want to protect, or maybe we just do not need to be as precise as considering any possible possible. Regardless of the reason for having a mask, using one can speed up design significantly.\n",
"\n",
"Normally, the input to the model is 2000 bp. What happens if we only use the middle 200 bp for design?"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "a54c6ad3-f0f4-416c-a095-0725aec55b8c",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:16:09.407196Z",
"iopub.status.busy": "2026-06-25T14:16:09.406946Z",
"iopub.status.idle": "2026-06-25T14:16:43.009684Z",
"shell.execute_reply": "2026-06-25T14:16:43.008699Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 1.13, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:06, 4.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:05, 4.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:05, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:05, 4.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:05, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:04, 4.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:01<00:04, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:01<00:04, 4.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:04, 4.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:03, 4.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:02<00:03, 4.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:02<00:03, 4.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:03, 4.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:03<00:02, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:03<00:02, 4.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:03<00:02, 4.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:04<00:02, 4.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:04<00:01, 4.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:04<00:01, 4.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:04<00:01, 4.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:05<00:01, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:05<00:01, 3.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:05<00:00, 3.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:05<00:00, 3.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:06<00:00, 3.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.6572, Improvement: 0.4728, Motif Idx: 2, Pos Idx: 904, Time (s): 6.381\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:06, 4.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:05, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:05, 4.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:05, 4.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:05, 4.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:05, 3.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:01<00:04, 3.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:02<00:04, 3.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:04, 4.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:03, 4.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:02<00:03, 4.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:02<00:02, 4.83it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:03, 3.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:03<00:03, 3.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:03<00:03, 2.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:04<00:03, 2.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:04<00:02, 3.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:04<00:02, 3.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:05<00:01, 3.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:05<00:01, 3.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:05<00:01, 3.87it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:05<00:01, 3.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:06<00:00, 3.89it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:06<00:00, 3.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:06<00:00, 3.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 3.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 0.6223, Improvement: 0.03489, Motif Idx: 15, Pos Idx: 1099, Time (s): 6.82\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:06, 3.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:05, 4.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:05, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:05, 4.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:05, 3.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:05, 3.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:01<00:04, 3.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:02<00:05, 3.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:05, 2.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:03<00:05, 2.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:03<00:05, 2.76it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:03<00:04, 3.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:04, 3.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:04<00:03, 3.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:04<00:03, 3.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:04<00:02, 3.72it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:04<00:02, 3.84it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:05<00:02, 3.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:05<00:01, 3.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:05<00:01, 4.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:05<00:01, 4.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:06<00:00, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:06<00:00, 4.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:06<00:00, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:06<00:00, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:07<00:00, 4.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:07<00:00, 3.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 0.5964, Improvement: 0.02594, Motif Idx: 1, Pos Idx: 999, Time (s): 7.116\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:05, 4.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:05, 4.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:05, 4.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:05, 4.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:05, 4.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:05, 3.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:01<00:04, 4.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:01<00:04, 4.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:04, 4.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:03, 4.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:02<00:03, 4.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:02<00:03, 3.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:03, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:03<00:02, 4.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:03<00:02, 4.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:03<00:02, 4.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:03<00:01, 4.78it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:04<00:01, 4.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:04<00:01, 4.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:04<00:01, 4.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:04<00:01, 4.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:05<00:00, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:05<00:00, 4.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:05<00:00, 4.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:05<00:00, 4.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 0.5873, Improvement: 0.009092, Motif Idx: 5, Pos Idx: 922, Time (s): 6.186\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:05, 4.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:05, 4.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:05, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:05, 4.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:05, 3.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:06, 3.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:02<00:06, 2.89it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:02<00:05, 3.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:05, 3.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:04, 3.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:03<00:03, 3.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:03<00:03, 3.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:03, 3.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:03<00:02, 4.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:04<00:02, 4.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:04<00:02, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:04<00:02, 4.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:04<00:01, 4.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:05<00:01, 4.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:05<00:01, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:05<00:01, 4.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:05<00:00, 4.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:05<00:00, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:06<00:00, 4.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:06<00:00, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:06<00:00, 3.87it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 0.5821, Improvement: 0.005156, Motif Idx: 8, Pos Idx: 945, Time (s): 6.72\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"y = predict(model, X)\n",
"y[:, idxs] = 3\n",
"\n",
"input_mask = torch.zeros(2000, dtype=bool)\n",
"input_mask[900:1100] = True\n",
"\n",
"X_hat2 = greedy_substitution(model, X, y, motifs, max_iter=5, input_mask=input_mask, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "eb99ee97-4aa6-4fc9-8927-3f9590b288b5",
"metadata": {},
"source": [
"As you might expect, we see a clear speed improvement when only considering one tenth of the positions -- each round now evaluates roughly a tenth as many substitutions. That makes sense. But how do the results look?"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "34db6863-b9b7-414b-923b-d762b8bf27be",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:16:43.011914Z",
"iopub.status.busy": "2026-06-25T14:16:43.011825Z",
"iopub.status.idle": "2026-06-25T14:16:43.432944Z",
"shell.execute_reply": "2026-06-25T14:16:43.432099Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGwCAYAAABRgJRuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmopJREFUeJzs3Xlc1HX+wPHXXMAAyuWBoCKQQt5Gpmkh2UFpZWr1y7Lark1rK9u82q01K1cry7Ja7XTdzI619SgssowoyyzTwAsVDBK8ORQYYI7v749xvs5wDgoMDO/n4+EDmeM7n8+A8PbzeX/eb42iKApCCCGEEG2c1tMDEEIIIYRoChLUCCGEEMIrSFAjhBBCCK8gQY0QQgghvIIENUIIIYTwChLUCCGEEMIrSFAjhBBCCK+g9/QAWpLNZsNisaDVatFoNJ4ejhBCCCHcoCgKNpsNvV6PVlv3eky7CmosFguZmZmeHoYQQgghzsKAAQPw8fGp8/52FdQ4orsBAwag0+k8PJqmZbVayczM9Mq5uUPm377nD/IetPf5g7wH3jx/x9zqW6WBdhbUOLacdDqd133BHbx5bu6Q+bfv+YO8B+19/iDvgTfPv6HUEUkUFkIIIYRXkKBGCCGEEF5BghohhBBCeIV2lVPjLqvVitls9vQwGsVqtQJQUVHhtXup9WnO+RsMhnb5ngohRFsjQY0TRVE4fPgwxcXFnh5KoymKgl6vJzc3t13W4Gnu+QcHBxMeHt4u31shhGgrJKhx4ghounTpgr+/f5v6BaYoCiaTCaPR2KbG3VSaa/6KolBeXs7Ro0cB6NatW5NdWwghRNOSoOY0q9WqBjRhYWGeHk6jOaot+vn5tdugprnmbzQaATh69ChdunSRrSghhGilJFH4NEcOjb+/v4dHIlojx/dFW8u1EkKI9kSCmmra4yqHaJh8XwghROsnQY0QQgghvIIENUIIIYTwChLUCCGEEMIrSFDjJbZt28aFF17I/fffX+O+gwcPEhcXp/4ZNmwYd999N7t27ar3ms8++ywTJkygf//+jBs3rt7H/vTTTy6vUdufn3766ZzmeLYcYzt58qRHXl8IIdoDRVGorKz06BjkSLeX+OSTT/i///s/1q5dy5EjR+jatWuNx/z73//mvPPO4/Dhw8ybN4/77ruPzz//nI4dO9Z53YkTJ/Lbb7+RlZVV7+sPGTKE77//Xv183rx5lJaWMn/+fPW2oKCgRs3JbDZjMBga9RwhhBAtr6CggIULF5Kfn8/rr79Op06dPDIOWanxAmVlZaxfv56bbrqJpKQkVq9eXevjgoOD6dy5MwMGDGDmzJkcP36c3377rc7rPvHEE9x222306NGjwTH4+PjQuXNn9Y+fn5/Lbbt37+bOO+/kwgsvZNiwYdx///3k5eWpz3esJq1fv57JkyczYMAAPv30UywWC88++6z6vBdeeIFZs2bxwAMPqM+12Wy88cYbXHvttQwaNIjrr7+eL774Qr3uHXfcAcDQoUOJi4tj9uzZAHzxxRdcd911DBw4kGHDhvGnP/2J8vLyht9wIYQQqm+//ZZHH32U/fv34+Pjg4+Pj8fGIis1zcFigZwciIkBffO/xZ9//jkxMTH06tWL6667jvnz53P//ffXewzZz88PaLm6KyaTibvuuou4uDjKy8t55ZVXePDBB1m7di1a7ZnYeuHChcyePZvzzz8fX19f3nrrLT799FPmz59PTEwM//nPf/jqq68YNmyY+pw33niDdevW8be//Y24uDh++eUXZsyYQWhoKAkJCbz66qs89NBDfPHFFwQGBuLn58fRo0d57LHHmDFjBldccQVlZWX88ssvKIrSIu+HEEK0dZWVlbz11lt8+eWXAPTr14/p06fXu/rf3CSoaWoWC1x8MfzyC1x4Ifz4Y7MHNqtWreL6668H4NJLL+Vvf/sbW7ZscfnF7+zkyZP861//wt/fn4EDBzbr2BySk5NdPv/nP//JxRdfzP79++nTp496+5133slVV12lfr5ixQr+/Oc/c+WVVwLwj3/8g/T0dPX+qqoq3njjDd59913i4uLw9/enZ8+ebN26lY8++oiLLrpI3fYKCwtT/7Hl5eVhsVi48soriYyMBCAuLq55Ji+EEF7m4MGDPPfcc2q/vZtuuolJkyZ5vOK6BDVNLSfHHtCA/WNODjj90m76l8shMzOT1157DQC9Xs+YMWNYtWpVjaDmlltuQavVUl5eTo8ePXj55Zfp1KkT9957L1u3bgUgIiKClJSUJh/n77//zuLFi/ntt98oKipSV0QOHTrkEtT0799f/fupU6c4fvy4S+Cl0+no168fNpsNgNzcXEwmE/fccw+KoqirU2azmfPPP7/O8cTHx3PxxRdz3XXXcckll3DJJZeQnJzc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oaFs377ds4PzgDYT1Bw6dIh58+bx7rvv4uvre07XGjBggNfVMrFarWRmZnrl3Nwh82/f8wd5D9r7/KH9vQeFhYUsWrSIHTt2ADB69GiGDx/OBRdc4HXzd3xtG9JmgpqdO3dy4sQJJkyYoN5mtVr5+eefef/998nMzHT7i9gWi+u5y5vn5g6Zf/ueP8h70N7nD+3jPdi2bRsvvfQSJSUl+Pn5MXXqVBITE9m+fXu7mH9d2kxQM3z4cD799FOX2x5//HFiYmK477772u0XUAghRPthtVpZuXIlq1atQlEUevXqxcyZM+nevbtX5M6cqzYT1AQGBtKnTx+X2/z9/QkODq5xuxBCCOFtjh8/zsKFC9m1axcAV199Nffcc885p2R4kzYT1AghhBDt1S+//MKiRYs4deoURqORv/zlL1x66aWeHlar06aDmvfee8/TQxBCCCGajcVi4b333mP16tUAxMbGMmPGDCIiIjw8stapTQc1QgghRFu2YnMuS9KymZoUy+ThUS73HT16lBdeeIGsrCwArr32Wu666y4MBoMnhtomSFAjhBBCeMiStGzyi00sSct2CWo2b97M4sWLKS0tJSAggIceeogRI0Z4cKRtgwQ1QgghhIdMTYpVV2oAzGYz//73v9XTvr1792bGjBmEh4d7cphthgQ1QgghhIdMHh6lrtAcPnyY559/nv379wMwbtw47rjjDtluagQJaoQQQogmUl+OTH1++OEHFi9eTHl5OYGBgTzyyCMMGzasGUfqnSSoEUIIIZpIXTkydamqquLdd99l/fr1AMTHxzNjxgw6d+7c3EP1ShLUCCGEEE2keo5MfQoKCnj++efJyckBYMKECUyePBm9Xn41ny1554QQQogm4pwjU5/09HRef/11TCYTHTt25NFHHyUhIaEFRujdJKgRQgghWkhlZSVvv/02qampAPTt25cZM2YQFhbm4ZF5BwlqhBBCiCZSX6LwwYMHee6558jNzUWj0XDTTTcxadIkacjchCSoEUIIIZqII1F4ztodAGpg880337BkyRIqKioICgrir3/9K0OGDPHkUL2S1tMDEEIIIbzF1KRYdBqwKvYAp6KigldeeYVFixZRUVHBgAEDeOWVVySgaSayUiOEEEKcperbTY6VmSVp2dzaz5/HHnuMP/74A41Gwy233MLNN98s203NSFZqhBBCCCcr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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat2).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "962201b0-af02-4360-944e-940e48064754",
"metadata": {},
"source": [
"The results look quite similar to before. However, this is likely because the original sequence we used was completely randomly generated and the improvements are likely coming from simply adding AP-1 motifs nearby to each other, so limiting the possible space isn't a huge constraint. In settings with actual structured sequences as input or where running more iterations to get the maximum possible improvement is necessary, having more sequence can be helpful."
]
},
{
"cell_type": "markdown",
"id": "0c20d7d3-84ea-4832-9e4a-bc29af0cabaf",
"metadata": {},
"source": [
"#### Loss Functions\n",
"\n",
"By default, the loss used is `torch.nn.MSELoss` without reduction because it is a reasonable and general-purpose loss. However, you can use whatever loss you'd like by passing the loss function into `loss=...`. This can be any loss implemented in PyTorch that is reasonable for your model or any custom function with the signature `def loss(y, y_hat)` with `y.shape == (n, ...)` that returns a tensor with size `(n, ...)`. Basically, every example that gets passed into the loss function needs to have one or more losses associated with it. Everything except for the first dimension gets averaged such that you get one value per example. This is a critical detail because, by default, PyTorch losses will average over the batch dimension as well and only give you a single number regardless of the number of examples passed in. The design function needs to know the example with the minimal loss and so any function -- custom or not -- needs to return the loss for each example. \n",
"\n",
"To demonstrate, let's do the design but use a different loss function."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "71bf8273-5963-4f2f-bad0-cc9710f23b36",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:16:43.435171Z",
"iopub.status.busy": "2026-06-25T14:16:43.435080Z",
"iopub.status.idle": "2026-06-25T14:17:21.856245Z",
"shell.execute_reply": "2026-06-25T14:17:21.855246Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 0.1229, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:16, 1.12it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:11, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:11, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:10, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:09, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:08, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:11<00:07, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:06, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:05, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:04, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.1188, Improvement: 0.004087, Motif Idx: 5, Pos Idx: 910, Time (s): 19.55\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:19, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:16, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:15, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:12, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:09, 1.89it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:09, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:09, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:09, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:09, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:09, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:08, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:07, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:06, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:05, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:04, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.41it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 0.1185, Improvement: 0.0003168, Motif Idx: 14, Pos Idx: 692, Time (s): 18.46\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"y = predict(model, X)\n",
"y[:, idxs] = 3\n",
"\n",
"X_hat3 = greedy_substitution(model, X, y, motifs, max_iter=3, loss=torch.nn.HuberLoss(reduction='none'), verbose=True)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "1c838b7b-f789-44d6-8658-690d6a5acec7",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:21.858255Z",
"iopub.status.busy": "2026-06-25T14:17:21.858156Z",
"iopub.status.idle": "2026-06-25T14:17:22.287149Z",
"shell.execute_reply": "2026-06-25T14:17:22.286424Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGwCAYAAABRgJRuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmopJREFUeJzs3Xlc1HX+wPHXXMAAyuWBoCKQQt5Gpmkh2UFpZWr1y7Lark1rK9u82q01K1cry7Ja7XTdzI619SgssowoyyzTwAsVDBK8ORQYYI7v749xvs5wDgoMDO/n4+EDmeM7n8+A8PbzeX/eb42iKApCCCGEEG2c1tMDEEIIIYRoChLUCCGEEMIrSFAjhBBCCK8gQY0QQgghvIIENUIIIYTwChLUCCGEEMIrSFAjhBBCCK+g9/QAWpLNZsNisaDVatFoNJ4ejhBCCCHcoCgKNpsNvV6PVlv3eky7CmosFguZmZmeHoYQQgghzsKAAQPw8fGp8/52FdQ4orsBAwag0+k8PJqmZbVayczM9Mq5uUPm377nD/IetPf5g7wH3jx/x9zqW6WBdhbUOLacdDqd133BHbx5bu6Q+bfv+YO8B+19/iDvgTfPv6HUEUkUFkIIIYRXkKBGCCGEEF5BghohhBBCeIV2lVPjLqvVitls9vQwGsVqtQJQUVHhtXup9WnO+RsMhnb5ngohRFsjQY0TRVE4fPgwxcXFnh5KoymKgl6vJzc3t13W4Gnu+QcHBxMeHt4u31shhGgrJKhx4ghounTpgr+/f5v6BaYoCiaTCaPR2KbG3VSaa/6KolBeXs7Ro0cB6NatW5NdWwghRNOSoOY0q9WqBjRhYWGeHk6jOaot+vn5tdugprnmbzQaATh69ChdunSRrSghhGilJFH4NEcOjb+/v4dHIlojx/dFW8u1EkKI9kSCmmra4yqHaJh8XwghROsnQY0QQgghvIIENUIIIYTwChLUCCGEEMIrSFDjJbZt28aFF17I/fffX+O+gwcPEhcXp/4ZNmwYd999N7t27ar3ms8++ywTJkygf//+jBs3rt7H/vTTTy6vUdufn3766ZzmeLYcYzt58qRHXl8IIdoDRVGorKz06BjkSLeX+OSTT/i///s/1q5dy5EjR+jatWuNx/z73//mvPPO4/Dhw8ybN4/77ruPzz//nI4dO9Z53YkTJ/Lbb7+RlZVV7+sPGTKE77//Xv183rx5lJaWMn/+fPW2oKCgRs3JbDZjMBga9RwhhBAtr6CggIULF5Kfn8/rr79Op06dPDIOWanxAmVlZaxfv56bbrqJpKQkVq9eXevjgoOD6dy5MwMGDGDmzJkcP36c3377rc7rPvHEE9x222306NGjwTH4+PjQuXNn9Y+fn5/Lbbt37+bOO+/kwgsvZNiwYdx///3k5eWpz3esJq1fv57JkyczYMAAPv30UywWC88++6z6vBdeeIFZs2bxwAMPqM+12Wy88cYbXHvttQwaNIjrr7+eL774Qr3uHXfcAcDQoUOJi4tj9uzZAHzxxRdcd911DBw4kGHDhvGnP/2J8vLyht9wIYQQqm+//ZZHH32U/fv34+Pjg4+Pj8fGIis1zcFigZwciIkBffO/xZ9//jkxMTH06tWL6667jvnz53P//ffXewzZz88PaLm6KyaTibvuuou4uDjKy8t55ZVXePDBB1m7di1a7ZnYeuHChcyePZvzzz8fX19f3nrrLT799FPmz59PTEwM//nPf/jqq68YNmyY+pw33niDdevW8be//Y24uDh++eUXZsyYQWhoKAkJCbz66qs89NBDfPHFFwQGBuLn58fRo0d57LHHmDFjBldccQVlZWX88ssvKIrSIu+HEEK0dZWVlbz11lt8+eWXAPTr14/p06fXu/rf3CSoaWoWC1x8MfzyC1x4Ifz4Y7MHNqtWreL6668H4NJLL+Vvf/sbW7ZscfnF7+zkyZP861//wt/fn4EDBzbr2BySk5NdPv/nP//JxRdfzP79++nTp496+5133slVV12lfr5ixQr+/Oc/c+WVVwLwj3/8g/T0dPX+qqoq3njjDd59913i4uLw9/enZ8+ebN26lY8++oiLLrpI3fYKCwtT/7Hl5eVhsVi48soriYyMBCAuLq55Ji+EEF7m4MGDPPfcc2q/vZtuuolJkyZ5vOK6BDVNLSfHHtCA/WNODjj90m76l8shMzOT1157DQC9Xs+YMWNYtWpVjaDmlltuQavVUl5eTo8ePXj55Zfp1KkT9957L1u3bgUgIiKClJSUJh/n77//zuLFi/ntt98oKipSV0QOHTrkEtT0799f/fupU6c4fvy4S+Cl0+no168fNpsNgNzcXEwmE/fccw+KoqirU2azmfPPP7/O8cTHx3PxxRdz3XXXcckll3DJJZeQnJzc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oaFs377ds4PzgDYT1Bw6dIh58+bx7rvv4uvre07XGjBggNfVMrFarWRmZnrl3Nwh82/f8wd5D9r7/KH9vQeFhYUsWrSIHTt2ADB69GiGDx/OBRdc4HXzd3xtG9JmgpqdO3dy4sQJJkyYoN5mtVr5+eefef/998nMzHT7i9gWi+u5y5vn5g6Zf/ueP8h70N7nD+3jPdi2bRsvvfQSJSUl+Pn5MXXqVBITE9m+fXu7mH9d2kxQM3z4cD799FOX2x5//HFiYmK477772u0XUAghRPthtVpZuXIlq1atQlEUevXqxcyZM+nevbtX5M6cqzYT1AQGBtKnTx+X2/z9/QkODq5xuxBCCOFtjh8/zsKFC9m1axcAV199Nffcc885p2R4kzYT1AghhBDt1S+//MKiRYs4deoURqORv/zlL1x66aWeHlar06aDmvfee8/TQxBCCCGajcVi4b333mP16tUAxMbGMmPGDCIiIjw8stapTQc1QgghRFu2YnMuS9KymZoUy+ThUS73HT16lBdeeIGsrCwArr32Wu666y4MBoMnhtomSFAjhBBCeMiStGzyi00sSct2CWo2b97M4sWLKS0tJSAggIceeogRI0Z4cKRtgwQ1QgghhIdMTYpVV2oAzGYz//73v9XTvr1792bGjBmEh4d7cphthgQ1QgghhIdMHh6lrtAcPnyY559/nv379wMwbtw47rjjDtluagQJaoQQQogmUl+OTH1++OEHFi9eTHl5OYGBgTzyyCMMGzasGUfqnSSoEUIIIZpIXTkydamqquLdd99l/fr1AMTHxzNjxgw6d+7c3EP1ShLUCCGEEE2keo5MfQoKCnj++efJyckBYMKECUyePBm9Xn41ny1554QQQogm4pwjU5/09HRef/11TCYTHTt25NFHHyUhIaEFRujdJKgRQgghWkhlZSVvv/02qampAPTt25cZM2YQFhbm4ZF5BwlqhBBCiCZSX6LwwYMHee6558jNzUWj0XDTTTcxadIkacjchCSoEUIIIZqII1F4ztodAGpg880337BkyRIqKioICgrir3/9K0OGDPHkUL2S1tMDEEIIIbzF1KRYdBqwKvYAp6KigldeeYVFixZRUVHBgAEDeOWVVySgaSayUiOEEEKcperbTY6VmSVp2dzaz5/HHnuMP/74A41Gwy233MLNN98s203NSFZqhBBCCCcr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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat2).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "15c6d933-b6fd-4a9d-834f-ccc5f30401c4",
"metadata": {},
"source": [
"#### Elimination of Motifs\n",
"\n",
"An important part of this greedy procedure is that it does not only involve inserting new motifs into uninformative sequence, but that it will eliminate motifs that yield activity that the model does not want. As an illustration, let's consider the simple case where a motif drives unwanted AP-1 binding activity and the goal is to design a sequence that does not exhibit AP-1 binding.\n",
"\n",
"Here, we will start with a sequence that has the AP-1 motif in it already."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "660a4744-40bd-4b17-ae7b-111e98325c2a",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:22.289140Z",
"iopub.status.busy": "2026-06-25T14:17:22.289060Z",
"iopub.status.idle": "2026-06-25T14:17:22.291781Z",
"shell.execute_reply": "2026-06-25T14:17:22.291247Z"
}
},
"outputs": [],
"source": [
"from tangermeme.ersatz import substitute\n",
"\n",
"X = random_one_hot((1, 4, 2000), random_state=0).type(torch.float32)\n",
"X = substitute(X, \"GTGACTCATC\")"
]
},
{
"cell_type": "markdown",
"id": "b79852a6-5b03-492b-912e-e2ba18161c47",
"metadata": {},
"source": [
"Now, we will specify that we want baseline levels of AP-1 binding while preserving everything else."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "b20f862c-2c62-4a09-afd4-e9ae7c3aa9bb",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:22.292817Z",
"iopub.status.busy": "2026-06-25T14:17:22.292750Z",
"iopub.status.idle": "2026-06-25T14:17:42.647251Z",
"shell.execute_reply": "2026-06-25T14:17:42.646247Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 0.1575, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:19, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:18, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:16, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:11, 1.76it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:10, 1.86it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:15, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:15, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:13, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:12, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:12, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:10, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:06, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:06, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:03, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:03, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:19<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.30it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.1182, Improvement: 0.03929, Motif Idx: 25, Pos Idx: 986, Time (s): 19.96\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"y = predict(model, X)\n",
"y[:, idxs] = -5\n",
"\n",
"X_hat3 = greedy_substitution(model, X, y, motifs, max_iter=1, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "0befbb89-5ed2-4336-8a09-77eed8dd87b2",
"metadata": {},
"source": [
"It looks like the process figured out that it should substitute in a motif that the model does not respond to (the reverse complement of `GGCACGCGCC`, motif index 25) right in the middle of the sequence, where our AP-1 motif is, to eliminate it. Keep in mind that the process did not need to be told to eliminate motifs, or what motifs are uninformative. By being a comprehensive process, it can figure out both of these things in a data-driven manner. Further, the process can interleave the adding and eliminating of motifs -- it is not a \"one or the other\" situation. If some motifs need to be eliminated, and others need to be added, this procedure can figure that out (subject to the limitations of it being a greedy algorithm)."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "379755bc-7f5e-471d-9898-7cf7ddc7c584",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:42.649701Z",
"iopub.status.busy": "2026-06-25T14:17:42.649593Z",
"iopub.status.idle": "2026-06-25T14:17:43.065129Z",
"shell.execute_reply": "2026-06-25T14:17:43.064326Z"
}
},
"outputs": [
{
"data": {
"image/png": "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f8+ECRP48ccfCQsLq9A18vLyOH/+PDfddBNNmjS55liKiorQ6/XX9Fx7OxRFIScnh7///puPP/6Y77//nq+++uq64rLTaDQuu4mnEGWR4SchakhAQIDjX4MGDVCpVI6vjUYjEydOpHfv3nTu3Jl77rmHrVu3lnj+ihUruO2224iKiqJ3796MHz/+iq8VGxtL165d+eGHH64p1qKiIt5880169epFVFQUo0aNYt++fSXO+fXXXx3xjBkzhlWrVhEREcGFCxeAksNP33//PR988AGHDx8mIiKCiIgIvv/+exRFYf78+fTr148OHTpw00038eabb5YbW/H71rJlSyZMmIBarS6xWWVRURGzZs3i5ptvplOnTowcOZI///wTgD///JMuXboA8PDDDxMREeF4LCYmhiFDhtChQwf69+/PZ599VuK1+/fvz4cffsjkyZPp0qUL//73vwHYuXMnDzzwANHR0fTt25c333yT/Pz8CrWjcePGhIeHM3LkSL7++mvy8/N5++23HedZrVYWLVpE//79iY6OZtiwYSWS4ezsbF588UV69uxJdHQ0t912G9999x1Q9vBTRb9vmzdv5o477qBz5848/vjjnD17ttz2CFEbSE+NELVAfn4+ffv25YUXXkCv17N69WrGjh3LTz/9RGBgIHFxccyYMYPZs2fTuXNnsrOz2blzZ5nXWrt2LdOmTeOdd97hlltuuaZ4Zs+eTUxMDG+99RZBQUF88sknPPHEE/z888/4+Phw+vRpnn/+ecaMGcPIkSM5dOgQs2bNuuL1Bg8ezLFjx9i8eTNLliwBoEGDBsTExPD555/z7rvv0rp1a9LT0zl8+HCF47RYLKxevRqA9u3bO46//vrrHD9+nLlz59K4cWM2bNjAE088wdq1a+ncuTM//fQTt99+O/Pnz6dz5854e3uzf/9+JkyYwLPPPsvgwYPZvXs306dPx8fHp8Ruz5999hnPPPMMzz77LACJiYk8+eSTPP/88/znP/8hIyODN954gzfeeIOZM2dW5rbj7+/P0KFD+e6777BYLGg0GhYtWsQPP/zA9OnTadmyJX/99ReTJk3Cz8+P7t278/7773PixAkWL16Mr68viYmJFBQUlHn9in7fCgoK+Oyzz5g9ezZqtZpJkyYxa9Ys3nnnnUq1R4iaJkmNELVAZGQkkZGRjq8nTJjAL7/8wm+/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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat3).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "e12f20ca-bb3f-46fe-876e-0b49501005ff",
"metadata": {},
"source": [
"And it looks like the predicted signal is lower after the elimination of the motif!\n",
"\n",
"We can do a more targetted approach by using the greedy saturated mutagenesis approach."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "0413b121-b4f1-4c91-b33b-1e31facd17dd",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:43.067027Z",
"iopub.status.busy": "2026-06-25T14:17:43.066944Z",
"iopub.status.idle": "2026-06-25T14:17:45.881296Z",
"shell.execute_reply": "2026-06-25T14:17:45.880607Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 0.1575, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/4 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 25%|██████████████████████████████████████████████████████████▊ | 1/4 [00:00<00:02, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2/4 [00:01<00:01, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3/4 [00:01<00:00, 1.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:02<00:00, 1.83it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.1186, Improvement: 0.03883, Motif Idx: 3, Pos Idx: 995, Time (s): 2.194\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAGwCAYAAABRgJRuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAf3JJREFUeJzt3XlcVPX6wPHPbMCwyOYKIgIpuICaa5ZKZmmappb3Zmn74tJi5date8vKaxllWf3QrMzUrK6VZVpkJWkuueSCu4KCAm5ssgwwy/n9Mc4IisgoMDA879fLF86ZM4fnexjg4bs9KkVRFIQQQggh6jm1swMQQgghhKgOktQIIYQQwiVIUiOEEEIIlyBJjRBCCCFcgiQ1QgghhHAJktQIIYQQwiVIUiOEEEIIl6B1dgC1yWKxYDKZUKvVqFQqZ4cjhBBCiCpQFAWLxYJWq0Wtvnx/TINKakwmE0lJSc4OQwghhBBXITo6Gjc3t8s+36CSGlt2Fx0djUajcXI01ctsNpOUlOSSbasKaX/Dbj/IPWjo7Qe5B67cflvbKuulgQaW1NiGnDQajct9wW1cuW1VIe1v2O0HuQcNvf0g98CV23+lqSMyUVgIIYQQLkGSGiGEEEK4BElqhBBCCOESGtScmqoym80YjUZnh+EQs9kMQHFxscuOpVamJtuv0+ka5D0VQoj6RpKaMhRF4eTJk+Tm5jo7FIcpioJWqyU1NbVB7sFT0+338/OjefPmDfLeCiFEfSFJTRm2hKZp06Z4enrWq19giqJgMBjQ6/X1Ku7qUlPtVxSFoqIiTp8+DUCLFi2q7dpCCCGqlyQ155nNZntCExgY6OxwHGbbbdHDw6PBJjU11X69Xg/A6dOnadq0qQxFCSFEHSUThc+zzaHx9PR0ciSiLrK9L+rbXCshhGhIJKm5SEPs5RBXJu8LIYSo+ySpEUIIIYRLkKRGCCGEEC5BkhohhBBCuARJalzEjh076NatG0888cQlz504cYLIyEj7v549e/Lwww+zb9++Sq/5+uuvM3LkSDp27Midd95Z6bl//fVXuc9R0b+//vrrmtp4tWyxnTt3zimfXwghGgJFUSgpKXFqDLKk20V88803/POf/+T777/n1KlTNGvW7JJzPvvsM6677jpOnjzJzJkzeeyxx/jpp59o1KjRZa971113sWvXLg4ePFjp5+/SpQt//vmn/fHMmTMpKChg1qxZ9mO+vr4OtcloNKLT6Rx6jRBCiNqXkZFBXFwc6enpfPjhhzRu3NgpcUhPjQsoLCxk9erVjBo1itjYWL777rsKz/Pz86NJkyZER0czdepUzp49y65duy573Zdeeon77ruPkJCQK8bg5uZGkyZN7P88PDzKHdu/fz8PPPAA3bp1o2fPnjzxxBOkpaXZX2/rTVq9ejVjxowhOjqalStXYjKZeP311+2ve+utt5g2bRoTJkywv9ZisTB//nzuuOMOOnXqxLBhw/j555/t173//vsB6N69O5GRkUyfPh2An3/+maFDhxITE0PPnj158MEHKSoquvINF0IIYffHH3/w7LPPcuTIEdzc3HBzc3NaLNJTUxNMJkhJgfBw0Nb8Lf7pp58IDw+ndevWDB06lFmzZvHEE09UugzZw8MDqL19VwwGAw899BCRkZEUFRXx3nvvMXHiRL7//nvU6gu5dVxcHNOnT6ddu3a4u7uzYMECVq5cyaxZswgPD+fzzz/n119/pWfPnvbXzJ8/nx9++IF//etfREZGsm3bNqZMmUJAQABdu3bl/fff56mnnuLnn3/G29sbDw8PTp8+zfPPP8+UKVMYMGAAhYWFbNu2DUVRauV+CCFEfVdSUsKCBQv45ZdfAOjQoQOTJ0+utPe/pklSU91MJrjhBti2Dbp1g02bajyxWb58OcOGDQOgT58+/Otf/2LLli3lfvGXde7cOf7v//4PT09PYmJiajQ2m4EDB5Z7/N///pcbbriBI0eO0LZtW/vxBx54gNtuu83+eMmSJTz++OPceuutAPznP/9h3bp19udLS0uZP38+n376KZGRkXh6etKqVSu2b9/OV199RY8ePezDXoGBgfZvtrS0NEwmE7feeivBwcEAREZG1kzjhRDCxZw4cYI333zTXm9v1KhRjB492uk7rktSU91SUqwJDVg/pqRAmV/a1f/pUkhKSuKDDz4AQKvVMnjwYJYvX35JUnPPPfegVqspKioiJCSEd999l8aNG/Poo4+yfft2AIKCgli1alW1x3ns2DHmzp3Lrl27yMnJsfeIZGZmlktqOnbsaP9/fn4+Z8+eLZd4aTQaOnTogMViASA1NRWDwcAjjzyCoij23imj0Ui7du0uG09UVBQ33HADQ4cO5aabbuKmm25i4MCBDs/7EUKIhub3338nPj6ekpISfH19ef755+ncubOzwwIkqal+4eHWHppt26B7d+vjGrR8+XJMJhN9+/a1H1MUBTc3N/7zn//g4+NjPz5nzhyuu+46/Pz8ynUPzpw5k+LiYsCaFNWEcePGERwczOuvv07Tpk2xWCzccccdlwx/OVqmwjYHZt68eTRq1KhcQcvKxnU1Gg0LFy7k77//ZsOGDSxevJg5c+bw9ddfV2kOkRBCNDTFxcXMnz+f3377DYCYmBiee+45AgICnBzZBZLUVDet1jrkVAtzakwmE99//z3Tp0+nd+/eFBcX2ws6Tpw4kR9//JHRo0fbz2/RogWtWrW65DoVrZSqTjk5ORw9etQ+4Rdgm603qxI+Pj40btyYpKQkunfvDlgLj+7bt4+oqCgAIiIicHNzIzMzk44dO1ZYXd22gspsNpc7rlKp6Nq1K127dmXixIncfPPN/Prrrzz00EPX3GYhhHAlaWlpvPnmmxw/fhy1Ws0999zDqFGjnD7cdDFJamqCVlujQ042iYmJ5OXlcffdd+Pt7U1RUZH9l/ptt93G8uXLyyU1jkpNTaWoqIgzZ85QXFzM/v37gQuJRFX5+vri5+fHV199RZMmTcjIyODtt9+u0mvHjBnD/PnzadWqFeHh4SxZsoS8vDx74uLt7c3DDz/MrFmzKC4u5oYbbqCgoIC///4bb29vRowYQXBwMCqVisTERPr164e7uztHjhxh06ZN3HjjjQQGBrJr1y6ys7MJr+GeNSGEqE8URWHNmjV89NFHlJaWEhAQwPPPP090dLSzQ6uQJDX12PLly+nduzc+Pj6XrNoZOHAgH3/8MQcOHMDb2/uqrv/SSy+xZcsW++Phw4cD8Ntvv9GyZcsqX0etVjNnzhxef/117rjjDsLCwnjppZcYO3bsFV/72GOPcfbsWaZNm4ZGo+Ef//gHN910U7m/DiZNmkRAQAALFy7k9ddfx8fHh/bt2zNu3DjA2hP11FNP8fbbb/PCCy8wfPhwHnvsMbZu3cqiRYsoKCggKCiI6dOn069fvyq3SwghXFlRURHx8fH88ccfgHU/smeffRY/Pz/nBlYJldKA1rCazWZ27txJ586dL+kyKy4u5ujRo4SFhdmXO9cniqKU66lxVRaLhdtvv53bb7+dSZMm2Y/XdPvr+vujsvd2Q9HQ70FDbz/IPajO9h89epTZs2eTnp6OWq3mvvvu46677iq3BUdtqmrbpKdG1Gnp6els2LCB7t27U1paytKlS0lPT2fo0KHODk0IIVyOoigkJCSwYMECjEYjgYGBTJkyhfbt2zs7tCqRpEbUaWq1mm+//ZY333wTRVFo27YtCxcuJCIiwtmhCSGESykqKuKDDz6wl7zp1q0bkyZNcupmeo6SpEbUaS1atODLL790dhhCCOHSjhw5wuzZszl58iQajYb777+fO++802nDTVdLkpqLNKApRsIB8r4QQrgiRVFYtWoVn376KSaTiSZNmjBlyhT7thn1jSQ159n2MikqKkKv1zs5GlHX2Db5k6rhQghXUVBQwPvvv8+mTZsA6NmzJ08//XS5TVvrG0lqztNoNPj5+XH69GmAereKSFEUSkpKUKvV9Sru6lJT7betqjp9+jR+fn4NckWFEML1HDp0iNmzZ3P69Gm0Wi0PPvggQ4cOrfe/PySpKaN58+YA9sSmPlEUBaPRiE6nq/dvyqtR0+338/Ozvz+EEKK+UhSF77//nkWLFmE2m2nWrBlTp06lTZs2zg6tWkhSU4ZKpaJFixY0bdr0kppEdZ3ZbObAgQNcd911DbI3oSbbr9PpGuQ9FUK4lvz8fN577z37pqq9e/fmqaeewsvLy8mRVR9Jaiqg0Wjq3S8xW10jDw+Pehd7dWjo7RdCiMrs37+ft956i7Nnz6LVann00Ue5/fbbXa5nX5IaIYQQwkVZLBa+++47Fi9ejMVioUWLFkydOtVl9/qSpEYIIYRwQXl5ebz77rts374dgL59+zJhwgQ8PT2dHFnNqV+76pTx0UcfERkZycyZM50dihBCCFGn7Nmzh2eeeYbt27fj5ubGxIkTef755106oYF62lOze/duvvzySyIjI50dihBCCFFnWCwW/ve///Hll19isVgIDg5m6tSphIWFOTu0WlHvkprCwkKmTJnC66+/Tnx8vLPDEUIIIeqE3Nxcli5dSkpKCgA333wz48aNa1Abyta7pObVV1+lX79+9O7d+6qTGttKGVdia5Mrtq0qpP0Nu/0g96Chtx8a9j3YvXs3c+bMITc3Fzc3N5544gn69+8PuMb9qGob6lVSs2rVKvbt28fy5cuv6TpJSUnVFFHd48ptqwppf8NuP8g9aOjth4Z1DywWC3/88Qfr1q0DoEmTJowaNYqAgAB27tzp3OCcoN4kNZmZmcycOZNPP/0Ud3f3a7pWdHS0y+1lYjabSUpKcsm2VYW0v2G3H+QeNPT2Q8O7B9nZ2cyZM4c9e/YA0L9/f3r16sX111+PRqPhi7/SmLcuhXF9w7m3ZysnR3ttbF/bK6k3Sc3evXvJyspi5MiR9mNms5mtW7eydOlSkpKSqvwmro+b61WVK7etKqT9Dbv9IPegobcfGsY92LFjB++88w55eXl4eHgwfvx4+vbty86dO+3tn7fuKOm5xcxbd5SxvWWicJ3Sq1cvVq5cWe7YCy+8QHh4OI899pjLv4GFEEIIs9nMF198wfLly1EUhdatWzN16lRatmx5ybyT8bERxCcmMz7WNTfaq0i9SWq8vb1p27ZtuWOenp74+fldclwIIYRwNWfPniUuLo59+/YBMGjQIB555JHLTskY0yuUMb1CazNEp6s3SY0QQgjRUG3bto05c+aQn5+PXq/nySefpE+fPvbnl2xOJT7xCEPC3ejc2XlxOlu9TmoWL17s7BCEEEKIGmMymVi8eDHfffcdABEREUyZMoWgoKBy58UnJpOeW8wXSSWsSklkfOx1Da6XBupxmQQhhBDClZ0+fZoXXnjBntDccccdzJ49+5KEBqzzZ4L9PEAF6bnFxCcm13a4dYIkNUIIIUQds3nzZiZNmsTBgwfx8vJi+vTpPP744+h0unLnLdmcyo1v/A7Auimx3NvRh2A/jwY1Obisej38JIQQQrgSo9HIZ599Zl/t26ZNG6ZMmULz5s0rPN867GQgPjGZ0d1bMjDCk2l39W6wK4Klp0YIIYSoA06ePMm0adPsCc2dd97JG2+8YU9obL0ySzan2l9jHXbSN9iemYtJT40QQgjhZBs3bmTu3LkUFRXh7e3NM888Q8+ePcudU7ZXxjYJuOyybVeo8XStJKkRQgghnKS0tJRPP/2U1atXAxAVFcWUKVNo0qTJJed2DfXnZJ6BrqH+tR1mvSFJjRBCCOEEGRkZzJ49m5SUFABGjhzJmDFj0Gov/Gq27j9j3RV4e2oOZgW2p+Y4K+Q6T5IaIYQQopatW7eODz/8EIPBQKNGjXj22Wfp2rXrJefFJRwk12AkLuEgkwdGNriyB46SpEYIIYSoJSUlJXz88cckJCQA0L59e6ZMmUJgYGC5XpmKNs5riGUPHCWrn4QQQohacOLECSZPnkxCQgIqlYp2Nw5kve8AfjpcAJSfCGwzeWAkwX56Jg+MdFbY9Yr01AghhBA1bO3atcTHx1NcXIyvry/PPfccTybkkJ5nIC7hIHEJBykxmfHT68oNL0nvjGMkqRFCCCFqSHFxMfPnz+e3334DoGloGw40iWVvSQDjYwOIT0ymsMRErsEIQKnJ4sxw6z1JaoQQQogakJaWxptvvsnx48dRqVTcc889vHnQn9wiMzNX7SfAy83eKxOXcJA8gxGzQrl9aIRjZE6NEEIIUY0URWHNmjU899xzHD9+HH9/f1577TXMYb3JLbZukGcwmknPNfDy93sA2Pnybbw2vKPsDnyNpKdGCCGEqCYGg4H4+HgSExMB6Ny5M8899xx+fn6MP194EkCv01BqMpfrmZH5M9dOkhohhBCiGhw9epTZs2eTnp6OWq3m3nvv5e6770attg6KBHq5kZ5rQKdW8eKQdgCy70w1k6RGCCGEuAaKopCQkMCCBQswGo0EBgYSc/sY3ktR8edXu9iemsP42Aj2ZuQBYFGUcrWbRPWRpEYIIYS4SkVFRXz44YesX78egG7duhF80138d80xzAqk5xoAa4/MkJggVu3OYEhMkDNDdmmS1AghhBBXITk5mTfffJOTJ0+i0Wjo0O8OEgytOf1rKmal/LldQ/2ZO7oLc0d3cU6wDYQkNUIIIYQDFEVh1apVfPrpp5hMJsxuPvS/5zE+21tKrqG4wtdIEcraIUmNEEIIUUUFBQW8//77bNq0CYBz3qEcD44lZZeBYmP5jfP0OjW3tm/OukNnKCwxsWRzqsyhqWGS1AghhBBVcOjQIWbPns3p06fRarXktezNMX0UqFQYyiQ0fnodkwdG2hOYG9/43V7TSZKamiVJjRBCCFGJxZuO8dmy5fikbcBiMdOsWTOmTp3KX1lu9p2AbVNoVFg30itrfGyELN2uJZLUCCGEEJeRn5/P0nnv4pWTggXo3bs3TXvdyYPfHGd8bAQ7X76NJZtTmblqH8VGC0M7XbqySTbVqz2S1AghhBAVOHDgALNnz8Yt5yyKSkPg9QNZqbQh+7djGIwW4hIOyk7AdYwkNUIIIUQZFouF7777jsWLF2OxWGjRogVTp07l/v+lkp5rQOXsAMVlSVIjhBBCnHfu3DnmzJnD9u3bAQhpfz27vHuy6YzWPjema6i/fZdgUbdIUiOEEEIAe/fuJS4ujqysLBS1hm4DR/FLbjPS84qJT0xmw/T+lQ4zLdmcap8QLMNRziFJjRBCiAbNYrGwfPlyvvjiCywWCyVufqS2HEB2XnPG3xxBXMJBsgtLaffvn3DXapg8MBKAuISDAPbl2/GJybJ028nUzg5ACCGEcJacnBxeeeUVlixZYk1omrTjcPhIjPrAcj0uBqMZg9FCrsFIfGIy8YnJ5BqM9sdgXbod7KeXYSknkp4aIYQQDdKuXbt45513yMnJwc3NjU63juKbTD/czQruWjVbjmYTn5hMiclsf41ep6awxETftk0oLDEB2JMYWQXlfJLUCCGEaFDMZjNfffUVX375FaDQqHFzbhjxMO9szMKsWBMVg9HMyl0ZKFh3CA7wcrdPFE7PNbA9NeeSTfaE80lSI4QQosHIzs7m7bffJikpyfrYL5KsiAEc3Vt0SWVtD53ansyU7YGR3YHrLklqhBBCNAg7duzgnXfeIS8vD63OjZPBfcnxbYO7SUXfcH/Scw32cy+u32QjQ0x1myQ1QgghXJrZbGbZsmX873//Q1EUQkND2enfj4xSPRgtGIwWVu3OICbYl70ZeQyJCWLu6C7ODltcBUlqhBBCuKyzZ88SFxfHvn37ABg0aBCPPPII/9txkpe/32MfcjIrkFVYSvKsIU6MVlwrSWqEEEK4lC/+SmPeuqMMb1nMzp+Wkp+fj16vZ+LEifTt29d+no+HrlyF7a6h/s4JWFSbepPUzJ8/n19++YWUlBQ8PDzo0qULkydPJjw83NmhCSGEqEPmJR7GfHg96zfuAsCvWUv2NY7liTWFsOZn3LXWLdpyDUb89Dryi42YFdiemuPMsEU1qDdJzZYtW7jvvvuIjo7GbDbzzjvv8Mgjj7Bq1So8PT2dHZ4QQog6IC8vj7bHfyQr6xgAQ4YMIT4jhNwSBYwWwLpcGy5MBgZZ0eQq6k1S88knn5R7/MYbb3DDDTewd+9eunfv7qSohBBC1BVbtmxh3rx5FBcX4+XlxVNPPUXv3r2Jn/ELYLzkfC93rX0lk6xocg31Jqm5WH5+PgC+vr4Ov9ZsNl/5pHrG1iZXbFtVSPsbdvtB7kFDbr/RaGTx4sWsXLkSgOuuu47nn3+e5s2bs3jjURRABfaPHjo1bloN4/qGudT9cuX3QFXbpFIURbnyaXWLxWJh/PjxnDt3jmXLllX5dWazmZ07d9ZcYEIIIWrV97sy2PLL97gVnQagoGkM/W8ZgFqj4bsDBRiMCgVGBW+dCr1OxYgobwC+O1DAiChvBkbI9IX6pHPnzmg0mss+Xy97ambMmMHhw4f54osvrur10dHRld6U+shsNpOUlOSSbasKaX/Dbj/IPWiI7d+0aRN/r1yEm7kUi9adzJY3k+UZSsY+A4FebpwpsuCr1xHspWFcX+uiknnrUigoMZNnsLAqpZRpd/V2ciuqjyu/B2xtu5J6l9S8+uqrJCYmsmTJEpo3b35V19BoNC73Bbdx5bZVhbS/Ybcf5B40hPaXlpaycOFCVq1ahRoo8WpGxC33sudIEQAlRgtdQwM4mZdBv7ZN7Bvp3fjG76TnFuOn19mrabvivWoI74HLqTdJjaIovPbaa6xZs4bFixcTEhLi7JCEEELUoiWbU5n/03bCMn4l99QJAE4HdkLTpi8b0y9MBG7h58Gq3Rn2ZdpLNqcSn5hs34fm4lpOwnXUm6RmxowZ/Pjjj/zf//0fXl5enDlzBgAfHx88PDycHJ0QQoia9sny1TQ68iu5FiM+Pj50vv0+liZrwahQYrowkTQzt9i+oV5hiYm4hIPkGqxJz4bp/Z0Quagt9SapsU0IHjt2bLnjs2bNYuTIkc4ISQghRC0oKSlh2n/fxefQBgAatwyn1/AHWfR3NmAi12BEr1OjAtzUoNKoKTZaUHFhgz3bcJNwbfUmqTl48KCzQxBCCFHLTpw4wezZszl27BgKYGjZg9gx9/LyD/vtvTEqwGRRUACdVsW0QVHMW3eUrqH+bE/NkeGmBqTeJDVCCCEalrVr1xIfH09xcTHunt4cD+5PcaNWvLPmCGX3IlEA4/nKlEbThWd6hAVIte0GRpIaIYQQdUpJSQnz5s3jt99+A6BpaBsONIklz6jFUGaoqWxPjYdOg8FoRqdVMW9dCum5xcQnJksPTQOjdnYAQgghhE1aWhrPPfccv/32GyqVivY33c5ar1hOFFnnyQC4azW8Nrwjep31V5iHTs2t7ZsR7OfBvR19GNc3XObQNFDSUyOEEMLpFEXht99+Y968eZSWluLv789zzz3HPcszMGNNZoZ2CmLdoTP217hrNRiMFgxGC9tTc1g3JZadO3fSuXMrxvYOc1ZThBNJUiOEEMKpDAYD8+bNY+3atdbHPiEcanYzdy47Ue68HmEBbE/NIT3XQHxisv24CqRXRgCS1AghhHCio0ePMnv2bNLT01Gr1RS07MURr46gUl1yblyCdRWsn15nT2LiE5Ptq5tcsZCjcIwkNUIIIWqdoii8Om8ZW3/+H2rFjN7Hj153PsBHSaVwfu5MWZrzOU6uwYgKa4IzeWCkbKYnypGJwkIIIWpVUVERcXFxbP/pS9SKmXPeIaRH/ZPlKSoMFSQ0ep2aGXd2ZPLASDQq66qnXIOx3BCUECA9NUIIIWpRcnIys2fPJjMzE5VKTXZQL/KbdWHyrVEAvLRizyWvsSU6tuXZtmEomUcjLuZwUlNUVMRHH33E5s2bycrKwmIpn1Xb9hUQQgghbBRFYfXq1XzyySeYTCYaN25MzOD7+d8RC31D/e1zY/Q6tT2JKfv/uISDjOkVav8nREUcTmpeeukltmzZwp133kmTJk1QVTCZSwghhLApKCjggw8+YOPGjQDogyM5FHQzm3YVYzCaSc81ANbExbYXjQp4cUj7csUohbgSh5OadevWMX/+fLp27VoT8QghhHAhhw8fZvbs2Zw6dQpFpSazaU/ONoqGQgUov1opz2C07xI8tFOQvUfG1osjxJU4nNQ0atQIPz+/GghFCCGEq1AUhZffX8SO31agUiyY3RvRst8/2ZeupmzhJrUKLOcfl63ntD01B0CGm4RDHF799Mwzz/Dee+9hMBhqIh4hhBD13Cdr93H7g8+y89dvUSkW8nzC2N96JH9lueOmLf9rRymTyWhUMKxTkJQ4EFfN4Z6ahQsXkpaWRu/evWnZsiVabflLfPfdd9UWnBBCiPphyeZU4hOTGXWdmjVfLsCtNB+LSk1msxvI8u+ASqWqcG6Mh04NqCg2mhkSEyRVtcU1cTipGTBgQE3EIYQQoh6L+/kAuhPb+G3jVjRYMHv4cjpsIFkqfypbTnJr++b20ge2ISchrpbDSc2TTz5ZE3EIIYSop86dO0fg4ZV45acB0KdPHyZOnMi3u88Qn5hMYYnpsiuYtqfmMD42QiYDi2ohm+8JIYS4anv37iUuLg6v/CwsKg05IX2YPPlZlv6VRnxiMoFebmTkXpiDqaL8hGBb3SaZDCyqg8NJTffu3Svcm0alUuHm5kZoaCgjRozgrrvuqpYAhRBC1A1LNqfad/N9/rY2uB/fyhdffIHFYsEnoCnHQ25l/JBeqFQq4hOTSc812PegAWtCM7RTED3CAsoVohSiujic1EycOJH4+Hj69u1LTEwMALt372b9+vXcd999nDhxgldeeQWz2cw//vGPag9YCCGEc8QnJpNrMKIxGfj8wzj0545bn2jRnk2+vWjh5WOvx9Q11N/eQ2PrmfHQaSShETXK4aRm+/btTJo0idGjR5c7/uWXX7Jhwwbef/99IiMjWbx4sSQ1QgjhAmwrm0DBqzCdVum/ozMV4ebmRsytd/NpijeoVKTnFgPw8vd78PHQlRtmAig2mu09OPGJyZLUiGrn8D41f/75J717977k+A033MCff/4JQL9+/Th+/Pi1RyeEEMLp4hOTSc8pxHj4T8JTV6EzFVHqEUDjAY+x6JgPXDQlwaxQ4cTgoZ2CGB8bIfvQiBrjcE+Nr68va9eu5cEHHyx3fO3atfj6+gLWopdeXl7VEqAQQojaYeuRsQ0N2R53aqql0d6f0eVZ/1jN9YvkePMbOXDMBFg3zXPTWotP6nVqSk0WzBdtqjfjzo72nhnpoRE1xeGkZsKECbzyyits3rzZPqcmKSmJdevW8corrwCwceNGunfvXq2BCiGEqBm25CW7sBSD0czMVfvtS7FNZ46StnUtOmMRHh4ejB8/ngm/F6OcLzwJ0CHIl390D7EnRFuOZrNyVwZatQovdy2TB0ZKIiNqhcNJzT/+8Q8iIiJYunQpa9asASAsLIzFixdz/fXXA/Dwww9Xb5RCCCFqzMWVsA1GM+k5hYTm7KDRyW2oAJ1vM2L/+SgTfs/BUCahAdidnsc/uoewYXp/wDpcpQBNG3nYjwlRG65qn5quXbtKlW4hhHAxep2GUpMZVWkhoem/4lV0EoAsv3acatGbk3sKMRjNFb42LuGgvadGNtMTzlKlicIFBQXl/l/ZPyGEEPXL5IGRBPvpubV9M/yKjtM2ZTleRScxq3Ucb3kL6UF90bm50TXU/7LXKDGZSc818PL3ewDYML2/DDmJWlelnpru3bvz559/EhgYSLdu3SrcfE9RFFQqFfv376/2IIUQQlSfp5ftYNXuDHsByTG9QrmnWzC3PzmT4IztABg8GpMaPIBSd+sCEIPRwrpDZy7ZEdjGXauxTxCW5drCWaqU1CxatMi+sunzzz+v0YCEEELUrFW7MzAr1o9zR3fhzJkzvPXWW+gzDgBw1r8DuS17U2ou35lfdt6NTq3CZFGIDvYlq7DUPtQkw07CmaqU1PTo0aPC/wshhKg/bKucOgT5sjcjjw5Bvtzw7HwCjv2KxlyCp6cn+wNuJK9ROFQ8dQYAP70OL3ct6bkGsgpLy00Glh4a4UwOb763bt06tm3bZn+8dOlS7rzzTp5//nny8vKqNTghhBDVx7abb1ZhKQdevQ3DnjU0SV6FxlyCyasZ7777Lvm+4RW+NibYFz+9Dj+9jskDI2UTPVEnOZzUvPXWWxQWFgJw8OBBZs2aRb9+/Thx4gRvvPFGtQcohBCienQN9UejgphAeOGFF9Bn7gDgXNNO/PPJ6TRv3hylggkzMcG+/PDUTUweGImXu7WDf0yvUJkMLOoch5d0nzhxgogIa2b+yy+/0L9/f5577jn27t3L448/Xu0BCiGEuDoX7xC87tAZvPJSSFv1BxpLKWqdB7kRt/LoyNsA6DzjF1QqyiU2ep2aw6fz6TzjF8A6r0YmAou6yuGkRqfTUVxsLVq2ceNGhg8fDljLJ8iSbiGEqDvKFo80m4x4pqylcc5eAAr1TUlvOYBitQ//XmFdhl3RqibbRnsGowU/vU6GnESd5nBSc/311zNr1iyuv/56kpKSePfddwE4duwYzZs3r+74hBBCOMjWQ2PbVyYmwMLiuf+lcfFZABpF3UiW3/XcFtaYlbsyKkxmbPQ66ywFd61Gyh2IOs/hpOY///kPM2bMICEhgZdffplmzZoB1gnEffr0qfYAhRBCOMbWQ1NYYsI/P4W0zWvwtBgxaTw4HhSLyT2MF/u3ZcvR7EoTmmGdrPvYCFFfOJzUBAUFMX/+/EuO/+tf/6qWgIQQQlybrqH+ZGbn45WyDp8c64aohfrmpLW8BaPOG4yWS+o9gbVMQpum3iSl5+GhU9MjLMAZ4Qtx1Rxe/QSQlpbGnDlzeO6558jKygLgjz/+4PDhw9UaXEWWLl1K//79iY6OZtSoUezevbvGP6cQQtQ1SzancuMbv7Nkc+olz23cfYiIo98RmLMfBfBt34fk1kOtCc15JabyG9EE++kxGM1kFZYS5KfHYLQQn5hc080Qolo5nNRs2bKFoUOHsnv3bn755ReKiooA6/Lu999/v9oDLGv16tXMmjWLiRMn8t133xEVFcUjjzxiT6yEEKKhKDsJGGDSVzsZtfwkj775Oc33f4W+JBuTxoMzbYbh32kAerfyHfPFRgs6tbXkjV6noWuov30SsOxBI+orh4ef3n77bSZNmsRDDz1Ely4Xxlp79erFkiVLqjW4iy1cuJB//OMf3HXXXQDMmDGDxMREvvnmG1lOLoRoUMbHRhCXcJCTeQZaT1+FymIk+ORGsnIPoAYKPINIC+6PSefFD7syLnm9AlgUBT+9jlyDke2pObIzsKj3HE5qDh06RFxc3CXHAwICyMnJqZagKlJaWsrevXt54okn7MfUajW9e/dmx44dDl3LbK5k/+96ytYmV2xbVUj7G3b7oeHdg9HdWxKfeIRcgxH3khxCT6zBoyQHBTjduCunmlwPqoo741WAWgVmBfIMRvz0Wsb1Dav3966hvQcu5srtr2qbHE5qfHx8OHPmDCEhIeWO79+/374Sqibk5ORgNpsJDAwsdzwwMJCUlBSHrpWUlFSdodUprty2qpD2N+z2g+vfg4TkIr47UMCIKG+GhLvxv993EZz5J2rFhM7Di8xW/TmlDar0GhoV9GrpwcYTxVgU0KkstHfPZufO7FpqRc1y9ffAlTTk9juc1AwZMoS4uDjee+89VCoVFouF7du38+abb9o34qvroqOj0Wg0zg6jWpnNZpKSklyybVUh7W/Y7YeGcQ+++CuNBX+fRAE+3pZFq1N/EpJzCACPZmEcDOxDHvorXsekwNF8mDG0PfPWpTCubzidO7eq4ehrXkN4D1TGldtva9uVOJzUPPvss7z66qvExsZiNpsZMmQIZrOZO+64g/Hjx19VsFXh7++PRqO5ZFJwVlYWjRs3duhaGo3G5b7gNq7ctqqQ9jfs9oPr3YOyG+mt2m3dKM+jOItWJ37FozQXBRVZzbuT4d+Jqq79UAHjY69jTK9QxvYOq8nwncLV3gOOasjtdzipcXNz4/XXX2fChAkcPnyYwsJC2rdvT+vWrWsgvPKft0OHDmzatIkBAwYAYLFY2LRpE2PGjKnRzy2EEM5i208mI9eAoigE5B4g6OQG1IoZo9aTtOBbKPSqfLjJRq/T4K5V23cGvrg2lBD1ncNJjU1QUBBBQVX7RqouDz30ENOmTaNjx47ExMSwaNEiDAYDI0eOrNU4hBCitqnMpbQ+tR6f3CMAnPMK4XjwzZi1Vx5u0us0vDik3SWJS9ll4ZLUCFfgUFJTVFTEggULWLNmDenp6QC0bNmSgQMH8sgjj6DXX/mb61oMHjyY7Oxs5s6dy5kzZ2jXrh0ff/yxw8NPQghRVy3ZnEpcwkEAJg+MpG/bJvyyeTeh6WtwLz2HgoqTTXtwJrATqFRXvN7rwzteNmEZHxth76kRwhVUOakpLS1lzJgxHD58mL59+3LzzTejKArJycnMmzeP9evXs2TJEnQ6XU3Gy5gxY2S4SQjhsuITk+3lC/6zIgn/7H1cd2ojasVCqdabtJa3UORZteLBwzoFVdoDM6ZXqPTQCJdS5aRm2bJlnDp1iu+//57w8PByzyUnJ3P//ffz5ZdfMnbs2GoPUgghXNmSzanMXLUPQ5ldftXmElpmrMMv37plxTnvUI4HxWLWeqA5v8dMZfz0OilGKRqcKpdJWLNmDRMmTLgkoQGIiIhg3LhxJCQkVGtwQgjREMQlHMRgtABgtCjoDadpk/INfvkpKKjJaHYDqSEDMWs97JvmXU6QnwfBfnomD4yspeiFqDuq3FNz5MgRevTocdnne/bsyYcfflgtQQkhREOxZHPqhWrZikJg9h5anNqMGgtGNx+OBQ/AoG9qP99SQUKjAl4d1p727tl07ty5wS7nFaLKSU1+fj5+fn6Xfd7Pz4+CgoLqiEkIIRqEJZtT+feKPQBozMW0zPgD3/xjAOT5tOZ4UCwWjftlXx/s5wGoGB8bwejuLV1mR2AhrlaVkxqLxVJp9q9Wq12y3oQQQtSEJZtTefn7PSiAZ9EpWqX/ipuxAItKTWazG8jy73DF1U22DfTANev9COGoKic1iqLwwAMPoNVW/BKTyVRtQQkhhKuyLdnONRhBUWictZsWp7egwkKJrhFpLQdg0Dep0rXiEg7K6iUhyqhyUvPkk09e8ZyBAwdeUzBCCOHqbKucNCYDIRmJNCpIAyC3UTgnWvStdLipRphMkJIC4eFwmT9ahagvqjWpEUIIQbnyA2DtUSkxWYeHDEYLnkWZtDrxG26mQiwqDRnNepPt367S4Sa1qvwkYT+97tpXOJlMnI3pSuP9uznbLobGu7dLYiPqNXn3CiFENStbfgAot7qpSdZOmp/eigqFEjdfUlveSrFH4BWvaVGsiYyXu9bhWk2XrfGUkkLj/bsBrB9TUqBt26o3VIg6psr71AghhKiarqH+aFTWj7beGo3JQFja6vPzZxRyfK/jcNjIKiU0AHqdtRDlhun9HZ5Hc3GSZRceztl2MQDWjxXsQyZEfSJJjRBCXIUlm1O58Y3fWbI59ZLn1h06g1mBlbsyAGhmOkXblOX4FJ7AotJyvEU/jgf1x6Jxu+LnsQ1IBXi5X/Wk4PGxEQT76S+t8aTVWoecDh6UoSfhEuQdLIQQV6GiCte2YR7b/BlFsfDRwsU0y9wKKBS7+ZHa8lZKPAKueH29Tk2AlztdQ/3ZnppzTUUnK63xpNXKkJNwGQ4lNUajkUcffZQZM2bQunXrGgpJCCHqvrIVrp9etoOVuzKwzePV6zRoTUWEnPgNnyJrb022b1vSW9yEoq5a0V93rYYN0/s7FpTJBIcOQZs20usiGiSH3vU6nY6DBw/WVCxCCFFv2Ho+Zq7aj8FYfuM7TU4qrdN/R2c2YFFpOdGiD7l+Ve8N0ahwfGWTyUSLex9Ek3JAVjKJBsvhOTXDhg1j+fLlNRGLEELUK/GJyeUTGsVCs9NbCUtbhc5swOAewOHwkQ4lNCpgxp0dHZ8/k5JCUMoBoMxKJiEaGIfTeLPZzLJly9i4cSMdO3ZEr9eXe/6FF16otuCEEKKuKbs8enxsBC+dr92kNRbSKv03vIsyAcjyiyKj+Y0o6iv/mPXT6ygxmXHXapg8MLLyhOZym+WFh5MRHkWQradGVjKJBsjhpObQoUO0b98egKNHj5Z7TnWFOiVCCFHflZ0g3DXUHwDvgjRapa9Fay7GrNaR3qIvub7XVel6wzoFMXd0l6p98so2y9NqyfziM5o1akRjmVMjGiiH3/WLFy+uiTiEEKJe6BrqT0augZN5Bn7YWUDz09tomrUTAINHIKnBAyh196vStfQ6ddUTGrjyZnm2lUyVFB8WwpVd9T41qamprF+/nuLiYsBa8FIIIVzZks2p/HB+lZO6tICIYyvtCc1Z//YcaT28ygkNWEsmOEQ2yxOiUg731OTk5DBp0iT++usvVCoVv/zyCyEhIfzrX//C19eX6dOn10ScQgjhFLaq2mX55B8jJCMRrbkEs9qNE0H9yGvkeIKh1zn4d6Vts7yUFOucGRliEqIch3tqZs2ahVarJTExEQ8PD/vxwYMHs379+moNTgghnC0+MZlcg5Fcg5GS0lJanNxE2PEEtOYSijyacDj8LocTmphgX4L99Lw4pL3jAdmGmCShEeISDn9XbNiwgU8++YTmzZuXO966dWsyMjKqLTAhhHCmp5ftYNXuDDoE+ZKRa0Bbeo5WGb/jXnQKgDMBHTnZtBeK2rH5K68Pv4rl2kKIKnG4p6aoqKhcD41Nbm4ubm5XrmMihBB1nW3ujFmBvRl5ROtO0TblG9yLTmFWu3Gs5W1kNr+xwoRGp1YRE+xrf+yn1zGsUxAalXWlkyQ0QtQch5Oabt26sWLFinLHLBYLH3/8MT179qyuuIQQolZUVJjSNodGZTETfGoj7FqBxlJKob4ph8Lv5lyjsMte7/boFmQVljKsUxDBfnomD4xk7uguJM8a4thKJyGEwxwefpoyZQoPPvgge/bswWg08tZbb3HkyBHy8vJYtmxZTcQohBA1xrbvzH++38NLK/YQ7OdBnsGIW2kerU78imfxWQDOBMaQ2bQHqCofbipbA8rh2k1CiGvicFLTtm1bEhISWLJkCV5eXhQVFXHrrbdy33330bRp05qIUQghqpVtvsyQmCDGx0YQl3CQXIMRgPTcYnzzkmmZ+QcaixGTxp3jQTeT73P5YSMV2BMZj/PVta+lqrYQ4uo4nNRkZGTQokULxo8fX+FzQUFB1RKYEELUBNt8GYAfdmXQIywAL3ctuQYjKouJoFObCMzZB0ChvjlpLW/BqPOu9Jpld+kK8Kp8bmHZMgsyv0aI6uXwnJpbbrmF7OzsS47n5ORwyy23VEtQQghRU+ITk8s9jks4SHZhKW4luVx3dIU9oTkd2Jnk1kOvmNBcLD232F5GAbDWajp0yPqR8mUWhBDVy+GkRlGUCms8FRUV4e7uXi1BCSFEdVmyOZXOM36h84xfWLI5lfGxEfjpdejU1p9juQYj7mcP0CblG/QlWZg0HqS0GszJZj1BVfUfkcF+HmhUF/agGR8bYa/VRGSk9aPJxISbQullPMuEm6SXRojqVuXhp1mzZgHWopXvvvtuuercZrOZ3bt3ExUVVf0RCiHEVbAN8xSWmOzzZeITk9kwvT9xCQcxWhRUFiPBJzcSkHsAgALPINKC+2PSeV3x+jHBvqRlFwFcvrL2oUPlazUdOsTAx0dz3/7dnP0pBsoWpBRCXLMqfzft22ftklUUhUOHDqHT6ezPubm5ERUVxcMPP1z9EQohxFWwTf619ciAtRjlks2p5BmMuJfkEHpiDR4lOSjA6cbXc6pJ1yr3zmQVlrLz5dsqP+l8rSZ7VW2ovCClEOKaVCmp+fzzz1mwYAEeHh688MILvPjii3h7OzbOLIQQzmCyXJjG+8OuDH7YlYF/7kGCM/9ErZgwavQcD+5PgXfLCl+vU6uwKArmMrOB/fS6qq1uurhWE1xIcqKiaWwyWefaSG+NENWiSn+SvPHGGxQWFgKwYsUKSkpKajQoIYS4VpMHRhLsp2dopyBsfTVqi5GW6WsJyUhErZjI9wrmcMTdl01owJoUdQjyRa/ToMK6K/DOl2+r+sqlsrWabEnO3r3W5zp0sM+1EUJcuyr9edC0aVMSEhLo168fiqJw8uTJyyY2sqRbCOFsFy+b/mFXBh7FWbQ68SsepbkoqDjVpBunG3e+4nCTAuxOzwMg2E9/7bsC25KbA0mADEMJUZ2qlNSMHz+e1157jddeew2VSsXdd999yTm2VVH79++v9iCFEKKqvvgrjf/8sA8F67ya+3q2IrjwEP5p61ArZoxaT9KCb6HQq+I/wIZ1CmJ7ag7puQb7sWA/D0BVfRvqXTzXJtyxKt9CiIpVKan55z//yZAhQ8jIyGDYsGEsXLgQf3//mo5NCCEcNm9din0zvHMFhfR/YDKBuYetj71COB58M2atvsLX2npilmxOZeaqfRiMlvPPqKq35MHFc21kTo0Q1aLK30ne3t60bduWWbNm0bVr10sqcp87d44ffvhBlnULIZzq+lZ+ZOSexL34LKEnfsW9NA8FFSeb9uBMYCeoYJ8tG1tPzJheofZN8jQqaqbkgW2ujRCi2jj858GIESPKPd60aRPLly9nzZo16PV6xowZU23B2Zw4cYL/+7//Y/PmzZw9e5amTZsybNgwxo0bd0lyJYRomCZ9tZMfd59EURQCcvYRdGoTasVMqdaLtJYDKPJsXunrh3UKKjf5d3xsROXlDEwm61wY6WkRos64qu/EzMxMvvnmG7799lsyMzMZPHgwH3zwATfccEN1xwdASkoKiqLw6quvEhoayqFDh/j3v/+NwWBg2rRpNfI5hRB108WTgG3FKc0KqM0lhGSuw+9cCgDnvFtxPOhmzFqPK153e2pOucdjeoVefoXT+Z2C7XNiZBM9IeqEKn8XGo1Gfv31V5YvX862bdvo06cPU6dO5fnnn2f8+PFcd911NRZk37596du3r/1xSEgIR48eZdmyZZLUCNHA2IaF4hIO2v8PoDecodWJX3E3nkNBTWaznpwNiK50uEmvU2MwWlABhSUmlmxOrdpS7ZQU2URPiDqoyklN3759CQ8PZ9iwYbzzzjv4+voC8Pzzz9dYcJXJz8+3x+Aos9lczdE4n61Nrti2qpD2N5z2j+sbxrx1KWQXllrLHygKgdl7aHFqM2oslOq8SQ0egMGz2WWvocK6VNtNqyHAy42CEjO5BiPxiUcY3f3ye9bYhYaSExVN4wNJnI2KwT80FJx87xvSe+ByGvo9cOX2V7VNVU5qzGYzKpUKlUqFRqO56sCqQ2pqKkuWLLnqXpqkpKRqjqjucOW2VYW03/Xan5BcxHcHChgRZd3F3Pb/RbuK0ZhLaJmRiG/+MQDyfFpzIigWs6by4rpuamjkoWZElJ6BEZ7nP4eZIeFu7Ny5s2qBfbaAk+nplAQHk7pnzzW0sHq54nvAUQ39HjTk9lc5qVm/fj0JCQksX76cmTNn0rdvX4YNG1Zhxe6qiouLY8GCBZWes3r1aiIiLqw8OHXqFI8++iiDBg3iH//4x1V93ujoaKcnZtXNbDaTlJTkkm2rCmm/67b/6TWJnCmy8PX+IvKLTZgV+Gq/AU3+KcLSf8XNWIBFpSaz2Q1k+Xe4ZLjJ1itj+wjg4a5j84u32M/p3Bmu6k+kbt2uqk01wZXfA1XV0O+BK7ff1rYrqXJS4+7uzrBhwxg2bBhpaWl88803vP7665hMJuLj4xk5ciS9evVy6EY+/PDDl6ymulhISIj9/6dOneL++++nS5cuvPbaa1X+PBfTaDQu9wW3ceW2VYW033Xab5sQ3DU0AMihsMSa0KAoeGZsp3HmX6iwUKJrRFrLARj0TSq8jvZ87aYhMUH0CAuwTzJ2lft0MVd6D1ythn4PGnL7r2q6fqtWrXj22Wd55plnWL9+Pd988w1PPPEEXl5e/PXXX1W+TkBAAAEBAVU615bQdOjQgVmzZqFWV62SrhCi/lmyOZWXv9+DWYGTeQZm3NmRLUezWbU9hZCMtTQqSAOg0P86jja9CUsFw016nYZSkxmtRo3BaGZ7ag5zR3epes0mIUS9c01rENVqNf369aNfv35kZ2fz/fffV1dc5Zw6dYqxY8cSFBTEtGnTyM7Otj/XpEnFf50JIeqv+MRke1VsswIzV+1Hcy6dNsd/xc1UiEWlIaNZb/ID21OmCLedTqPCXWtNZty1agK83GpmAz0hRJ1SbRsrBAQE8NBDD1XX5crZsGEDqamppKamllvaDXDw4MEa+ZxCiNpjG2oK9HJjb0YeHYJ8yS4ssZYpUBR8MrfR7PRWVCiUuPmS2nIAxR6NL0ySOU8FdAxuRHahka6h/mxPzbn85nlCCJdTL3aLGjlyJCNHjnR2GEKIGmLbb8a250xSeh5qFWhMBlql/45P4QkAchpdR3qLPlg0Fe8krgBJ6efsj6+5XpPsGixEvSITU4QQtW7J5lRufON3lmxOBawlCYL99NjWLalUcEvzUtqmLMen8AQWlYbjLfpxPLj/ZRMa9fkXB/l5EOynv+xwk+1zL/0zGQ4dsiYuFTm/azCRkdaPlztPCFFnSFIjhKh1tp6Z+MRkwFqSwN6rolhofHo7mb99hs5URLGbH4fDRpLjH3XZ3YH99Dr73BoV1h6ayw05xScmczK7gE7/HFx5wlLRrsEXM5kqT4yEELXqmpMas9nM/v37ycvLq454hBANgK1npmxvytPLdqAxFRGWtprmZ7ahQiHbty2Hw0dS4nH5VZIqYPLASHz1Orx1Ksb1Db/i5+5uzqFjxiGgkoQlPJyz7WIArB/DL7qu9OQIUec4PEg8c+ZM2rZty6hRozCbzYwZM4YdO3ag1+uZN28ePXv2rIk4hRAu4uKClLbHeScO0yb9d3RmAxaVlvQWN5HjF3nF6w09X117dPeW7Ny5k86dW1V6/pheoYzpdh9nf3rnQkHKixMWAK3WWqgyJcX6/MVzaqT+kxB1jsM9NQkJCURFRQGwdu1aTpw4wU8//cQDDzzAnDlzqj1AIYRriUs4SHqugf98v4fW01fx0ne7MR1aR1jaKnRmAwb3AA6HjyyX0OjOT5hRXfQ42E/P3NFdHA/ClrAcPFh5hW2t1pqoVPT8lXpyhBC1zuGkJicnx743zB9//MGgQYMICwvjrrvu4tChQ9UeoBDCNVkU0BoLCU/9kWZn/0YFZPlFcSRsOCXu/vbzVMDh/w4m2E+PgjWReXlYhypNBrZNRK5QZQlLVVQ1MRJC1BqHk5rGjRtz5MgRzGYz69ev58YbbwSguLi4wW7LLISoWEXJRd+2TVAB3gVptE1ZjndRJma1jrTg/qQH9UNR68pdIzrYFyg/D8c2sbiyycBlJyLXmGtNjIQQ1crh78SRI0cyadIkmjRpgkqlonfv3gDs2rWLcOl+FUKUYUsu4hIOnq/j5M8PO0/Q/PRWmmbtBMDgHkhqywGUuvvZX6fCukTbrMDu9DyeXrbjiiUOlm1I4bvlfzOisBHjYyPs83aEEA2Hw0nNU089RZs2bTh58iSDBg3Czc26Z4RGo+Gxxx6r9gCFEPWXLbkoLDGRnmvgzJkzRJz4DS/DSQDO+rcns9kNKOryP4o8dBoMRrP98ardGZXPnTGZ6Dz6DsZkHGLPN23pmLq38l2EZVM9IVySw9/NK1asYPDgwfZkxmbIkCGsXr262gITQtQ/ZVc2Afb/bzmazdo/NxGSsRatuQSz2o0TLfqS53tpT4oKuLV9M7an5tjLJgyJCar8E6ek2Jdod8w4VPlKpPNLse0rn2Q+jBAuw+Hv5BdeeIE+ffoQGBhY7nhhYSEvvPACw4cPr67YhBD1hC2ZKSwxkWswlvt/3E/78MvYRNipnQAUeTQmreUASt18K7yWgrVnZsadHatesyk8nLNR0TQ+kMTZqMss0QZrD81vv8lSbCFclMMThRVFQVXBrp6nTp3Cx8enWoISQtQvtrkzYF2d1DXUnzyDEV1pPoEHvqHR+YTmbEBHklsPv2xCo9epUWGdS+PQJF+tFv+dW9nzzTf479xScc+LbbO8QYMocfOwxiNLsYVwKVXuqRk+fDgqlQqVSsUDDzyAtswPDbPZzIkTJ+jTp0+NBCmEqNvGx0YQl3DQ/v+Zq/bjc+4oLTMS0VpKMandOBEUy7lGYZe9hl6nxmC04KfX4eWudXySr1ZLSWjo5YeSymyW515aDD//TONbbpGhJyFcSJW/mwcMGADA/v37uemmm/Dy8rI/p9PpCA4O5rbbbqv+CIUQdVbZOTRe7lrrpnrf7qL56c00zt4DQKG+KWnBAzC6Xb4nV69T8+KQ9uV2Gq5WJpO1p8Y2RNUuRhIaIVxQlb+jn3zySQCCg4MZPHgw7u7uNRaUEKJusyUz2YUlGIwWZvywF6NFwa00j1YnfsWz+CwAZwJiONmsB4qq8j2sio0Wa/kCR5OZsquYLlPssuzEYFVUNOzdS2PZW0YIl+Twd/WIESNqIg4hRD2xZHMqL3+/B7NyoWyB0aLgey6Zlhnr0FhKMWncOR50M/k+lScpahUoirV+k8MuWsXkv2NLxeeVGXYKPJBkTWYkoRHCJVXpO7tHjx78/PPPBAQE0L179wonCtts2XKZHyxCCJcQn5iMWbH+PzrYl7Sz5/A8to7GOfsAKNQ3J63lLRh13pe8VqdWYbQo9sctfPVsmN7/6gK5qKCkuaJK22Cv0VRp8UohhEuoUlLzwgsv4O3tbf9/ZUmNEMK1dQ31t690OpCSSuv0X/EozgLgdGBnTjbtBpcZbmrayIOuof6s3JWBh05d8WTgqm6Md1Gy4h8eDjt3wqFD0KbNhddeqdq2EMJlVOm7u+yQ08iRI2ssGCGE85Wd/Ft2jkvZeTQAfnmHCc5cj8ZixKTxIC34Zgq8W11yPc35cgcqILuwlHWHzvDa8MvsQePIxnhaLY3//gv++IPG/fphBlrc+yCalAOXvtZWo0kI4dIc/pOloKDgss+5ubldstOwEKJ+ubgYpC3BsR1XW4wEn9xIYO4BAAo8W5AWfAsmndcl19Lr1NzavjnbU3Psm/EZjGbiE5MrTmouGlK64s7A1/e80FPz1RKCUg5U7bVCCJfkcFLTrVu3SoefmjdvzogRI3jyySdRqx3e208I4WRli0HGJRwk12DkpRXW5dmNzHm0Tv8VCs6iAKcbX8+pJl1BVf57XQX46nXkGoxsT81hw/T+LNmcWm4vmwo5Mv/l4jk1KhUZ4VEE2XpqZO6MEA2Ow0nNG2+8wZw5cxgxYgQxMTEA7N69mxUrVjB+/Hiys7P59NNPcXNzY9y4cdUesBCiZo3pFcqWo9m8/P0e1GX+gPHPPUhw5p+gmDBq9BwP7k+Bd8tLXm/bcwYu9PLYhq4mD4ysfNl2RfNfLjfH5uI5NW3akPnFZzRr1IjGZefUCCEaDIe/67/77jumTZvG4MGD7cf69+9P27Zt+eqrr1i0aBEtWrRg3rx5ktQIUU+UnUez5Wg2P+zKAMCsKKgsRoIz/yQgz1owssg7mGNB/TFpPSu8VoCXuz1xsX3sPOMXax2ohINX3oum7PyXyubYXJQAmVWqC6/VVL4vjhDCNTk8PrRjxw7at29/yfH27duzc+dOALp27UpmZuY1ByeEqB22+TJxCQftCQ2Ae3E2bVK+JSDvEAoqTjXpRnr4HfaERoV1mbaNTqMi0MuNiBdW8fSyHdceWEVzbMqyJTHSKyOE4CqSmhYtWrB8+fJLji9fvpzmzZsDkJubS6NGja49OiFEjVqyOZUb3/idrqH+BPvpKTGZrU8oCsGFh2hz9Fs8SnMxaj1JCb2DZp37U2y68PqhnYJ4eVgHgv30vD68I4dnDmZvRh5mxVpp22bywEiC/fRMHhjpWIDnh5gAssMjodWlq6uEEMLG4T9vpk6dyjPPPMO6deuIjo4GYM+ePaSkpDB37lwAkpKSyg1PCSHqJlsPTWGJicJSE0azgtpcSnDmevzPHQEg36slacH9MWv1JKXnoZR5/fbUHOaO7lJuSGlITBCrdmcwJObCLsFXVQIB7Mu2czp0JiDloHW1U2XLvIUQDZrDPxluueUWfvrpJ7766iuOHTsGQN++ffnwww9p2dI6afDee++t1iCFENVvyeZUTuZZN9HLMxhRAI/is4Se+BX30jwUVOQF9yLTLwazYp0ADCoMRrP9GoUlJpZsTi2XsMwd3YW5o7tUX6BpafinWFdNyVJtIURlrurPnZCQECZPnlzdsQghatHMVfvs5Q4URSEgZx9BpzahVsyUar3ICBnAOX1z/Dx0eLlr7cuwbcu7AXINxsvvOVNdwsPJioom8ECStcq2LNUWQlzGVSU1586dY/ny5SQnWzfnatOmDXfddRc+Pj7VGpwQonqU3SPGtqy62GgBQG0uoWXmOvzOWSfhnvNuxfGgmzFrPdCpVeQajPbkZcP0/va9a/Q6NQFe7uWWbF+8C3F1Ua58ihBCOD5ROCkpiVtvvZXPPvuMvLw88vLyWLhwIQMGDGDv3r01EaMQ4hrFJybbk5O4hIPc+MbvRAf7ojecoW3Kt/idS0FBTUazXhwLGYRZ6wFQrvikrafGNun3xSHt7Rv1xSUcLLcLcbVKSaHxgSQA68fLFa4UQjR4DvfUzJo1i/79+/Paa6+hPT9Zz2Qy8dJLL/Hf//6XpUuXVnuQQgjH2XpnbCua9DoNoJBnMJJbVEppylYiz/yFxWyiVOdNWvAAijybXfZ6Zfeesf3/xjd+Jz3XgJ9eR7Cf/vI7BTuq7IZ7UmVbCFFFDvfU7Nmzh0cffdSe0ABotVoeffRR9uzZU8krhRC1ydY7YzBaMBgtgEKpyYLaXELoiV9ocXIDFrMJmrTheNt/XJLQlN1/xjpJ+FLjYyPsS7U3TO9f+dCTyWStoF1cbP1oMl32vLMxXSEy0voRrCueDh6UlU9CiEo5/NPB29ubzMxMIiLK/0WWmZmJl9elBe2EELXni7/SmLfuKF1D/SksKZ80GIwW9EWnCE3/DTdjPhbUZDbrRVZAR/RaDZyfYwPWhMZoUew1nC63v0yVl2qX2Rm4xM0D99Liy1fhvlxRS1nxJIS4Aod7agYPHsyLL77I6tWryczMJDMzk1WrVvHSSy8xZMiQmohRCFFF89alkJ5r4IddGeQajOg053tbFIXGWbu47tgPuBnzKdE1IjlsOFmB0aBSne/JucDLXYtGZZ2g6+WuvfbJv2USFffSYuAyOwRDuQ33zraLsQ5BCSFEFVzV5nu2j2azdaxeq9UyevRoWeYthJON6xvOKysvLNU2mRVaeilo9/9Mo4I0APIahXO8RV8sGncANCrs56tV0ML3wtyY+MRkuob6c+Mbv1/byqYy82LK9dRUlLBUVNRSCCGqwOGfFm5ubrz00ks8//zzpKVZf0i2atUKnU5HVlYWzZpdfqKhEKJm3duzFVtTc+31m24NMnHyz6+hOB+LSkNmsxvI8m8P56tva1TlX68osGF6f/vjMb1C7ZOBr2k/mjKJinurVpCWVnnCUraopRBCVJHDw082er2eyMhIIiMj0ev1HDlyhNjY2GoMTQhxNdYdOgOKQpOzO8j89VMozqfEzZcjYcPJDugAKhW2XMasQHNfD/trg/w8LrmebTLwNa9ssiUqHh5ShFIIUSOuOqlxltLSUu68804iIyPZv3+/s8MRwmlsxSiXbE4FICG5iOtf/438/HO0TvuJFqe3oEIh1/c6DoeNpNijcYWb2J3MK7b32JzMK77k+TG9Qq+8skkIIeqAeven0uzZs2natCkHDhxwdihCOJWtGOXL3+9BsVj4IikfJTedtum/oTMVYVFpyGh+I9l+UfbhJhvt+dVNAB2CfGnd2OuSIpRCCFHf1Kuk5o8//mDDhg28//77rFu3ztnhCOEUtpIEgV5upOcaMCsw748j+JzcTuNT21ChoGvUmDNhg8gxVrzNgpe7lvxiI2YFsgpL+eGpmxwrQll2czwZRhJC1BFV/ml0pZ6RlBreuvzs2bP8+9//5sMPP8TD49Jxf0fYVm25ElubXLFtVdFQ2v/FX2n21U3pudYK21pTEUEpv1By6igA2b5t6XTrXSQfPYfWYsZoLj/oFOznwbi+1lVH89alMK5vmGP3zWQip3N3Gp8vMOm/c2udSGwaynvgchp6+0HugSu3v6ptUimKUqVacVFRUahUKio63XZcpVLVyDwXRVF47LHHuP7665kwYQInTpzglltuYcWKFbRr167K1zGbzezcubPa4xOitoxbdZozRRf2lPEuOEFI+u/ozAYsKi3pLW4ix6/8RnnuGig5//PAXQ0PdG7EwAjPq47BPTWVjnfdZX+855tvKAmV+TZCiJrXuXNnNBrNZZ+v8p9Xv/32W7UEVFZcXBwLFiyo9JzVq1ezYcMGCgsLeeKJJ6rl80ZHR1d6U+ojs9lMUlKSS7atKly5/dZdglMY1zecpwcEMG9dCqfyDASe2kbTs3+jAord/ckOvYWQEiPnLGbMaus98NXr6NsmkL/TciksMZFrMLEqpZRpd/W++oA6duRsVPT5npoY2g0ZcqGnxonDUq78HqiKht5+kHvgyu23te1KqvxTJzg4+JoCqsjDDz/MiBEjKj0nJCSEzZs3s3PnTqKjo8s9d9dddzF06FDefPNNhz6vRqNxuS+4jSu3rSpcsf3z1h0lPbeYV1buY8adHXmwaxOWffIh3kWZAGT5RXG6aS9WLJtOh4zD7GrehpFj43Bzd2PXy7ed32emuFzRyWu6RxoNjZP+vnRzPJOJs116XCg86aQ6Ta74HnBEQ28/yD1oyO136kB4QEAAAQEBVzzvpZdeYtKkSfbHp0+f5pFHHmHOnDl06tSpBiMUovY9vWyHfSXS3NFdGB8bwcvf78GswMff/Yb34QS8TQbMah0ZLfqQ49uGsOx0OmQcBqDTycN0N+dwx5BYwLrPTHxi8rXtCHyxijbHu1zNJiGEqCXOn91XBUFB5ZeZenpa5wO0atWK5s2bOyMkIWqMbTfgH3ZlsD01h66h/rhpwDf9Lxpl7QTA5NkYbefh5ORa/xpL82vOruZt6HTyMLtbtOHLN++z95JUuejktSpTCuGyJRCEEKIG1YukRoiGwLZUu6z0XANnzpwh5MRveBlOAhDR5Sa2uHcmPddoP8+s1jBybBwdDGf55z/7EeOM1UhSs0kI4WT18qdOy5YtOXjwoLPDEKJa2JKZ0+eK7Rvi2fjkpxKSsRatuQSzWoemw+38UNoCc4nxkus80s2faXcNce5YutRsEkI4kcNlEn788cfLPufohF0hGrqnl+3gpRV7SM81lE9oFDMtTm0i7PjPaM0lFHk05nD4Xew2t7BX1I4J9rWf7qfXXtMybSGEcAUOJzWvvPIKf/zxxyXH//vf/7Jy5cpqCUoIV1a2ZtPK8/NnwJqYAOhK84k49gNNsqyTbs8GdCS59XCMbheSGBXWnYDBWmn7+Vuld0QIIRxOauLi4nj++efZtm2b/dhrr73GTz/9xKJFi6o1OCFcRdlEJi7hIOm5Bv69Yg9azYWaTPnFJhoXpdImZTlehtOY1G6khtzGqRY3Eh0SgK9eh/r86Vq1iq6h/gT76ZlxZ0fu7dnKSS0TQoi6w+GkJjY2lpdffpkJEyawZ88eXnnlFX755Rc+//xzIiIiaiJGIeo9W/HJshOBFcDLTYtOo0JlMdMhfxtBx35Gayml2LMp+Z3vY8rYoSTPGkJWYSm5BiO2Db2NFoV1h85csXr2xZW8hRDClTmc1AAMHTqUZ555htGjR7N27VqWLFlCWFhYdccmhMsYHxth3/iub9sm9uMlJjMexnwijq2AtO0AnAmI4XDoMCwevuVe76fXUaWaJmVUlEw5zGSCQ4esH4UQog6r0uqnWbNmVXg8ICCA9u3b88UXX9iPvfDCC9UTmRAuwra6qWuoP/GJyRSWXEgO3LKO0DLjDzSWUkwad44HxZLv0xq1CnsyYttnJj4xmVyDERXgoVPbr11ZT03ZjfeuisnE2ZiuTt8lWAghqqJKP5327dtX4fFWrVpRUFBgf16lUlV4nhAN2cxV+zAYLfaq2nqdBj93FZ7H1tE4x/q9U6hvRlrLWzDqfNCoYMadHYlLOEhhicmeuJRNUMr2wFSW1FzzxnuyS7AQoh6pUlKzePHimo5DCJdjmxRsMFrKHdeV5BB0/Fe0hWcAOB3YmZNNu4HKur9MhyBfe8/Mxb01ZROUa+qBqSrZJVgIUY9ccz9yQUEBmzdvJiwsTCYKC3Heks2p9npNZfmfO0JwxjrUFiMWrZ6CNgM5qWoGWJdmm5ULS7UrGzqqtdIHskuwEKIecfgn1DPPPEP37t0ZM2YMxcXF3HXXXaSnp6MoCu+88w4DBw6siTiFqHNsPTEAkwdGAtjnzqzanVEuoVFZTLQ6vRHf7P0AGBsFE3bzPWw8UQIG6+7AZgX89DrGx0bY5+FUaxHKqyW7BAsh6gmHVz9t27aNbt26AbBmzRoURWHr1q28+OKLxMfHV3uAQtRVcQkHyTUYyTUYiUs4yL/P7wy8cpc1oVEBOrUK95Ic2h77Dt/s/ShAUcse/LjoAzaeKCHXYESnvjAXzctde8nQkxBCiKpxOKnJz8/H19e61HT9+vXcdttt6PV6YmNjSU2VvTBEw5RrMNqXWytYe1x89Tq8sg/SJuVb3IuzMWs9yW8/kgfvH1uuPpOXu5bXh3e0L/mG8kvAhRBCVI3Dw08tWrRgx44d+Pr6sn79et555x0Azp07h5ubW7UHKERdNXlgZIXzZgAKioroUfw3BRk7ASj0CiYn4jaeu+N6+3DS5IGR5YaYyg4z1dqcGSGEcCEOJzX3338/U6ZMwdPTk6CgIHr27AnA1q1baSvj7qIB+Xrr8QoTGvfibELTf6WgJAcFFaeadCWrSRfMJjUvf78HoMLVTEDdmksjhBD1jMNJzX333UenTp3IzMykd+/eqNXWEayQkBAmTZpU3fEJUaeUnRyce36Cr52i4J97kOCTG1ArJkw6T4L7/IPsYj+GlJk8XNneMlXdf0YIIcSlrmp9ZseOHenYsWO5Y7GxsdURjxB1mm1y8MXU5lKCT67HP+8IAAVeLUkN7k9esR8bpvcHoEdYwBX3lrnmHYCFEKIBu6qk5uTJk/z2229kZmZiNJb/AS9lEoSrWrI5tcKERl+cRWj6GtxK8qzDTU27czqwMxq1qlxyUpV5MuXOMZmsO/jK/jBCCFElDv+k3LRpE+PHjyckJISUlBTatGlj36emffv2NRGjEHXCxcurVYpCYO5+mp/ciFoxY3bzpqDt7Zy2BNhLHVz1EJLUXBJCCIc5vKT77bff5uGHH2blypW4ubnx/vvvk5iYSPfu3Rk0aFBNxChErVqyOZUb3/idJZtT7Y/b/ftne+0msA43hWb8RlDmetSKmXPerdDc8CCPDetLsJ++XEJz8fWqpKKaS0IIISrlcFKTnJzM8OHDAdBqtRQXF+Pl5cUzzzzDxx9/XN3xCVHrLt74zlq/yWx/Xm84Q5uUb2iUl4yCmsymvTgWMoi9Z42M6RXKhun9yyU0L3+/55KN9K6Y6JyvuQRYP0rNJSGEuCKHkxpPT0/7PJomTZqQlpZmfy4nJ6f6IhPCCZZsTiW7sASA0+eKaffvny7Mo1EUArP3EHFsBe7Gc5TqvDkXPYobbrkdjVrFkJigS64Xl3DQvrtw2fk1V9wx2FZz6eBBGXoSQogqqvJPyg8++ICHH36YTp06sX37diIiIujXrx9vvvkmhw4dYs2aNXTq1KkmYxWiRj29bAc/7MqwPzZaFIwW60Y0anMJIRl/4Jt/FAB9cBTZQbGMu7UDY3qF2lc2LdmcWuE8Gl+9rtzxKq1ykppLQgjhkCr31Hz44YcYDAZeeOEFYmKs3eJPPfUUvXr1YvXq1QQHBzNz5swaC1SImlB2GGjV7gsJjbdGISInHY3FjN5wmrYp3+CbfxRFpabzgLto2uceMosUthzNBi7f8zJ5YCTBfnp7wUubi4ephBBCXLsq99QoivUv1pCQEPsxT09PXn311eqPSohaYtt3ZuaqfbhpNRQbzdzZsSkv/fdRAvfvJr5TD35q1RwVCkY3H1KDB3DkTFOKMzJRgFW7M5g7ustle16k3IEQQtQehwbqVSrVlU8Sog4rW4Zgy9Fs+3wZg9ECQLCfnnd7+JJ/ZD8zu3dnS/NmqFAoCWzDkcY3Yta4g9GCXqem1GSpcB6NEEII53AoqRk4cOAVE5stW7ZcU0BC1CTbMNHldgYuLDHx3o40dtwygGydFq2i8Ojjj3P7HXfwzJc7WbkrAw+dmheHtC/XAyPlDYQQwvkcSmqeeuopfHx8aioWIWrc+NiIy5c6QEF3fCu/bt+CSqelRePGTJ0+nYjzk3Xnju7C3NFdyr3GVguqxGTBT6+T8gZCCOFEDiU1Q4YMITAwsKZiEaLGlB128nLXXpLUaEwGwk/+gf6cdd+Yvn37MmHCBDw9PSu9bnxisv1aAV5u0ksjhBBOVOXVTzKfRtQ3ZVc2xSUcJD3XwEsr9tj3obHxKswgMuUb9OdSUdQaArsPZUlBNL3f+vOKuwCPj43AT6+TXhohhKgDHF79JER9UXZlU/H5icBgnRTsp9fh5abGeGQTzc5sQ4WCWe9Pcotb2FcUiFkxAVxxjoysbhJCiLqjyj01Bw4ckKEnUa+cK76wsunilNxkKKB9ZgLNz2xFhcLNN9/M3RNfJLB5S4bEBDnU+3JVtZ2EEEJUO9l7XbikJZtTsVymc9GrMJ3Q9N85ZSrC3d2dmFvvZnl2E8a7ubNhen+HP5esfBJCiLrB4dpPQtQHFdZUUiw0O72V8NQf0ZiKaNS4Bafa/YNvMv0rr8N0BeNjIwj208ucGiGEcDJJaoRL+eKvNDrP+IXMPIP9mArQGgsJT11Fs7N/owKKm3bgaMRI0kqtq5uC/fR0DfW/qmGkK5U8kOEpIYSoHTL8JOot2zLtQC839mbk0dpPy7Hck5gvGnYK5RTeRxNQmwxY1DqyW8Uy4d5hgHUyMVwoMFkTw0gyPCWEELVDkhpRb9mShfRca69Mco6p/AmKheant9IoaycAJs/G3DF2HBOG9LjkGrY9bK5YOfsq1NR1hRBClCdJjai3bMmCradGUcACqFWgMxYQnrkWXb618nZxs2gO+/cgL6mACUMuvcb42IgaW54ty76FEKJ21Ks5NYmJiYwaNYqYmBi6d+/OhAkTnB2SqCUVzUvZcjSbk3kGWjf24tDrg/DUWTeIbFqSTrfMH9DlZ6DX65kyZQr3P/I4QQE+FVbRrmw+jBBCiPqj3vTUJCQk8O9//5tnn32WXr16YTabOXTokLPDErXk4nkpTy/bwQ+7rL0wP+zKoHuoH/d08OSPxD/QZ2wnH4iIiGDKlCkEBQXRB2sCY0uObD0zQgghXEe9SGpMJhMzZ85kypQpjBo1yn78uuuuc2JUojZ1DfW3z595etkOVu3OKPf8nB+30yv3d/QZJwC4rls//tJG83uakTFBF86TSbtCCOG66kVSs2/fPk6dOoVarWb48OGcPXuWqKgopk6dStvzFZQdYTabayBK57K1yRXbBrA9Ndv+/5W7Mmjh50FGbjEqwCf/GC0yEjlhLsHT05Mnn3ySaX+WkJ5bTHziEUZ3b2l/7bi+Ycxbl8K4vmEuda9c/etfFQ39HjT09oPcA1duf1XbpFLqQVGnVatW8dxzzxEUFMT06dMJDg5m4cKF/PnnnyQkJODn51el65jNZnbu3FmjsYprl5BcxHcHChgR5c3ACE8Skov4Yk8+BaXWt6pWBSYFVIqZ5qc20yR7DwClnk3pcdud3Nkp6JJrCCGEqP86d+6MRqO57PNO7amJi4tjwYIFlZ6zevVqLBZrMcJx48YxcOBAAGbNmkXfvn35+eefueeeexz6vNHR0ZXelPrIbDaTlJTkEm17ek0iZ4osrEopJaRlSxb8fRIF8NCpCfRyo6DEjCEvi1YnfsWz+AwAZwJiONmsB8eOavntdC7Xt/LDzc36+s6dWzm3QbXAlb7+V6uh34OG3n6Qe+DK7be17UqcmtQ8/PDDjBgxotJzQkJCOHPG+osrIuLCyhU3NzdCQkLIzMx0+PNqNBqX+4Lb1Pe2LdmcSmGJGb1OTXZhKf/5YZ+9GGWx0UJGbjHR2pNYjv6E2lyKm4cn6cE3k+luHWIqMVpIzy3mZJ51E755644ytneY8xpUy+r71786NPR70NDbD3IPGnL7nZrUBAQEEBAQcMXzOnbsiJubG0ePHqVbt24AGI1G0tPTCQoKusKrRX0Sn5hMrsGIRsUlOwOrLCZanNoEOftQA1FRUUyZMoW+c7eD0TreekdMc9YfzqLEZMFdq5YN74QQogGpFxOFvb29ueeee3j//fdp0aIFQUFBfPLJJwAMGjTIydGJ6tQ11J+M3At1m/Q6DW2aenMwJY1W6b+iLz4LQGSvAfx36gS0Wi3F5xMaFdCjdQCrk6y9NAFebrLCSQghGpB6kdQATJ06Fa1Wy9SpUykuLqZTp04sWrQIX19fZ4cmqsmSzams3JWBwoVeGnetmvzUJDoc/x1TaQkmjQfHg24mSx2JVmt9+w7tFMTPO48zzD2HBWsPY1ZAo0J6aYQQooGpN0mNTqdj2rRpTJs2zdmhiBoSn5hM2REnf3cVjY7+jk/2PkyAsVEwh5vdjOLmxbQyCcvcUdGcffUBGh9IIjW8PWMffpfHb2krvTRCCNHA1KsyCcK1jY+NwE+vw0+vY+pNjbkp+yd8s60ThfOad2P0hCk0a9KYGXd2LJ+wpKTQ+IB1Vnxoyj7WjZJaS0II0RDVm54a4RqWbE4tV0DSdiwu4SAAfds2IWnrRhI+XYtiKkXt7kVuxG08Ntxan+n+3uGXXjQ8nLNR0TQ+kMTZqBgah1dwjhBCCJcnSY2oVRWVKbCteFJZjOz46Qv8cw+iAAWeQZS2H8Kf/xla+UW1Wvx3bmXPqlW0GzIEtPK2FkKIhkiGn0StGh8bQbCfnq6h/vaq2+NjI2jCOSKPrTif0Kgg/EZKOt3NuNtiqnZhrZaS0FBJaIQQogGT3wDCKdYdOkOuwcjLK5J4IKyA0CPfUFpaikXnydGgW9D5h+KlkpxbCCFE1clvDVGrbMNPADqLkaD0tWxb9QWlpaV06dKF4RNewi/YurLJNkwlhBBCVIX01Igac/GkYGsJBBN+eh2PdvZi03dfk593GgUV0f2G8PKzj6JWq3n0lvKvFUIIIapCkhpRYy6eFByfmExuUSnhJUdY+/l6jEYjZjdvjrboT7YxHLX6QsfhmF6yLFsIIYRjZPhJ1BjbpGBbb8ujNwQReToR75TfMRqNdOvWjZETXsQ/OFx6ZIQQQlwz6akR1ebi4aayvS3JyclsWvoO7lkn0Wg0jB07luHDh6NWq3mkfwcnRy6EEMIVSFIjqk1Fe9As3nSMz778Fp+0P7GYTTRp0oQpU6YQFRXl5GiFEEK4GklqxDUp2zszPjaC+MRk+x40j/RqwRefzscrNwUL0KNHD5555hl8fHycHbYQQggXJHNqxFV7etkOXlqxh/RcAy9/vweADdP7sz01h+zMVL75cCaeuSlYUJPTsg8vvviiJDRCCCFqjPTUiKu2aneG/f9mBeISDhK/9gjXFR8g+9gaVIoFL79A0kNu5YmhN6JSqZwYrRBCCFcnSY24akNigvhh14XExlBYgO/BteQUpKICevfuzZNPPom3t7fzghRCCNFgSFIjrtrc0V0A+GFXBp5FJ2l14jfcTAUoKjXjHn+MwYMHS++MEEKIWiNJjbhqSzansu7gaYJydhGY+RcqFMwefgy693GGDLnJ2eEJIYRoYCSpEZVasjmVuISDAEweGFlul995a5LwO/QTjQqOA9CnTx8mTpyIp6enU2IVQgjRsElSIyoVn5hMrsFo/7/t493hCsH7v8JQkIdFpaH7oFFMHjdahpuEEEI4jSQ1olLjYyPsPTXjYyOIX3sE45GN/L5xGyoUgoODmTp1KmFhYU6OVAghREMnSY24Ii93LeNjIyguOIfnnm/R51uHm0I7dmf2vyej1+udHKEQQgghSY24DNtOwYUlJnINRhZ8n4jPoZ/QG4uwqLSkt7iRLJ/OktAIIYSoMySpERWy1XHy89Bw3bmdeJ7YAiiY9AG0unk0Obk6qawthBCiTpGkRlRofGwE837ZTdSZ3zl94jAAAwYM4IknnsDd3d3J0QkhhBCXkqRGVOhkyn78di7htMmAh4cH48eP5+abb3Z2WEIIIcRlSVIjyjGbzXzxxRf88b//oQZMno15J+5VWrZs6ezQhBBCiEpJUtPA2CYAj4+NKLeRHsDZs2eJi4tj3759qIDiZtHce/+DktAIIYSoFySpaWBsE4DjE5MZ0yvUnuQMb1nMzp+Wkp+fj9bNg5zWN/PI3YMvSXyEEEKIukrt7ABE7eoa6o9GZf0IEP/7IcwH17L+63nk5+cTHh7OmQ73cFTbyr6DsBBCCFEfSE9NA7M9NQezAusOnaHPjBUEpa6hJMu6md6QIUN46KGH+PrvTPsQlRBCCFFfSFLTwIyPjSA+MRnLqcP4HP2VEksJXl5ePPXUU/Tu3RuAMb1CZdhJCCFEvSNJTQPzz65BFO9Zww8bVwEQ0KIVb8x4iebNmzs5MiGEEOLaSFLTgJw8eZK33nqLw4etm+ndeeed3H///eh0OidHJoQQQlw7SWoaiI0bN/L+++9TWFiIt7c3zzzzDD179nR2WEIIIUS1kaTGhS3ZnEr87wfpadzNke3rAIiKimLy5Mk0bdrUydEJIYQQ1UuSGhc2/6fteO7/kSPFZwEYOXIkY8aMQauVL7sQQgjXI7/dXNS6detosvdLTKXFuOm9mD7lebp16+bssIQQQogaU2+SmqNHjzJ79mz+/vtvjEYjkZGRPPPMM/Tq1cvZodUpJSUlLFy4kISEBADat2/P5MmTady4sZMjE0IIIWpWvUlqxo0bR2hoKIsWLcLDw4NFixYxbtw41qxZQ5MmTZwdXp1w9uxZpk+fzrFjx1CpVIwaNYrRo0ej0WicHZoQQghR4+pFmYTs7GyOHTvG448/TlRUFK1bt+b555/HYDDYlyc3dImJiXz00UccO3YMX19fXnnlFcaMGSMJjRBCiAajXvTU+Pv7ExYWxooVK2jfvj1ubm589dVXBAYG0qFDB4evZzabayBK5ygpKeGjjz7i999/B6Bjx448++yzBAQEuFQ7r8TW1obU5rIaevtB7kFDbz/IPXDl9le1TSpFUZQajqVanDx5kgkTJrBv3z7UajUBAQF89NFHtG/fvsrXMJvN7Ny5s+aCrGWnT59m+fLlnDlzBoB+/frRt29f1Op60QEnhBBCOKRz586VjkA4tacmLi6OBQsWVHrO6tWrCQ8PZ8aMGQQGBrJ06VI8PDz43//+x7hx41i+fLnDe65ER0fX62EZRVH4/fff+eSTTygtLcXf35+nn34aqP9tu1pms5mkpCRpfwNtP8g9aOjtB7kHrtx+W9uuxKlJzcMPP8yIESMqPSckJITNmzeTmJjI1q1b8fb2BqBDhw5s3LiRFStW8Pjjjzv0eTUaTb39ghsMBubNm8fatWsBa9b67LPP0qhRI3bu3Fmv21YdpP0Nu/0g96Chtx/kHjTk9js1qQkICCAgIOCK5xkMBgBUKlW54yqVCovFUiOx1UW2Ze3p6emo1Wruvfde7r77btRqtUuOoQohhBCOqBcThTt37kyjRo2YPn06EydOxN3dna+//pr09HRiY2OdHV6NUxSFhIQEFixYgNFoJDAwkMmTJ1/VJGkhhBDCVdWLpCYgIICPP/6Yd999lwceeACj0UibNm348MMPiYqKcnZ4NaqoqIgPP/yQ9evXA9C1a1f7cJMQQgghLqgXSQ1YJ8B+8sknzg6jViUnJzN79mwyMzNRq9Xcf//9DB8+XFY3CSGEEBWoN0lNQ6IoCqtXr+aTTz7BZDLRuHFjpk6d6vK9UkIIIcS1kKSmjikoKOCDDz5g48aNAPTo0YNnnnkGHx8fJ0cmhBBC1G2S1NQhhw8fZvbs2Zw6dQqtVssDDzzAsGHDLln1JYQQQohLSVJTByiKwg8//MCiRYswmUw0bdqUqVOn0rZtW2eHJoQQQtQbktQ4WX5+Pu+99x5btmwB4IYbbuCpp56ybzIohBBCiKqRpMaJDhw4wFtvvcWZM2fQarU88sgjDB48WIabhBBCiKsgSY0TWCwWVqxYweLFizGbzTRv3pxp06YRERHh7NCEEEKIekuSmlp27tw53n33XbZt2wZAnz59mDhxIp6enk6OTAghhKjfJKmpRXv37iUuLo6srCx0Oh2PPfYYAwcOlOEmIYQQohpIUlMLLBYLy5cv54svvsBisRAcHMzUqVMJCwtzdmhCCCGEy5Ckpobl5ubyzjvvsHPnTgBiY2MZP348er3euYEJIYQQLkaSmhq0e/du3n77bXJycnBzc+OJJ55gwIABMtwkhBBC1ABJamqA2Wzm66+/5quvvsJisRASEsK0adNo1aqVs0MTQgghXJYkNdUsOzubd955h927dwNwyy238MQTT+Dh4eHkyIQQQgjXJklNNdqxYwfvvPMOeXl5eHh4MH78eG6++WZnhyWEEEI0CJLUVAOz2cyyZcv43//+h6IohIaGMm3aNFq2bOns0IQQQogGQ5KaarB06VKWL18OwMCBA3n00Udxd3d3clRCCCFEwyJJTTVo1qwZzZs3Z8yYMfTt29fZ4QghhBANkiQ11WDgwIEMHDjQ2WEIIYQQDZra2QEIIYQQQlQHSWqEEEII4RIkqRFCCCGES5CkRgghhBAuQZIaIYQQQrgESWqEEEII4RIkqRFCCCGES5CkRgghhBAuQZIaIYQQQrgESWqEEEII4RIkqRFCCCGES5CkRgghhBAuQZIaIYQQQrgESWqEEEII4RK0zg6gNimKAoDZbHZyJNXP1iZXbFtVSPsbdvtB7kFDbz/IPXDl9tvaZPs9fjkq5UpnuJDS0lKSkpKcHYYQQgghrkJ0dDRubm6Xfb5BJTUWiwWTyYRarUalUjk7HCGEEEJUgaIoWCwWtFotavXlZ840qKRGCCGEEK5LJgoLIYQQwiVIUiOEEEIIlyBJjRBCCCFcgiQ1QgghhHAJktQIIYQQwiVIUiOEEEIIlyBJjRBCCCFcgiQ1QgghhHAJktS4oKNHjzJ+/Hh69uzJ9ddfz+jRo9m8ebOzw6pViYmJjBo1ipiYGLp3786ECROcHZJTlJaWcueddxIZGcn+/fudHU6tOHHiBP/617/o378/MTExDBgwgLlz51JaWurs0GrU0qVL6d+/P9HR0YwaNYrdu3c7O6RaMX/+fO666y66dOnCDTfcwIQJE0hJSXF2WE7z0UcfERkZycyZM50dilNIUuOCxo0bh9lsZtGiRXz77bdERUUxbtw4zpw54+zQakVCQgJTp05l5MiRfP/99yxbtow77rjD2WE5xezZs2natKmzw6hVKSkpKIrCq6++yqpVq3jhhRf48ssvmTNnjrNDqzGrV69m1qxZTJw4ke+++46oqCgeeeQRsrKynB1ajduyZQv33XcfX3/9NQsXLsRkMvHII49QVFTk7NBq3e7du/nyyy+JjIx0dijOowiXkpWVpbRt21bZunWr/Vh+fr7Stm1bZcOGDU6MrHYYjUalT58+ytdff+3sUJwuMTFRGTRokHL48GGlbdu2yr59+5wdktMsWLBA6d+/v7PDqDF33323MmPGDPtjs9ms3HTTTcr8+fOdGJVz2H4Gbtmyxdmh1KqCggLltttuUzZs2KCMGTNGef31150dklNIT42L8ff3JywsjBUrVlBUVITJZOKrr74iMDCQDh06ODu8Grdv3z5OnTqFWq1m+PDh3HTTTTz66KMcOnTI2aHVqrNnz/Lvf/+b2bNn4+Hh4exwnC4/Px9fX19nh1EjSktL2bt3L71797YfU6vV9O7dmx07djgxMufIz88HcNmv9+W8+uqr9OvXr9z7oCGSpMbFqFQqPvvsM/bt28f1119PTEwMCxcu5OOPP24Q3+THjx8H4IMPPmD8+PHMmzcPX19fxo4dS25urnODqyWKojB9+nTuueceoqOjnR2O06WmprJkyRLuueceZ4dSI3JycjCbzQQGBpY7HhgYyNmzZ50UlXNYLBb++9//cv3119O2bVtnh1NrVq1axb59+3j++eedHYrTaZ0dgKiauLg4FixYUOk5q1evJjw8nBkzZhAYGMjSpUvx8PDgf//7H+PGjWP58uX1dn5FVdtvsVgA67yigQMHAjBr1iz69u3Lzz//XK9/sVX1HmzYsIHCwkKeeOKJWoqsdlS1/REREfbHp06d4tFHH2XQoEH84x//qOkQhZPNmDGDw4cP88UXXzg7lFqTmZnJzJkz+fTTT3F3d3d2OE4nSU098fDDDzNixIhKzwkJCWHz5s0kJiaydetWvL29AejQoQMbN25kxYoVPP7447URbrWravttk6HL/mJzc3MjJCSEzMzMGo2xpjnyHti5c+clvTR33XUXQ4cO5c0336zJMGtMVdtvc+rUKe6//366dOnCa6+9VtPhOY2/vz8ajeaSScFZWVk0btzYSVHVvldffZXExESWLFlC8+bNnR1Ordm7dy9ZWVmMHDnSfsxsNrN161aWLl1KUlISGo3GiRHWLklq6omAgAACAgKueJ7BYACsw1BlqVQqey9GfVTV9nfs2BE3NzeOHj1Kt27dADAajaSnpxMUFFTTYdaoqt6Dl156iUmTJtkfnz59mkceeYQ5c+bQqVOnGoywZlW1/XAhoenQoQOzZs1CrXbdkXY3Nzc6dOjApk2bGDBgAGAdhtm0aRNjxoxxcnQ1T1EUXnvtNdasWcPixYvLJbYNQa9evVi5cmW5Yy+88ALh4eE89thjDSqhAUlqXE7nzp1p1KgR06dPZ+LEibi7u/P111+Tnp5ObGyss8Orcd7e3txzzz28//77tGjRgqCgID755BMABg0a5OToasfFyZunpycArVq1ahB/wZ46dYqxY8cSFBTEtGnTyM7Otj/XpEkTJ0ZWcx566CGmTZtGx44diYmJYdGiRRgMhnJ/vbuqGTNm8OOPP/J///d/eHl52XtrfXx8GsQkeW9v70vmD3l6euLn59eg5hXZSFLjYgICAvj444959913eeCBBzAajbRp04YPP/yQqKgoZ4dXK6ZOnYpWq2Xq1KkUFxfTqVMnFi1a1CAmSgvYsGEDqamppKam0rdv33LPHTx40ElR1azBgweTnZ3N3LlzOXPmDO3atePjjz9uEMNPy5YtA2Ds2LHljs+aNatBJHWiPJWiKIqzgxBCCCGEuFauO9AshBBCiAZFkhohhBBCuARJaoQQQgjhEiSpEUIIIYRLkKRGCCGEEC5BkhohhBBCuARJaoQQQgjhEiSpEUIIIYRLkKRGCBcwduxYZs6c6ewwyvn222/t9bfqol9//ZVbb72Vdu3a1bl7V11OnDhBZGQk+/fvd3YoQtQKKZMgRC2JjIys9Pknn3ySp556qlZiOXHiBLfccgsrVqygXbt2NfI5Bg8eTL9+/eyP33//fX799Ve+//77q77mt99+ywsvvGB/7OnpSVhYGOPGjeO2225z6Fr/+c9/GDlyJGPHjsXLy+uqY7oaZduhVqvx9vamdevW9OvXjwceeAAfH59q+TwtWrTgzz//xN/fv1quJ0RdJ0mNELXkzz//tP9/9erVzJ07l59//tl+zFZ40lV4eHjUSEFBb29v+30rLCzk22+/ZdKkSfz444+Eh4dX6RqFhYVkZWVx00030axZs6uOpbS0FDc3t6t6ra0diqKQn5/P33//zUcffcS3337LsmXLrikuG41G47JFPIWoiAw/CVFLmjRpYv/n4+ODSqWyPzYYDEyePJnevXvTpUsX7rrrLjZu3Fju9UuXLuW2224jOjqa3r178/TTT1/2cyUmJtK1a1d++OGHq4q1tLSU119/nRtuuIHo6GhGjx7N7t27y53z22+/2eMZO3Ys3333HZGRkZw7dw4oP/z07bff8sEHH3DgwAEiIyOJjIzk22+/RVEU3n//fWJjY+nYsSM33XQTr7/+eqWxlb1vrVu3ZtKkSajV6nLFKktLS3nzzTfp06cPnTt3ZtSoUfz1118A/PXXX1x//fUAPPDAA0RGRtqfS0hIYMiQIXTs2JH+/fvz6aeflvvc/fv358MPP2Tq1Klcf/31/Oc//wFg27Zt3HvvvcTExNCvXz9ef/11ioqKqtSOpk2bEhERwahRo/jyyy8pKirirbfesp9nsViYP38+/fv3JyYmhmHDhpVLhvPy8nj++efp1asXMTEx3HbbbXzzzTdAxcNPVf26rV+/nttvv50uXbrwyCOPcPr06UrbI0RdID01QtQBRUVF9OvXj2effRY3NzdWrFjBuHHj+PnnnwkKCiIpKYmZM2cye/ZsunTpQl5eHtu2bavwWitXruTll1/m7bff5uabb76qeGbPnk1CQgJvvPEGwcHBfPzxxzz66KP88ssv+Pn5cfz4cZ555hnGjh3LqFGj2L9/P2+++eZlrzd48GAOHz7M+vXrWbhwIQA+Pj4kJCTw2Wef8c4779CmTRvOnj3LgQMHqhyn2WxmxYoVAHTo0MF+/NVXX+XIkSPMmTOHpk2bsmbNGh599FFWrlxJly5d+Pnnnxk0aBDvv/8+Xbp0wdfXlz179jBp0iSefPJJBg8ezI4dO5gxYwZ+fn7lqj1/+umnTJw4kSeffBKAtLQ0HnvsMZ555hn++9//kp2dzWuvvcZrr73GrFmzHLntBAYGMnToUL755hvMZjMajYb58+fzww8/MGPGDFq3bs3WrVuZMmUKAQEB9OjRg/fee4/k5GQWLFiAv78/aWlpFBcXV3j9qn7diouL+fTTT5k9ezZqtZopU6bw5ptv8vbbbzvUHiFqmyQ1QtQBUVFRREVF2R9PmjSJX3/9ld9//50xY8aQmZmJXq8nNjYWb29vgoODad++/SXXWbp0KXPmzGHevHn06NHjqmIpKiriyy+/ZNasWfY5Ma+99hobNmxg+fLlPProo3z11VeEhYUxbdo0AMLDwzl06BDz5s2r8JoeHh54enpeMhySmZlJ48aN6d27NzqdjqCgIGJiYiqNLz8/ny5dugDWX75arZZXX32VVq1aAZCRkcG3337L2rVr7UM4jzzyCOvXr+fbb7/lueeeIzAwEABfX197PAsXLuSGG25g4sSJAISFhXHkyBE++eSTcklNr169ePjhh+2PX3zxRYYOHcqDDz4IQOvWrXnxxRcZO3Ysr7zyCu7u7lW46xeEh4dTWFhIbm4uPj4+zJ8/n4ULF9rbHBISwvbt2/nqq6/o0aMHGRkZtGvXjujoaABatmx52WtX9etmNBqZMWOG/Z7ed999/N///Z9D7RDCGSSpEaIOKCws5IMPPiAxMZEzZ85gNpspLi4mIyMDgN69exMUFMSAAQPo06cPffr04dZbb0Wv19uvkZCQQHZ2Nl988cUVE4PKpKWlYTQa7UM0ADqdjpiYGJKTkwE4evQoHTt2LPe6q/mcgwYNYtGiRfZ29evXj5tvvhmt9vI/mry8vPjuu+8AMBgMbNq0iZdffhk/Pz/69+/PoUOHMJvNDBo0qNzrSktL8fPzu+x1U1JSuOWWW8odu/766/n888/tvSbAJe0+cOAABw8eZOXKlfZjiqJgsVg4ceIEERERVboXZV8L1uGp1NRUDAZDuSQKrEmHbYL36NGjefrpp9m3bx833ngjAwYMKPe1K6uqXze9Xm9PaACaNm1KVlaWQ+0QwhkkqRGiDnjzzTfZuHEj06ZNo1WrVnh4ePD0009jNBoB66TS7777ji1btvDnn38yd+5cPvjgA5YvX06jRo0AaN++PXv37uWbb74hOjoalUrlzCZVSYsWLfj555/ZuHEjGzduZMaMGXzyyScsXrwYnU5X4WvUajWhoaH2x1FRUfz5558sWLCA/v37U1RUhEaj4ZtvvrEnIjbVMRm7bCIJ1p6te+65h7Fjx1bYPkelpKTg7e1tH+YDmD9//iUTh20TlPv168fatWv5448/2LBhAw8++CD33XefvTfmalycVKpUKnuyJURdJkmNEHXAjh07GDFiBLfeeitg7blJT08vd45Wq6V379707t2bJ598ku7du7N582b7UuaQkBCmTZvG2LFj0Wg09kmsjmrVqhU6nY6///6b4OBgwNozkJSUxAMPPABYh2b++OOPcq9LSkqq9Lo6nQ6LxXLJcQ8PD/r370///v259957uf322zl06FC5OTJXotFoKCkpAaBdu3aYzWays7Md2icnPDycv//+u9yxv//+m9atW1+SHJXVvn17jhw5Ui7RulpZWVmsXLmSAQMGoFariYiIwM3NjYyMjEqHEwMCAhgxYgQjRozgyy+/ZPbs2RUmNVfzdROiPpGkRog6IDQ0lDVr1tC/f39UKhXvvvtuuQRg7dq1HD9+nO7du9OoUSP++OMPLBYLYWFh5a4TFhbG559/zv33349Go+HFF1+s9PMePXr0kmPXXXcdo0ePZvbs2fj6+hIUFMTHH39McXExd999NwD//Oc/+eyzz3jrrbe4++672b9/v31I6HI9RMHBwZw4cYL9+/fTrFkzvL29+fHHHzGbzXTq1Am9Xs8PP/yAh4cHQUFBl41ZURTOnDkDWOfUbNy4kT///JMJEybY78HQoUOZOnUq06dPp127duTk5LBp0yYiIyOJjY2t8LoPP/wwd999Nx9++CGDBw9m586dLF26lJdffrnSe/jYY4/xz3/+k1dffZVRo0ah1+s5cuQIGzdurDSxtLXDtqR7x44dzJ8/Hx8fH55//nnA2kP38MMPM2vWLBRFoWvXrvbl397e3owYMYL33nuPDh060KZNG0pLS0lMTLzskNfVfN2EqE8kqRGiDpg+fTr/+te/uOeee/D39+exxx6jsLDQ/ryPjw9r1qzhgw8+oKSkhNDQUN5++23atGlzybXCw8NZtGiRvcdm+vTpl/28zz777CXH/vjjDyZPnoyiKEydOpXCwkI6duzIxx9/jK+vL2DtFXrvvfd48803+fzzz+ncuTPjxo3jlVdeuey+LQMHDmTNmjXcf//9nDt3jlmzZtGoUSM++ugj3njjDSwWC23btmXevHmVbhZXUFDATTfdBFiHYIKCgnj66ad57LHH7OfMmjWL+Ph43njjDU6fPo2fnx+dO3e+bEID1tVT7777LnPnziU+Pp4mTZrw9NNPl5skXJGoqCgWL17Mu+++y7333mu/P4MHD670dbZ2qFQqvL29CQsLY/jw4TzwwAN4e3vbz5s0aRIBAQHMnz+fEydO4OPjQ/v27Rk3bhxg7QF75513SE9Px8PDg65du/LOO+9U+Dmv5usmRH2iUmSgVAhRDeLj4/nyyy8vGd4QdZt83YQrkZ4aIcRVWbp0KdHR0fj7+7N9+3Y++eQT7rvvPmeHJa5Avm7ClUlSI4S4KqmpqcTHx5OXl0dQUBAPPfQQTzzxhLPDElcgXzfhymT4SQghhBAuQWo/CSGEEMIlSFIjhBBCCJcgSY0QQgghXIIkNUIIIYRwCZLUCCGEEMIlSFIjhBBCCJcgSY0QQgghXIIkNUIIIYRwCf8P0tC5oQJkQuAAAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X_hat3 = greedy_substitution(model, X, y, ['A', 'C', 'G', 'T'], reverse_complement=False, max_iter=1, verbose=True)\n",
"\n",
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y1 = predict(model, X_hat3).numpy(force=True)[0]\n",
"\n",
"plt.plot([-9, 5], [-9, 5], c='0.3')\n",
"plt.scatter(y0, y1, s=1)\n",
"plt.scatter(y0[idxs], y1[idxs], s=2, color='r', label='AP-1 Targets')\n",
"plt.legend()\n",
"plt.xlabel(\"Task Logits Before Design\")\n",
"plt.ylabel(\"Task Logits After Design\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "156dac71-02d5-43f8-bc6c-3c437e6d837c",
"metadata": {},
"source": [
"With only a single mutation knocking out a key position in the motif, we are able to achieve similar results. "
]
},
{
"cell_type": "markdown",
"id": "994ea15b-c972-484d-b176-867e2a4dd214",
"metadata": {},
"source": [
"#### Half Precision\n",
"\n",
"A strength of this prediction-based design is that it is fairly robust to operating at lower precision because we are simply looking for the best motif and position, rather than needing a very precise value, and if two choices happen to be similar and swapped at lower precision the consequences for design are minimal."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "1a582771-5e8b-49a0-828c-fc53e114b4f9",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:17:45.882629Z",
"iopub.status.busy": "2026-06-25T14:17:45.882520Z",
"iopub.status.idle": "2026-06-25T14:19:36.896742Z",
"shell.execute_reply": "2026-06-25T14:19:36.895994Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Full Precision\n",
"Iteration 0 -- Loss: 28.48, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:15, 1.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:18, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:17, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:06, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:06, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:01, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 7.545, Improvement: 20.93, Motif Idx: 15, Pos Idx: 979, Time (s): 19.44\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:17, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:21, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:18, 1.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:17, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:12, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:12, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:10, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:11<00:09, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:07, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:14<00:06, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:15<00:05, 1.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:03, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:01, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 4.787, Improvement: 2.759, Motif Idx: 15, Pos Idx: 1014, Time (s): 19.21\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:18, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:16, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:17, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:14, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:13, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:13, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:07, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:14<00:06, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:03, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:01, 1.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:19<00:00, 1.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 4.135, Improvement: 0.6518, Motif Idx: 22, Pos Idx: 1040, Time (s): 19.15\n",
"\n",
"Half Precision\n",
"Iteration 0 -- Loss: 28.47, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:08, 2.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:08, 2.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:10, 2.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:11, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:12, 1.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:11, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:11, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:10, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:10, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:09, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:09, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:07<00:08, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:08<00:07, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:07, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:09<00:06, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:10<00:05, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:11<00:05, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:11<00:04, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:12<00:03, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:13<00:03, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:13<00:02, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:14<00:01, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:15<00:01, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:15<00:00, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:16<00:00, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:16<00:00, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 7.543, Improvement: 20.92, Motif Idx: 15, Pos Idx: 979, Time (s): 16.34\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:13, 1.83it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:10, 2.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:08, 2.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:08, 2.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:08, 2.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:02<00:09, 2.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:13, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:18, 1.02s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:20, 1.20s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:08<00:21, 1.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:09<00:17, 1.16s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:10<00:14, 1.00s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:11, 1.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:11<00:09, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:12<00:08, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:06, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:14<00:05, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:03, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:02, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.73it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:18<00:00, 1.99it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 2.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 4.789, Improvement: 2.754, Motif Idx: 15, Pos Idx: 1014, Time (s): 18.59\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:08, 2.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:09, 2.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:21, 1.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:25, 1.17s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:19, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:14, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:09, 1.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:07, 2.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:10, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:10, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:10, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:08, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:06, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:12<00:04, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:03, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:02, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.45it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 4.137, Improvement: 0.6523, Motif Idx: 22, Pos Idx: 1040, Time (s): 17.92\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"y = torch.zeros(1, 2002)\n",
"y[:, idxs] = 3\n",
"\n",
"print(\"Full Precision\")\n",
"X_hat = greedy_substitution(model.float(), X.float(), y.float(), motifs, output_mask=idxs, max_iter=3, verbose=True)\n",
"\n",
"print(\"\\nHalf Precision\")\n",
"X_hat = greedy_substitution(model.half(), X.half(), y.half(), motifs, output_mask=idxs, max_iter=3, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "38da5da9-ad79-4638-a733-165bd2f353f7",
"metadata": {},
"source": [
"Looks like we are getting the same motifs inserted at the same positions, but with a nice speed boost. Using half precision also potentially enables one to use a bigger batch size, which can be helpful for the modern GPUs that might be underutilized."
]
},
{
"cell_type": "markdown",
"id": "3ea47660",
"metadata": {},
"source": [
"#### Beam Search\n",
"\n",
"Every design above used `greedy_substitution`, which commits to the single best edit each round. `beam_substitution` generalizes this: each round it keeps the `beam_size` lowest-loss *complete* sequences (the \"beam\") and expands all of them, rather than keeping only the single best edit. Because each step *substitutes* a motif into an existing sequence rather than growing one, every candidate is always a full-length sequence -- there is no need to score partial sequences, and the search is over trajectories through edit-space rather than positions in a growing string.\n",
"\n",
"Setting `beam_size=1` recovers `greedy_substitution` exactly. Larger beams hedge across several trajectories, which can recover good multi-edit combinations that the greedy search prunes away after a locally-suboptimal first edit, at a cost that scales roughly linearly with `beam_size`. Below we run the same AP-1 design task with a beam of five and compare it against the greedy result for the same number of iterations."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "f5f75c96",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:19:36.899275Z",
"iopub.status.busy": "2026-06-25T14:19:36.899184Z",
"iopub.status.idle": "2026-06-25T14:27:36.931046Z",
"shell.execute_reply": "2026-06-25T14:27:36.930316Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 72.96, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:15, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:12, 1.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:10, 2.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:20, 1.06s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:18, 1.03s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:15, 1.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:13, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:10, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:09, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:08, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:07, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:11<00:06, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:06, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:05, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:04, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:14<00:03, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:15<00:03, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:02, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:17<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:17<00:00, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:18<00:00, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 14.17, Improvement: 58.79, Beam: 5, Time (s): 18.66\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:15, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:11, 1.76it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:09, 2.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:08, 2.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:07, 2.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:04<00:06, 2.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:04<00:07, 2.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:05<00:07, 2.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:06<00:07, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:06<00:08, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:07<00:07, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:08<00:06, 1.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:08<00:05, 1.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:09<00:05, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:09<00:04, 1.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:10<00:03, 1.86it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:10<00:03, 1.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:11<00:02, 1.73it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:11<00:02, 1.78it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:12<00:01, 1.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:12<00:01, 1.86it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:13<00:00, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 1.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:14<00:00, 1.86it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:12, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:12, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:11, 1.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:11, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:10, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:10, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:09, 2.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:03<00:07, 2.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:03<00:05, 2.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:04<00:04, 3.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:04<00:04, 3.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:04<00:03, 3.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:04<00:03, 4.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:05<00:02, 4.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:05<00:03, 3.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:05<00:03, 3.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:06<00:03, 2.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:06<00:03, 2.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:07<00:03, 2.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:07<00:02, 2.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:08<00:02, 2.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:08<00:01, 2.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:09<00:01, 2.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:09<00:01, 1.99it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:10<00:00, 1.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 1.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 2.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:13, 1.83it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:15, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:13, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:12, 1.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:13, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:12, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:10, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:09, 1.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:08, 1.80it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:08, 1.84it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:06<00:06, 2.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:07<00:05, 2.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:07<00:04, 2.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:07<00:03, 3.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:07<00:02, 3.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:08<00:04, 2.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:09<00:04, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:10<00:04, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:10<00:03, 1.80it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:11<00:02, 1.87it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:11<00:02, 1.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:12<00:01, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:12<00:01, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:13<00:00, 1.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:13<00:00, 1.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:13<00:00, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:12, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:12, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:11, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:11, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:10, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:10, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:09, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:09, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:04<00:08, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:08, 1.86it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:05<00:07, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:06<00:07, 1.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:06<00:06, 1.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:07<00:06, 1.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:07<00:05, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:07<00:04, 2.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:08<00:03, 2.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:08<00:02, 3.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:08<00:02, 3.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:08<00:01, 3.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:09<00:01, 4.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:09<00:00, 4.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:09<00:00, 4.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:09<00:00, 3.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:10<00:00, 2.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 2.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 2.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:11, 2.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:07, 3.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:06, 3.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:05, 4.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:04, 4.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:01<00:04, 4.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:01<00:04, 4.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:01<00:03, 4.72it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:04, 3.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:05, 2.89it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:03<00:05, 2.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:03<00:05, 2.36it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:04<00:05, 2.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:04<00:05, 2.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:05<00:05, 2.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:05<00:05, 1.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:06<00:04, 1.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:07<00:04, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:07<00:04, 1.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:08<00:03, 1.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:08<00:02, 1.76it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:09<00:02, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:09<00:01, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:10<00:01, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:10<00:00, 1.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:11<00:00, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:11<00:00, 2.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 6.817, Improvement: 7.353, Beam: 5, Time (s): 61.3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:12, 1.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:12, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:10, 2.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:08, 2.72it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:01<00:06, 3.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:02<00:05, 3.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:02<00:04, 3.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:02<00:04, 4.20it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:02<00:03, 4.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:02<00:03, 4.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:03<00:03, 4.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:03<00:02, 4.78it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:03<00:03, 3.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:04<00:04, 2.92it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:04<00:04, 2.60it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:05<00:04, 2.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:05<00:04, 2.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:06<00:04, 1.99it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:06<00:03, 1.99it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:07<00:03, 1.99it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:07<00:02, 1.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:08<00:02, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:08<00:01, 1.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:09<00:01, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:09<00:00, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:10<00:00, 2.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:13, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:12, 1.94it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:12, 1.90it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:11, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:11, 1.82it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:12, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:11, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:10, 1.73it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:09, 1.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:08, 1.84it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:07, 1.97it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:06<00:05, 2.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:06<00:04, 2.79it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:07<00:05, 2.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:10, 1.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:11<00:14, 1.46s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:14, 1.58s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:15<00:13, 1.68s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:17<00:12, 1.76s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:18<00:09, 1.50s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:18<00:06, 1.21s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:19<00:03, 1.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:20<00:02, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:20<00:01, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:20<00:00, 1.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 2.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:06, 3.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:13, 1.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:13, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:15, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:15, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:14, 1.31it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:13, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:13, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:07<00:12, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:11, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:10, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:09<00:10, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:09, 1.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:08, 1.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:07, 1.25it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:07, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:13<00:06, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:14<00:05, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:15<00:04, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:04, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:16<00:03, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:17<00:02, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:18<00:01, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:19<00:00, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.29it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:15, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:17, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:17, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:16, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:15, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:15, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:06<00:14, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:07<00:13, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:08<00:13, 1.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:08<00:12, 1.18it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:09<00:11, 1.21it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:10<00:10, 1.22it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:11<00:09, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:12<00:08, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:12<00:08, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:13<00:07, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:14<00:06, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:15<00:05, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:16<00:04, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:16<00:03, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:17<00:03, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:18<00:02, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:19<00:01, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:19<00:00, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:20<00:00, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:20, 1.23it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:17, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:15, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:04<00:27, 1.23s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:06<00:31, 1.49s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:07<00:31, 1.59s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:09<00:32, 1.70s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:11<00:30, 1.69s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:12<00:25, 1.52s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:13<00:20, 1.25s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:13<00:16, 1.07s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:14<00:14, 1.06s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:15<00:12, 1.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:16<00:10, 1.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:16<00:08, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:17<00:07, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:18<00:06, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:18<00:05, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:19<00:04, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:19<00:03, 1.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:19<00:02, 2.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:21<00:02, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:21<00:02, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:22<00:01, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:23<00:00, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:23<00:00, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:23<00:00, 1.09it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 4.735, Improvement: 2.082, Beam: 5, Time (s): 95.91\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:16, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:15, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:14, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:13, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:13, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:12, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:11, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:10, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:10, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:09, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:07, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:05, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:12<00:04, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:03, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:13<00:02, 1.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:15<00:02, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:16<00:03, 1.05s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:19<00:02, 1.40s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:21<00:01, 1.66s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:24<00:00, 2.27s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:24<00:00, 1.04it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:04<01:41, 4.08s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:07<01:26, 3.62s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:08<00:54, 2.38s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:08<00:37, 1.72s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:09<00:27, 1.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:10<00:22, 1.10s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:10<00:18, 1.05it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:11<00:15, 1.16it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:12<00:13, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:12<00:12, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:13<00:10, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:14<00:10, 1.40it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:15<00:09, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:15<00:08, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:16<00:07, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:17<00:07, 1.35it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:17<00:06, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:18<00:05, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:19<00:04, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:19<00:04, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:20<00:03, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:21<00:02, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:21<00:01, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:22<00:01, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:23<00:00, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:23<00:00, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:23<00:00, 1.10it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:08, 3.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:07, 3.02it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:07, 3.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:01<00:08, 2.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:02<00:10, 2.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:15, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:21, 1.12s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:07<00:26, 1.48s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:09<00:29, 1.75s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:11<00:28, 1.77s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:13<00:25, 1.69s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:14<00:21, 1.53s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:14<00:15, 1.19s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:15<00:11, 1.06it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:15<00:08, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:15<00:06, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:16<00:04, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:16<00:04, 1.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:17<00:04, 1.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:18<00:03, 1.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:18<00:02, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:19<00:02, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:19<00:01, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:20<00:01, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:21<00:00, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:21<00:00, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:13, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:14, 1.32it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:13, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:11, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:11, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:10, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:09, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:10<00:10, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:11<00:10, 1.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:11<00:07, 1.26it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:12<00:05, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:04, 1.80it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:13<00:04, 1.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:03, 1.70it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:02, 1.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:14<00:02, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:01, 1.65it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:16<00:00, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:17, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:16, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:02<00:16, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:03<00:25, 1.14s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:06<00:32, 1.55s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:08<00:37, 1.88s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:11<00:39, 2.10s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:14<00:44, 2.47s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:16<00:37, 2.23s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:16<00:27, 1.75s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:17<00:21, 1.41s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:18<00:16, 1.20s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:18<00:13, 1.04s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:19<00:11, 1.08it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:20<00:09, 1.19it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:20<00:07, 1.27it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:21<00:06, 1.34it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:22<00:05, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:22<00:05, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:23<00:04, 1.41it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:24<00:03, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:24<00:02, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:25<00:02, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:26<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:26<00:00, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:27<00:00, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:27<00:00, 1.06s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 4.1, Improvement: 0.6345, Beam: 5, Time (s): 115.8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:14, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.58it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:10, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:03<00:09, 2.03it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:04<00:08, 2.17it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:04<00:07, 2.37it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:05<00:06, 2.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:15, 1.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:10<00:22, 1.64s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:13<00:25, 1.99s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:15<00:23, 1.93s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:16<00:21, 1.91s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:17<00:16, 1.64s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:18<00:12, 1.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:18<00:08, 1.05s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:19<00:06, 1.15it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:19<00:04, 1.42it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:20<00:02, 1.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:20<00:02, 1.95it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:20<00:01, 2.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:21<00:01, 1.85it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:22<00:00, 1.78it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:22<00:00, 1.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:22<00:00, 1.14it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:14, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:14, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:12, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:11, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:11, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:10, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:10, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:13, 1.07it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:11<00:18, 1.39s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:13<00:19, 1.63s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:15<00:19, 1.79s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:17<00:17, 1.79s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:18<00:14, 1.56s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:18<00:10, 1.28s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:19<00:07, 1.10s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:20<00:05, 1.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:21<00:05, 1.15s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:23<00:05, 1.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:24<00:03, 1.13s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:24<00:01, 1.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:25<00:00, 1.13it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:26<00:00, 1.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:26<00:00, 1.04s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:02<00:52, 2.08s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:02<00:32, 1.35s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:03<00:23, 1.04s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:04<00:17, 1.24it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:04<00:14, 1.44it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:04<00:11, 1.72it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:05<00:09, 2.01it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:08, 2.11it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:06<00:08, 1.96it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:08, 1.80it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:08, 1.68it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:08<00:08, 1.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.59it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:07, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:07, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:05, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:12<00:04, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:04, 1.47it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:14<00:02, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:01, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:16<00:00, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:15, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:12, 1.57it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:13, 1.38it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:10, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:09, 1.67it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:07<00:09, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:08, 1.62it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:08, 1.56it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:08<00:07, 1.55it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:09<00:07, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:06, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:10<00:05, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:11<00:05, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:12<00:04, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:12<00:03, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:13<00:03, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:14<00:02, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:14<00:01, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:15<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:16<00:00, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:16<00:00, 1.52it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:16<00:00, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:16, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:01<00:15, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:01<00:15, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:02<00:14, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:03<00:13, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:04<00:12, 1.54it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:05<00:11, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:05<00:11, 1.53it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:06<00:09, 1.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:06<00:07, 1.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:07<00:07, 1.93it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:08<00:10, 1.28it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:09<00:09, 1.30it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:10<00:08, 1.33it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:10<00:07, 1.39it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:11<00:06, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:12<00:05, 1.45it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:12<00:04, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:13<00:04, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:14<00:03, 1.43it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:14<00:02, 1.46it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:15<00:02, 1.48it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:16<00:01, 1.49it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:16<00:00, 1.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.51it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:17<00:00, 1.49it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 3.736, Improvement: 0.3644, Beam: 5, Time (s): 101.7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"from tangermeme.design import beam_substitution\n",
"\n",
"X = random_one_hot((1, 4, 2000), random_state=0).type(torch.float32)\n",
"y = torch.zeros(1, 2002)\n",
"y[:, idxs] = 3\n",
"\n",
"X_hat_greedy = greedy_substitution(model, X, y, motifs, output_mask=idxs, max_iter=5)\n",
"X_hat_beam = beam_substitution(model, X, y, motifs, output_mask=idxs, beam_size=5, max_iter=5, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "65734b8a",
"metadata": {},
"source": [
"The beam search log reports the loss of the best beam member each round. Because the beam retains several candidate sequences instead of one, it can explore motif combinations that greedy would have discarded. Let's compare how close each design gets the AP-1 tasks to the target logit of 3."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "6af6a410",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:27:36.932679Z",
"iopub.status.busy": "2026-06-25T14:27:36.932524Z",
"iopub.status.idle": "2026-06-25T14:27:37.271016Z",
"shell.execute_reply": "2026-06-25T14:27:37.270153Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean AP-1 logit (target 3.0)\n",
" original: -5.438\n",
" greedy: 2.199\n",
" beam (5): 2.297\n"
]
}
],
"source": [
"y0 = predict(model, X).numpy(force=True)[0]\n",
"y_greedy = predict(model, X_hat_greedy).numpy(force=True)[0]\n",
"y_beam = predict(model, X_hat_beam).numpy(force=True)[0]\n",
"\n",
"idxs_ = idxs.numpy(force=True)\n",
"print(\"Mean AP-1 logit (target 3.0)\")\n",
"print(\" original: {:.3f}\".format(y0[idxs_].mean()))\n",
"print(\" greedy: {:.3f}\".format(y_greedy[idxs_].mean()))\n",
"print(\" beam (5): {:.3f}\".format(y_beam[idxs_].mean()))"
]
},
{
"cell_type": "markdown",
"id": "daf8da91-c14a-43e4-ba43-3c7b31054ddb",
"metadata": {},
"source": [
"### Designing Constructs\n",
"\n",
"An alternate view of design is that, rather than designing individual sequences, you want to design a construct with desired changes in model predictions *on average* when included in a sequence. Basically, rather than ending up with a single sequence where the design may have picked up on specific properties or other motifs already present, you want to design a small construct (of variable width) that can be included in other sequences to induce desired properties. This perspective is similar to the idea of de novo motif discovery, where one wants to find repeating patterns that *on average* are picked up on by the statistical or machine learning model.\n",
"\n",
"This method works by using repeated marginalizations for design. First, each individual motif is implanted into the middle of a set of background sequences and the one that pushes model predictions in the right direction the most is kept. Then, each motif is considered at each position from a provided `max_spacing` to the left of the left-most part of the motif to that same distance to the right. To be clear, when a `max_spacing` of 4 is provided, there will be a maximum of 4 positions between the right-most of the newly inserted motif and the left-most of the previous left flank, and likewise at the end. Because all positions in this span are considered, motifs can be implanted on top of each other to attenuate their effect. At the end of this process, you will end up with a construct that, on average, pushes model predictions by the amount provided as `y`. This is in contrast to the `greedy_substitution` method which will end up with a sequence where the total model predictions are `y`. \n",
"\n",
"On average, this function is roughly the same speed as the `greedy_substitution` function because, while it does not consider all positions in the sequence, it performs an in silico marginalization at each step over the number of provided background sequences. \n",
"\n",
"We can do this with a very similar function call. Remember here that `X` is a set of background sequences, not a single sequence to optimize, and that `y` is how much including this construct pushes model predictions, not the actual predictions of the model. Put another way, `y` is `f(X + construct) - f(X)`, not `f(X + construct)`."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "17f1ecbb-98ee-4645-ba53-d7424c4e99b4",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:27:37.272899Z",
"iopub.status.busy": "2026-06-25T14:27:37.272814Z",
"iopub.status.idle": "2026-06-25T14:46:03.715018Z",
"shell.execute_reply": "2026-06-25T14:46:03.713960Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 -- Loss: 1.0, Improvement: N/A, Idx: N/A, Time (s): 0s\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:00<00:02, 8.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:00<00:02, 8.84it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:00<00:02, 9.00it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:00<00:02, 8.98it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:00<00:02, 8.88it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:00<00:02, 8.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:00<00:02, 8.63it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:00<00:02, 8.74it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:01<00:01, 8.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [00:01<00:01, 8.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [00:01<00:01, 8.64it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [00:01<00:01, 8.69it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [00:01<00:01, 8.66it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [00:01<00:01, 8.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [00:01<00:01, 8.78it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [00:01<00:01, 8.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [00:01<00:01, 8.71it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [00:02<00:00, 8.50it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [00:02<00:00, 8.61it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [00:02<00:00, 8.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [00:02<00:00, 8.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [00:02<00:00, 8.91it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [00:02<00:00, 8.87it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [00:02<00:00, 8.81it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [00:02<00:00, 8.77it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:02<00:00, 8.84it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [00:02<00:00, 8.75it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 1 -- Loss: 0.8709, Improvement: 0.1291, Motif Idx: 23, Pos Idx: 999, Time (s): 2.972\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:11<04:49, 11.57s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:17<03:22, 8.42s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:22<02:35, 6.78s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:28<02:23, 6.54s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:34<02:10, 6.22s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:39<01:54, 5.75s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:45<01:53, 5.99s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:51<01:44, 5.80s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [00:55<01:32, 5.45s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [01:02<01:30, 5.68s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [01:07<01:24, 5.62s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [01:13<01:20, 5.73s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [01:19<01:13, 5.67s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [01:24<01:06, 5.55s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [01:28<00:58, 5.29s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [01:34<00:53, 5.35s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [01:40<00:49, 5.54s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [01:47<00:48, 6.04s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [02:03<01:03, 9.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [02:10<00:50, 8.45s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [02:15<00:37, 7.48s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [02:22<00:28, 7.13s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [02:28<00:20, 6.71s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [02:33<00:12, 6.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [02:39<00:06, 6.37s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [02:44<00:00, 5.96s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [02:44<00:00, 6.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 2 -- Loss: 0.4477, Improvement: 0.4233, Motif Idx: 25, Pos Idx: 983, Time (s): 164.9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:07<03:17, 7.91s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:14<02:50, 7.12s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:21<02:38, 6.91s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:28<02:33, 6.98s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:34<02:23, 6.83s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:41<02:18, 6.93s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [00:50<02:19, 7.35s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [00:58<02:15, 7.53s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [01:05<02:08, 7.56s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [01:15<02:13, 8.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [01:24<02:08, 8.56s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [01:37<02:18, 9.86s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [01:46<02:03, 9.54s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [01:55<01:53, 9.43s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [02:04<01:41, 9.24s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [02:21<01:56, 11.66s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [02:31<01:38, 10.99s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [02:40<01:23, 10.45s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [02:48<01:07, 9.68s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [02:58<00:59, 9.90s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [03:06<00:47, 9.42s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [03:16<00:37, 9.39s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [03:25<00:28, 9.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [03:34<00:18, 9.12s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [03:44<00:09, 9.38s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:52<00:00, 9.24s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:52<00:00, 8.96s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 3 -- Loss: 0.3145, Improvement: 0.1331, Motif Idx: 22, Pos Idx: 997, Time (s): 233.0\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:08<03:35, 8.61s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:16<03:19, 8.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:25<03:18, 8.64s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:37<03:37, 9.87s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:46<03:22, 9.63s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:55<03:06, 9.33s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [01:03<02:50, 8.95s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [01:10<02:30, 8.35s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [01:18<02:16, 8.03s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [01:25<02:04, 7.78s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [01:32<01:54, 7.62s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [01:41<01:52, 8.00s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [01:48<01:39, 7.67s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [01:55<01:29, 7.46s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [02:02<01:19, 7.26s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [02:09<01:11, 7.19s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [02:16<01:05, 7.28s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [02:24<01:00, 7.51s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [02:32<00:52, 7.53s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [02:40<00:46, 7.81s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [02:47<00:36, 7.38s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [02:54<00:29, 7.35s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [03:07<00:27, 9.23s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [03:15<00:17, 8.73s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [03:23<00:08, 8.45s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:31<00:00, 8.29s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:31<00:00, 8.12s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 4 -- Loss: 0.2479, Improvement: 0.06659, Motif Idx: 25, Pos Idx: 1007, Time (s): 211.2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:07<03:02, 7.30s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:15<03:05, 7.71s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:23<02:59, 7.79s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:31<02:57, 8.06s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:46<03:43, 10.62s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [00:53<03:07, 9.40s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [01:02<02:55, 9.25s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [01:10<02:37, 8.75s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [01:21<02:42, 9.58s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [01:30<02:27, 9.21s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [01:38<02:12, 8.84s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [01:46<02:02, 8.76s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [01:54<01:48, 8.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [02:00<01:34, 7.87s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [02:08<01:25, 7.74s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [02:15<01:15, 7.59s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [02:23<01:09, 7.67s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [02:31<01:02, 7.77s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [02:38<00:53, 7.62s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [02:47<00:47, 7.91s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [02:53<00:37, 7.51s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [03:01<00:30, 7.53s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [03:13<00:26, 8.75s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [03:22<00:17, 8.81s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [03:32<00:09, 9.24s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:40<00:00, 9.03s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [03:40<00:00, 8.50s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 5 -- Loss: 0.1982, Improvement: 0.04979, Motif Idx: 8, Pos Idx: 1024, Time (s): 220.9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 0%| | 0/26 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 4%|█████████ | 1/26 [00:11<04:38, 11.15s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 8%|██████████████████ | 2/26 [00:20<04:08, 10.37s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 12%|███████████████████████████ | 3/26 [00:30<03:53, 10.13s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 15%|████████████████████████████████████ | 4/26 [00:41<03:48, 10.38s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 19%|█████████████████████████████████████████████ | 5/26 [00:52<03:43, 10.66s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 23%|██████████████████████████████████████████████████████ | 6/26 [01:04<03:39, 10.95s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 27%|███████████████████████████████████████████████████████████████ | 7/26 [01:15<03:30, 11.09s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 31%|████████████████████████████████████████████████████████████████████████ | 8/26 [01:25<03:15, 10.85s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|█████████████████████████████████████████████████████████████████████████████████ | 9/26 [01:36<03:00, 10.63s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 38%|█████████████████████████████████████████████████████████████████████████████████████████▌ | 10/26 [01:46<02:47, 10.48s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 42%|██████████████████████████████████████████████████████████████████████████████████████████████████▌ | 11/26 [01:55<02:32, 10.15s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 46%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 12/26 [02:06<02:24, 10.34s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 50%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 13/26 [02:15<02:09, 9.97s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 54%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 14/26 [02:28<02:09, 10.82s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 58%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 15/26 [02:37<01:51, 10.17s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 62%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 16/26 [02:46<01:39, 9.92s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 65%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 17/26 [02:56<01:30, 10.08s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 69%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 18/26 [03:06<01:20, 10.11s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 19/26 [03:16<01:10, 10.01s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 20/26 [03:27<01:00, 10.11s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 21/26 [03:38<00:52, 10.49s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 22/26 [03:50<00:44, 11.09s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 88%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 23/26 [04:01<00:32, 10.84s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 92%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 24/26 [04:12<00:21, 10.85s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 25/26 [04:23<00:10, 10.94s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [04:33<00:00, 10.69s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 26/26 [04:33<00:00, 10.51s/it]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/plain": [
"torch.Size([4, 51])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tangermeme.design import greedy_marginalize\n",
"\n",
"y = torch.zeros(1, 2002)\n",
"y[:, idxs] = 1\n",
"\n",
"X = random_one_hot((20, 4, 2000), random_state=0).float()\n",
"X_hat4 = greedy_marginalize(model, X, y, motifs, output_mask=idxs, max_iter=20, verbose=True)\n",
"X_hat4.shape"
]
},
{
"cell_type": "markdown",
"id": "902d4d85-6833-4cde-897f-4df2aa84465c",
"metadata": {},
"source": [
"A one-hot encoding is returned from this function, so we can take a look at what was designed using the `characters` function which is the conceptual opposite of a one-hot encoding."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "75a74843-4501-4789-a01e-c2f90dd2b95c",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:46:03.717748Z",
"iopub.status.busy": "2026-06-25T14:46:03.717655Z",
"iopub.status.idle": "2026-06-25T14:46:03.720896Z",
"shell.execute_reply": "2026-06-25T14:46:03.720274Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'GGCGCGTGCCNNNNCTAAAAATAGGGCGCGTGCCNNNNNNNCGTCTAGACA'"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tangermeme.utils import characters\n",
"\n",
"characters(X_hat4, allow_N=True)"
]
},
{
"cell_type": "markdown",
"id": "4863e3f8-26de-43da-8e02-5517816115fd",
"metadata": {},
"source": [
"Interestingly, adding in a single AP-1 motif would increase predictions by significantly more than the desired value of 1. Instead, the method constructs weaker versions of the binding sites by overlapping motifs."
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "5864988d-5a07-409a-a2a9-3762e3b7aec4",
"metadata": {
"execution": {
"iopub.execute_input": "2026-06-25T14:46:03.722462Z",
"iopub.status.busy": "2026-06-25T14:46:03.722386Z",
"iopub.status.idle": "2026-06-25T14:46:03.954592Z",
"shell.execute_reply": "2026-06-25T14:46:03.953741Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor(0.9614, dtype=torch.float16)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from tangermeme.marginalize import marginalize\n",
"\n",
"y_before, y_after = marginalize(model, X, X_hat4.unsqueeze(0))\n",
"(y_after - y_before)[:, idxs].mean()"
]
},
{
"cell_type": "markdown",
"id": "d3d6482a-5cc0-49eb-a2b6-677e400144f9",
"metadata": {},
"source": [
"#### Final Words\n",
"\n",
"Design can be a tricky process with many tradeoffs, particularly when it comes to genomics. One may need multiple iterations and trying out several strategies before converging on one that yields consistently good edits. This is, in part, because we have not yet fully converged on language for describing the pros and cons of various design methods. It is my hope that packages like `tangermeme`, and the design methods implemented here, can help move the field forward by standardizing some of the language we use to describe the design process."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}