{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import numpy as np\n",
    "from suno_utils.utils.text import read_jsonl\n",
    "from suno_utils.utils.s3 import read_from_s3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2477, 3000, 128) (2477, 750, 1)\n"
     ]
    }
   ],
   "source": [
    "# read some data from memmap\n",
    "VAE_DIM = 128\n",
    "SEMANTIC_N_CODEBOOKS = 1\n",
    "\n",
    "#VAE_N_MEMMAP_TOKENS = 36000\n",
    "#SEMANTIC_N_MEMMAP_TOKENS = 9000\n",
    "\n",
    "VAE_N_MEMMAP_TOKENS = 3000\n",
    "SEMANTIC_N_MEMMAP_TOKENS = 750\n",
    "\n",
    "base_dir = \"/app/suno/data/chirp_v4/vae_v4\"\n",
    "#base_dir = \"/mnt/localdisk/cjs_shards/\"\n",
    "metas = read_jsonl(f\"{base_dir}/metas_val.jsonl\", progress=False)\n",
    "vae_memmap_filepath = f\"{base_dir}/data_vae_val.bin\"\n",
    "semantic_memmap_filepath = f\"{base_dir}/data_semantic_val.bin\"\n",
    "\n",
    "# load memmaps\n",
    "vae_memmap = np.memmap(vae_memmap_filepath, dtype=np.float32, mode=\"r\")\n",
    "semantic_memmap = np.memmap(semantic_memmap_filepath, dtype=np.uint16, mode=\"r\")\n",
    "\n",
    "# reshape memmaps\n",
    "vae_data = vae_memmap.reshape(-1, VAE_N_MEMMAP_TOKENS, VAE_DIM)\n",
    "semantic_data = semantic_memmap.reshape(-1, SEMANTIC_N_MEMMAP_TOKENS, SEMANTIC_N_CODEBOOKS)\n",
    "\n",
    "print(vae_data.shape, semantic_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# calculate hte mean and std\n",
    "vae_mean = np.mean(vae_data, axis=(0, 1))\n",
    "vae_std = np.std(vae_data, axis=(0, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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OJ1O88wzz3j6u1wu06VLF/P888+bt956ywwePNgEBQWZmpoar/1mZmYaSU0uaWlpLY5p9uzZJjw83Jw9e7bZPps2bTKSzNatW73aKyoqTGhoqBk3bpxxu92e9gULFhhJnXa2vczMTNOvXz/z4osvmkOHDplnn33WREVFmXvuucfTZ9myZSYyMtJTu5tuuskMHDjQfP755zaOPLDU1NSYPXv2mD179hhJZuXKlWbPnj2eWdms1Gjs2LFm1KhRZufOneb11183gwcPNunp6XYdUkBoqW719fVmwoQJpn///mbv3r1e71Xq6uo8+6BuF47w5CdWr15tBgwYYEJDQ01SUpJ544037B4SvqK5N1+/+c1vPH0+//xzc+edd5pevXqZbt26mZtvvtl8/PHH9g0aTfp6eKJu/uPuu+82ksyhQ4fMCy+8YC677DLjcDhMcHCwyc/P9/T7+9//biSZKVOmmJiYGON0Ok1ycrKRZF588UWvfWZmZpqwsDBTWFjYaNmzZ0+L41m8eLEJDg42L7/8crN9mgtPBQUFRpLZsmWLV/u5nznorOGpurrazJ492wwYMMCEhYWZQYMGmZ/+9Kdeb97cbrdZuHChp3ZjxowxBw8etHHUgWfr1q1Nvqad+7u0UqNPPvnEpKenmx49epjw8HCTlZXV6MMLtK2W6nbo0KFm36t89fmJul04hzFf+dlvAABsUlJSosTERD300ENasGCBPvroIw0YMEB33XWXVq1a5el3zz336Be/+IV2796tLl26eNq/+93vKiUlRQUFBZ62adOm6fe//32jySasqKio0HXXXacDBw6oX79+uuGGG3Tbbbdp7Nixnj6///3vNWnSJG3dulXXXXedp33ZsmWaP3++/vnPf2rQoEFe++3du7cmTJigp556qtVjAgDYi+88AQD8QkJCgoYMGaL169dLktavXy9jjGeaa+mL7x+uX79etbW1GjZsmAYPHuxZPvjgAz3//PPnFZSaEh0drb179+qPf/yjJkyYoK1bt+p73/ses8YBQABjqnIAgN/IyMjQwoUL9dZbb6mgoECDBw/WlVde6Vm/fft2ffTRR3rggQc8EzOc8+mnn2rmzJnavHlzm01NHhoaqvHjx2v8+PFyu92688479ctf/lILFy7UpZdeKofD0eR2F198sSTpvffe8zrzdPz4cX366adtMjYAQPsj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JSYm6mc/+5kkadSoUXrnnXeUn5+vzMxMm0eHlvzud7/TunXrVFBQoP/8z//U3r17NWfOHMXGxlI7oJ2cOXNGt912m4wxWrNmjd3D6XS4bM9mUVFRCg4ObjS7V3l5uVwul02jQnOys7P14osvauvWrerfv7+n3eVyqb6+XpWVlV79qaO9SkpKVFFRoSuuuEIhISEKCQnR9u3b9fjjjyskJEQxMTHUzQ/17dtXw4YN82obOnSoDh8+LEme2vC86X/mzp2refPmacqUKRo+fLjuuOMO3X333crNzZVE7ToCKzVyuVyNJrU6e/asTp48SR1tdi44ffjhhyosLPScdZKoW1shPNksNDRUCQkJKioq8rS53W4VFRUpJSXFxpHhq4wxys7O1nPPPadXX31VAwcO9FqfkJCgLl26eNXx4MGDOnz4MHW00ZgxY/T2229r7969niUxMVEZGRme/6du/ueqq65q9FMA//jHP3TxxRdLkgYOHCiXy+VVt+rqau3cuZO62ezUqVMKCvJ+axEcHCy32y2J2nUEVmqUkpKiyspKlZSUePq8+uqrcrvdSk5Obvcx4wvngtN7772nv/zlL+rTp4/XeurWRuyesQLGbNiwwTidTvPUU0+Z/fv3m5kzZ5rIyEhTVlZm99Dwbz/60Y9MRESE2bZtm/n44489y6lTpzx9fvjDH5oBAwaYV1991bz55psmJSXFpKSk2DhqNOWrs+0ZQ9380a5du0xISIh56KGHzHvvvWfWrVtnunXrZp555hlPn2XLlpnIyEjz/PPPm7feesvcdNNNZuDAgebzzz+3ceTIzMw0/fr1My+++KI5dOiQefbZZ01UVJS55557PH2onf1qamrMnj17zJ49e4wks3LlSrNnzx7PrGxWajR27FgzatQos3PnTvP666+bwYMHm/T0dLsOKSC0VLf6+nozYcIE079/f7N3716v9yp1dXWefVC3C0d48hOrV682AwYMMKGhoSYpKcm88cYbdg8JXyGpyeU3v/mNp8/nn39u7rzzTtOrVy/TrVs3c/PNN5uPP/7YvkGjSV8PT9TNP73wwgvmsssuM06n0wwZMsQ8+eSTXuvdbrdZuHChiYmJMU6n04wZM8YcPHjQptHinOrqajN79mwzYMAAExYWZgYNGmR++tOfer15o3b227p1a5OvaZmZmcYYazX65JNPTHp6uunRo4cJDw83WVlZpqamxoajCRwt1e3QoUPNvlfZunWrZx/U7cI5jPnKz34DAAAAAJrEd54AAAAAwALCEwAAAABYQHgCAAAAAAsITwAAAABgAeEJAAAAACwgPAEAAACABYQnAAAAALCA8AQAAAAAFhCeAAAAAMACwhMAAAAAWEB4AgAAAAALCE8AAAAAYMH/B6rcavOMd1zyAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# now create bar plot of the mean and std across each dim \n",
    "import matplotlib.pyplot as plt\n",
    "fig, axs = plt.subplots(2, 1, figsize=(10, 5))\n",
    "axs[0].bar(range(VAE_DIM), vae_mean)\n",
    "axs[0].set_title(\"VAE mean\")\n",
    "axs[1].bar(range(VAE_DIM), vae_std)\n",
    "axs[1].set_title(\"VAE std\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(16675, 250, 12) (16675, 250, 1)\n"
     ]
    }
   ],
   "source": [
    "# now read some data from DAC\n",
    "SEMANTIC_N_CODEBOOKS = 1\n",
    "CODEC_N_CODEBOOKS = 12\n",
    "\n",
    "CODEC_N_MEMMAP_TOKENS = 250\n",
    "SEMANTIC_N_MEMMAP_TOKENS = 250\n",
    "\n",
    "base_dir = \"/app/suno/data/chirp_v4/vae_v2\"\n",
    "#base_dir = \"/mnt/localdisk/cjs_shards/\"\n",
    "metas = read_jsonl(f\"{base_dir}/metas_val.jsonl\", progress=False)\n",
    "codec_memmap_filepath = f\"{base_dir}/data_codec_val.bin\"\n",
    "semantic_memmap_filepath = f\"{base_dir}/data_semantic_val.bin\"\n",
    "\n",
    "# load memmaps\n",
    "codec_memmap = np.memmap(codec_memmap_filepath, dtype=np.uint16, mode=\"r\")\n",
    "semantic_memmap = np.memmap(semantic_memmap_filepath, dtype=np.uint16, mode=\"r\")\n",
    "\n",
    "# reshape memmaps\n",
    "codec_memmap = codec_memmap.reshape(-1, CODEC_N_MEMMAP_TOKENS, CODEC_N_CODEBOOKS)\n",
    "semantic_data = semantic_memmap.reshape(-1, SEMANTIC_N_MEMMAP_TOKENS, SEMANTIC_N_CODEBOOKS)\n",
    "\n",
    "print(codec_memmap.shape, semantic_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/christian/code/glockenspiel/suno_utils/suno_utils/utils/s3.py:325: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n",
      "  data = read_f(tmp_filepath)\n"
     ]
    }
   ],
   "source": [
    "from suno_utils.models.dac.nn.quantize_2 import ResidualVectorQuantize\n",
    "\n",
    "def load_rvq(codec_path: str):\n",
    "    sd = read_from_s3(codec_path, read_f=torch.load)\n",
    "    model = ResidualVectorQuantize(\n",
    "        input_dim=128,\n",
    "        n_codebooks=12,\n",
    "        codebook_size=2048,\n",
    "        codebook_dim=8,\n",
    "        quantizer_dropout=0.0,\n",
    "    )\n",
    "\n",
    "    model.load_state_dict(\n",
    "        {k[10:]: v for k, v in sd[\"state_dict\"].items() if k.startswith(\"quantize\")}\n",
    "    )\n",
    "    model.eval()\n",
    "\n",
    "    for param_name, param in model.named_parameters():\n",
    "        param.requires_grad = False\n",
    "\n",
    "    return model\n",
    "\n",
    "def decode_vq(rvq, codes, n_quantizers):\n",
    "    z_q = 0\n",
    "    for i, quantizer in enumerate(rvq.quantizers[:n_quantizers]):\n",
    "        _z_q = quantizer.embed_code(codes[:, :, i]).transpose(1, 2)\n",
    "        _z_q = quantizer.out_proj(_z_q)\n",
    "        z_q += _z_q.transpose(1, 2)\n",
    "    return z_q\n",
    "\n",
    "rvq = load_rvq(\"s3://suno-data/georg/models/codec/dac_2c_25x12.pt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([16675, 250, 128])\n"
     ]
    }
   ],
   "source": [
    "# now convert the codec codes to continuous embeddings\n",
    "cont_codec_data = decode_vq(rvq, torch.tensor(codec_memmap).long(), 12)\n",
    "print(cont_codec_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# now compute mean and std of each dim\n",
    "cont_codec_data = cont_codec_data.numpy()\n",
    "codec_mean = np.mean(cont_codec_data, axis=(0, 1))\n",
    "codec_std = np.std(cont_codec_data, axis=(0, 1))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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06FDBzNixAhf3aSgUV3vysrKzN13323i4+PNzp07PT6vlJaWuq+D3l2bwHtl9rF58+aZxMREExYWZnr16mW2bNni65JwGUlVnl5//XX3mO+++8786le/Mk2aNDENGjQwP/vZz8yJEyd8VzSq9P2QQ9+sk5eXVyl0VOe5554zksy+ffuMMcZ8+OGHpnPnziYsLMxIMrfffrsxxpilS5caSWbVqlVm2rRpJiYmxjidTnPrrbcaSR5homvXrmbgwIHm9OnTHqdPPvnESDJvvvmmMcaYtLQ043A4zD//+c9a3cbDhw+7g1lJSckVx1UVcsrLy01ERIQZPnx4pfGDBw8OyJBTVFRkJkyYYBITE014eLhp27at+e1vf+vxAcvlcnn07bbbbjMHDhzwYdXBZ/369VW+p116jNakR//85z/NiBEjTKNGjUxkZKQZM2aMKS4u9sGtCS7V9e7IkSNX/Lyyfv1693XQu2sTeK/MAIA6VduZnEcffdSEhISYsrKySpdFR0ebn//858YYYzIzM40kc+jQoUrjmjRp4hEmIiIirvimf+lbUGMufrN53XXX1f5GGmPS09ONJBMREWHuuOMO88orr5iCggKPMVWFnBMnThhJZtq0aZWu88knnwzIkAMAdsdvcgAgyEVGRiouLk579uyp1d85HI46q8Hlcun222/X5MmTq7z8+uuvv+Z9vPDCCxo9erTef/99/f3vf9cTTzyhzMxMbdmyxWOBEgBA4GN1NQCA7rzzTh06dKhG/9Bj69at5XK5dPDgQY/tJ0+eVEFBgXvRgUv//f6406dP69tvv/XY1q5dO509e1YpKSlVnhITE93jjh8/rjNnzlzV7ezSpYv+67/+Sxs3btSnn36qY8eOaeHChe7LqwpuLVq0UERERKXbIV1cAAMA4H8IOQAATZ48WQ0bNtTYsWMrLUkrSYcOHdLcuXMlSYMHD5YkjxXPJOnFF1+UJA0ZMkTSxX+du379+po3b56MMe5x3/87Sbr//vu1efNmrV69utJlBQUFKi8vlyQNGzZMxhjNnDmz0rjL9/F9RUVF7uu4pEuXLgoJCVFpaal7W8OGDSstVR4aGqoBAwbovffecy+NLUn79++vsl4AgO85THXvCgCAoPHBBx/ogQceUEREhEaNGqXOnTurrKxMn332mZYtW6bRo0e7/22Y0aNHa8mSJbr//vvV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+3b953/+p+655x7t3bvXyt0CAAAACGKWHq521113eZx/9tlntWDBAm3ZskU33nijlbsGAAAAEKS89puciooKLVu2TCUlJUpOTvbWbgEAAAAEGctDzu7du5WcnKzz58+rUaNGWrFihTp16lTl2NLSUpWWlrrPFxUVWV0eAAAAAJuxfAnpH/3oR9q5c6eys7P12GOPKTU1Vfv27atybGZmpqKiotynhIQEq8sDAAAAYDOWh5ywsDC1b99ePXr0UGZmprp166a5c+dWOTYjI0OFhYXuU15entXlAQAAALAZr/87OS6Xy+OQtMs5nU45nU4vVwQAAADATiwNORkZGRo0aJASExNVXFyspUuXasOGDVq9erWVuwUAAAAQxCwNOadOndKoUaN04sQJRUVFqWvXrlq9erVuv/12K3cLAAAAIIhZGnJee+01K68eAAAAACqxfOEBAAAAAPAmQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAWyHkAAAAALAVQg4AAAAAW7E05GRmZurmm29W48aN1bJlSw0dOlQHDhywcpcAAAAAgpylIScrK0tpaWnasmWL1qxZowsXLuiOO+5QSUmJlbsFAAAAEMTqWXnlH3/8scf5xYsXq2XLlsrJydFPf/pTK3cNAAAAIEh59Tc5hYWFkqSmTZt6c7cAAAAAgoilMzmXc7lcmjhxovr06aPOnTtXOaa0tFSlpaXu80VFRd4qDwAAAIBNeG0mJy0tTXv27NHbb799xTGZmZmKiopynxISErxVHgAAAACb8ErIGT9+vFauXKn169crPj7+iuMyMjJUWFjoPuXl5XmjPAAAAAA2YunhasYYPf7441qxYoU2bNigpKSkasc7nU45nU4rSwIAAABgc5aGnLS0NC1dulTvv/++GjdurPz8fElSVFSUIiIirNw1AAAAgCBl6eFqCxYsUGFhofr166dWrVq5T++8846VuwUAAAAQxCw/XA0AAAAAvMmr/04OAAAAAFiNkAMAAADAVgg5AAAAAGyFkAMA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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "# now create bar plot of the mean and std across each dim\n",
    "fig, axs = plt.subplots(2, 1, figsize=(10, 5))\n",
    "axs[0].bar(range(128), codec_mean)\n",
    "axs[0].set_title(\"Codec mean\")\n",
    "axs[1].bar(range(128), codec_std)\n",
    "axs[1].set_title(\"Codec std\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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kWTuuusuj9gbb7zRNGzY0O/8AADCQ05OjpFkbrjhhoDit23bZiSZe+65x2P4I488YiSZNWvWGGOMOXr0qImJiTEDBgwwLpfLips8ebKRZDIyMqxhTz31lElISDBfffWVxzgnTpxoIiMjzf79+40xxqxZs8ZIMg899FC5drlPw5srr7zSSDJZWVnWsC+//NJIMhEREWbjxo3W8JUrVxpJZs6cOdawu+++2zRr1sz88MMPHuMdMmSISUpKsnJzYWGhycvL84j56aefTNOmTT3yccl+Q8OGDc2xY8es4UuXLjWSzDvvvON3foC6iEvNgRATGRmpIUOGaMOGDdq3b581PCsrS02bNtU111xjDdu+fbs+++wzDR061Bo2dOhQ/fDDD1q5cmW5ccfGxmrVqlXlXtOnTw+obbfeequSkpKsv3v06CFJuuOOOxQVFeUxPD8/XwcPHpRUfBY7OzvbalvJKzIyUj169PC4RM39bP6ZM2f0ww8/6Je//KUk6ZNPPinXpvvuu8/j7yuuuEI//vijcnNzA5onAEDdVZILSs7sVuRf//qXJGncuHEewx9++GFJsu4Ff++996wrwNyvxCo5M+xu0aJFuuKKK3TOOed45MC0tDQVFRXpgw8+kCS9+eabcjgcmjp1arlxlL3ay5t69eppyJAh1t8XXHCBGjRooI4dO1r5WirN3d98842k4kvm33zzTQ0cOFDGGI829unTRzk5OVb+jYyMVExMjKTiy+KPHTumwsJCdevWzWuOvv3223XOOedYf19xxRUe0wbCCZeaAyEoPT1df/zjH5WVlaXJkyfrv//9rz788EM99NBDHk8gf+2115SQkKA2bdpoz549koqL69TUVM2fP18DBgzwGG9kZKTS0tKq3K6WLVt6/F1ShLdo0cLr8J9++kmStHv3bknS1Vdf7XW87pe5Hzt2TNOmTdPChQvL3eeek5NTYZtKEvxPP/0U0OXzAIC6qyQP+PuZTnfffvutIiIi1K5dO4/hycnJatCggb799lsrTpLat2/vEde4cWOPQlMqzoHbt29X48aNvU6zJNd9/fXXSklJ0bnnnhtQW8tq3rx5uQI9KSmpwhz9/fffKzs7Wy+//LLPJ7u75+N58+bpD3/4g7788ksVFBRYw1u3bl3uc/5yNBBuKLyBENS1a1d16NBBCxYs0OTJk7VgwQIZYzyeZm6M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AAAAsBGFNwAAAAAANqLwBgAAAADARhTeAGqF1NRUDR8+PNjNAACg2tSV3PbEE0/I4XAEuxlASKPwBmqpQYMGKT4+XsePH/cZk56erpiYGP3444/WsOzsbMXGxsrhcGjnzp1ePzd8+HA5HA6vr9jY2LNu+xdffKEnnnhC+/btO+txAQBQ3b7++mvde++9atOmjWJjY5WYmKhevXppxowZOn36dLCbZ7tnn31WS5YsCXYzgDolKtgNAFA16enpeuedd7R48WINGzas3PunTp3S0qVL1bdvXzVs2NAavmjRIjkcDiUnJ2v+/Pl6+umnvY7f6XTqlVdeKTc8MjLyrNv+xRdfaNq0abrqqquUmpp61uMDAKC6LF++XLfeequcTqeGDRumzp07Kz8/Xx999JHGjx+vzz//XC+//HKwm2mrZ599VrfccosGDx4c7KYAdQaFN1BLDRo0SPXr11dWVpbXwnvp0qU6efKk0tPTPYa/9tpr6t+/v1q1aqWsrCyfhXdUVJTuuOMOW9oOAEAo2rt3r4YMGaJWrVppzZo1atasmfXeqFGjtGfPHi1fvjyILQRQW3GpOVBLxcXF6aabbtLq1at19OjRcu9nZWWpfv36GjRokDVs//79+vDDDzVkyBANGTJEe/fu1fr166u9bQsXLlTXrl1Vv359JSYmqkuXLpoxY4Ykae7cubr11lslSb1797YuYX///fclScYYPf3002revLni4+PVu3dvff7559XeRgAAynr++ed14sQJvfrqqx5Fd4l27dppzJgx1t+FhYV66qmn1LZtWzmdTqWmpmry5MnKy8vz+Fxlclt2drbGjh2rFi1ayOl0ql27dnruuefkcrk84lwul2bMmKEuXbooNjZWjRs3Vt++fbVlyxa/87h7927dfPPNSk5OVmxsrJo3b64hQ4YoJydHkuRwOHTy5EnNmzfPytHu96F/9NFHuuyyyxQbG6u2bdvqr3/9q9/pASjGGW+gFktPT9e8efP0+uuva/To0dbwY8eOaeXKlRo6dKji4uKs4QsWLFBCQoKuv/56xcXFqW3btpo/f74uv/xyr+P/4Ycfyg2LiYlRYmKizzatWrVKQ4cO1TXXXKPnnntOkrRz5079v//3/zRmzBj9+te/1kMPPaQ///nPmjx5sjp27ChJ1r9TpkzR008/rf79+6t///765JNPdN111yk/P7/yHQQAQCW88847atOmjc+8WNY999yjefPm6ZZbbtHDDz+sTZs2KTMzUzt37tTixYutuEBz26lTp3TllVfq4MGDuvfee9WyZUutX79ekyZN0nfffac//elPVuzdd9+tuXPnql+/frrnnntUWFioDz/8UBs3blS3bt28tjc/P199+vRRXl6eHnzwQSUnJ+vgwYNatmyZsrOzlZSUpH/84x+655571L17d/3mN7+RJLVt21aS9Nlnn+m6665T48aN9cQTT6iwsFBTp05V06ZNK9PNQHgyAGqtwsJC06xZM9OzZ0+P4bNnzzaSzMqVKz2Gd+nSxaSnp1t/T5482TRq1MgUFBR4xGVkZBhJXl99+vTx26YxY8aYxMREU1hY6DNm0aJFRpJZu3atx/CjR4+amJgYM2DAAONyuTzaKclkZGT4nTYAAFWVk5NjJJkbbrghoPht27YZSeaee+7xGP7II48YSWbNmjXGmMrltqeeesokJCSYr776ymOcEydONJGRkWb//v3GGGPWrFljJJmHHnqoXLvcp1HWp59+aiSZRYsW+Z23hIQErzl38ODBJjY21nz77bfWsC+++MJERkYaygrAPy41B2qxyMhIDRkyRBs2bPB4QnhWVpaaNm2qa665xhq2fft2ffbZZxo6dKg1bOjQofrhhx+0cuXKcuOOjY3VqlWryr2mT5/ut00NGjTQyZMntWrVqkrPz3vvvaf8/Hw9+OCDHj9LMnbs2EqPCwCAysjNzZUk1a9fP6D4f/3rX5KkcePGeQx/+OGHJcm6F7wyuW3RokW64oordM455+iHH36wXmlpaSoqKtIHH3wgSXrzzTflcDg0derUcuPw97NeSUlJkqSVK1fq1KlTAc1niaKiIq1cuVKDBw9Wy5YtreEdO3ZUnz59KjUuIBxReAO1XMnD07KysiRJ//3vf637uN2fQP7aa68pISFBbdq00Z49e7Rnzx7FxsYqNTVV8+fPLzfeyMhIpaWllXtdcsklftvzwAMP6Pzzz1e/fv3UvHlz3XXXXXr33XcDmpdvv/1WktS+fXuP4Y0bN9Y555wT0DgAAKiKktuo/P1Mp7tvv/1WERERateuncfw5ORkNWjQwMpplcltu3fv1rvvvqvGjRt7vNLS0iTJeqbL119/rZSUFJ177rmVmsfWrVtr3LhxeuWVV9SoUSP16dNHM2fOtO7v9uf777/X6dOny82HJF1wwQWVagcQjrjHG6jlunbtqg4dOmjBggWaPHmyFixYIGOMx9PMjTFasGCBTp48qU6dOpUbx9GjR3XixAnVq1fvrNvTpEkTbdu2TStXrtSKFSu0YsUKzZkzR8OGDdO8efPOevwAANghMTFRKSkp2rFjR6U+5+8Mc2W5XC5de+21evTRR72+f/7555/1NP7whz9o+PDhWrp0qf7973/roYceUmZmpjZu3KjmzZuf9fgBeMcZb6AOSE9P144dO7R9+3ZlZWWpffv2uuyyy6z3161bp//+97968skntWjRIo/Xyy+/rFOnTmnJkiXV1p6YmBgNHDhQ//u//6uvv/5a9957r/7v//5Pe/bskeR7J6VVq1aSio/4u/v+++/1008/VVv7AADw5vrrr9fXX3+tDRs2VBjbqlUruVyucjnryJEjys7OtnJaZXJb27ZtdeLECa9XnKWlpVmXeLdt21aHDh3SsWPHqjSfXbp00e9+9zt98MEH+vDDD3Xw4EHNnj3bet9bnm7cuLHi4uLKzYck7dq1q0rtAMIJhTdQB5Sc3Z4yZYq2bdvm9be7ExISNH78eN1yyy0er5EjR6p9+/ZeLzevih9//NHj74iICF100UWSZP28SkJCgqTin0xxl5aWpujoaL300ksyxljD3Z/iCgCAXR599FElJCTonnvu0ZEjR8q9//XXX1s/j9m/f39J5XPUiy++KEkaMGCApMrltttuu00bNmzw+uyV7OxsFRYWSpJuvvlmGWM0bdq0cnHu0ygrNzfXGkeJLl26KCIiwuMn0BISEsrl6MjISPXp00dLlizR/v37reE7d+702l4AnrjUHKgDWrdurcsvv1xLly6VJI/COy8vT2+++aauvfZaxcbGev38oEGDNGPGDB09elRNmjSRVPzbpK+99prX+BtvvNEqnsu65557dOzYMV199dVq3ry5vv32W7300ku65JJLrJ8Mu+SSSxQZGannnntOOTk5cjqduvrqq9WkSRM98sgjyszM1PXXX6/+/fvr008/1YoVK9SoUaMq9w8AAIFo27atsrKydPvtt6tjx44aNmyYOnfurPz8fK1fv16LFi2yftP64osvVkZGhl5++WVlZ2fryiuv1ObNmzVv3jwNHjxYvXv3llR8pjjQ3DZ+/Hi9/fbbuv766zV8+HB17dpVJ0+e1Gef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",
      "text/plain": [
       "<Figure size 1000x500 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create one bar plot that contains both vae and the codec results\n",
    "# share y axis for the means but use different y axis for the std\n",
    "fig, axs = plt.subplots(2, 2, figsize=(10, 5), sharey='row')\n",
    "axs[0, 0].bar(range(VAE_DIM), vae_mean)\n",
    "axs[0, 0].set_title(\"VAE mean\")\n",
    "axs[0, 1].bar(range(128), codec_mean)\n",
    "axs[0, 1].set_title(\"Codec mean\")\n",
    "axs[1, 0].bar(range(VAE_DIM), vae_std)\n",
    "axs[1, 0].set_title(\"VAE std\")\n",
    "axs[1, 1].bar(range(128), codec_std)\n",
    "axs[1, 1].set_title(\"Codec std\")\n",
    "\n",
    "# add a line to the std plots to show 1 std\n",
    "for ax in axs[1]:\n",
    "    ax.axhline(1, color='r', linestyle='--')\n",
    "\n",
    "# add a line to the mean plots to show 0 mean\n",
    "for ax in axs[0]:\n",
    "    ax.axhline(0, color='r', linestyle='--')\n",
    "    \n",
    "# add space between the plots\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.046211667 3.7203612\n"
     ]
    }
   ],
   "source": [
    "# compute the overall mean and std of the codec data\n",
    "overall_codec_mean = np.mean(cont_codec_data)\n",
    "overall_codec_std = np.std(cont_codec_data)\n",
    "print(overall_codec_mean, overall_codec_std)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.2688\n"
     ]
    }
   ],
   "source": [
    "scale_factor = 1/ overall_codec_std\n",
    "print(f\"{scale_factor:0.4f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.5866325 4.736165\n"
     ]
    }
   ],
   "source": [
    "# to standardize the data, lets find the max mean and the max std and use these\n",
    "max_mean = max(vae_mean.max(), codec_mean.max())\n",
    "max_std = max(vae_std.max(), codec_std.max())\n",
    "print(max_mean, max_std)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "# now create standardised data for codec using the max mean and max std\n",
    "cont_codec_data_standard = (cont_codec_data) / overall_codec_std\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABy1ElEQVR4nO3daXgUVfr38V/2hCVhTwhgAsiwCIKC5InIgBINiygqLvwdCcFllGXEDAg4QhDUICqiiKKOgs7IgCCLoqIYFgeNgCwqsgwqAQXDKoQ1Ccl5XmCK7qS7s1HpkHw/19UXdPVd1XdXnTpdd+pUtY8xxggAAAAAAFxwvt5OAAAAAACAyoqiGwAAAAAAm1B0AwAAAABgE4puAAAAAABsQtENAAAAAIBNKLoBAAAAALAJRTcAAAAAADah6AYAAAAAwCYU3QAAAAAA2ISiGwAASdHR0Ro0aFC5vNegQYMUHR3tNM3Hx0cTJkwol/fPN2HCBPn4+JTrexYlPT1dPj4+mj17trdTAQDggqDoBgDY5vvvv1f//v0VFRWl4OBgNWrUSNdff72mT5/uFPf0009r8eLF3kkSxbZq1SrdeuutioiIUGBgoBo0aKC+fftq4cKF3k4NAIAKi6IbAGCLr776Sp06ddK3336r+++/Xy+//LLuu+8++fr66sUXX3SKpeiWTp8+rccff9zbabiVnJysa6+9Vlu2bNFf//pXzZw5U6NGjdKJEyd02223ac6cOd5OEQCACsnf2wkAACqnp556SmFhYVq/fr1q1arl9NqBAwe8k1Q5OXPmjAIDA+XrW/y/bQcHB9uYUdksWLBAEydOVP/+/TVnzhwFBARYr40aNUqffvqpcnJyvJghAAAVF2e6AQC2+Omnn3TZZZcVKrglqUGDBtb/fXx8dPLkSb399tvy8fGRj4+PdW317t27NWTIELVs2VIhISGqW7eubr/9dqWnpzstb/bs2fLx8dGXX36ppKQk1a9fX9WrV9ctt9yigwcPOsUaY/Tkk0+qcePGqlatmq699lr98MMPhXI8cuSIRo4cqXbt2qlGjRoKDQ1Vr1699O233zrFrVq1Sj4+Ppo7d64ef/xxNWrUSNWqVVNmZqYkafHixWrbtq2Cg4PVtm1bLVq0yOX6KnhN9/HjxzVixAhFR0crKChIDRo00PXXX6+NGzc6zbd27Vr17NlTYWFhqlatmrp166Yvv/yy0PLXrFmjq666SsHBwWrevLlee+01l3m4Mm7cONWpU0dvvfWWU8GdLz4+XjfeeKP1/MCBA7r33nsVHh6u4OBgtW/fXm+//Xah+Y4ePapBgwYpLCxMtWrVUkJCgo4ePeoyh+3bt6t///6qU6eOgoOD1alTJ33wwQcul/nII49Y661x48YaOHCgDh065PEz+vj4aNiwYZo/f77atGmjkJAQxcbG6vvvv5ckvfbaa7r00ksVHBys7t27F2qDUvG2hR1tGgBQsXGmGwBgi6ioKKWlpWnLli1q27at27h//etfuu+++9S5c2c98MADkqTmzZtLktavX6+vvvpKd911lxo3bqz09HS9+uqr6t69u7Zu3apq1ao5LWv48OGqXbu2kpOTlZ6ermnTpmnYsGGaN2+eFTN+/Hg9+eST6t27t3r37q2NGzfqhhtuUHZ2ttOyfv75Zy1evFi33367mjZtqv379+u1115Tt27dtHXrVkVGRjrFT5o0SYGBgRo5cqSysrIUGBiozz77TLfddpvatGmjlJQUHT58WImJiWrcuHGR6+/BBx/UggULNGzYMLVp00aHDx/WmjVrtG3bNl155ZWSpBUrVqhXr17q2LGjkpOT5evrq1mzZum6667Tf//7X3Xu3FnSuWvrb7jhBtWvX18TJkzQ2bNnlZycrPDw8CLz2Llzp7Zv367BgwerZs2aRcafPn1a3bt3148//qhhw4apadOmmj9/vgYNGqSjR4/q4YcflnTujx8333yz1qxZowcffFCtW7fWokWLlJCQUGiZP/zwg7p06aJGjRppzJgxql69ut577z3169dP77//vm655RZJ0okTJ9S1a1dt27ZNgwcP1pVXXqlDhw7pgw8+0K+//qp69ep5zP2///2vPvjgAw0dOlSSlJKSohtvvFGPPvqoXnnlFQ0ZMkS///67pkyZosGDB2vFihXWvMXdFna0aQBABWcAALDBZ599Zvz8/Iyfn5+JjY01jz76qPn0009NdnZ2odjq1aubhISEQtNPnTpVaFpaWpqRZN555x1r2qxZs4wkExcXZ/Ly8qzpjzzyiPHz8zNHjx41xhhz4MABExgYaPr06eMU99hjjxlJTjmcOXPG5ObmOr33rl27TFBQkJk4caI1beXKlUaSadasWaF8O3ToYBo2bGi9f/56kWSioqKcYiWZ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y9q2bZueeeYZTZkyRdOnT7diaA+V18mTJ9W+fXvNmDHD5evF2fZ33323fvjhBy1fvlxLly7VF198oQceeKC8PgIuEE9t4dSpU9q4caPGjRunjRs3auHChdqxY4duuukmpzjaghcZeE3nzp3N0KFDree5ubkmMjLSpKSkeDEreMOBAweMJLN69WpjjDFHjx41AQEBZv78+VbMtm3bjCSTlpbmrTRhs+PHj5sWLVqY5cuXm27dupmHH37YGEN7qGpGjx5trrnmGrev5+XlmYiICPPss89a044ePWqCgoLMf/7zn/JIEeWoT58+ZvDgwU7Tbr31VnP33XcbY2gPVYkks2jRIut5cbb91q1bjSSzfv16K+aTTz4xPj4+Zu/eveWWOy6sgm3BlXXr1hlJZvfu3cYY2oK3cabbS7Kzs7VhwwbFxcVZ03x9fRUXF6e0tDQvZgZvOHbsmCSpTp06kqQNGzYoJyfHqX20atVKl1xyCe2jEhs6dKj69OnjtN0l2kNV88EHH6hTp066/fbb1aBBA11xxRV64403rNd37dqljIwMp/YQFhammJgY2kMldPXVVys1NVX/+9//JEnffvut1qxZo169ekmiPVRlxdn2aWlpqlWrljp16mTFxMXFydfXV2vXri33nFF+jh07Jh8fH9WqVUsSbcHb/L2dQFV16NAh5ebmKjw83Gl6eHi4tm/f7qWs4A15eXkaMWKEunTporZt20qSMjIyFBgYaHWU+cLDw5WRkeGFLGG3uXPnauPGjVq/fn2h12gPVcvPP/+sV199VUlJSXrssce0fv16/e1vf1NgYKASEhKsbe7q+4P2UPmMGTNGmZmZatWqlfz8/JSbm6unnnpKd999tyTRHqqw4mz7jIwMNWjQwOl1f39/1alTh/ZRiZ05c0ajR4/WgAEDFBoaKom24G0U3YCXDR06VFu2bNGaNWu8nQq85JdfftHDDz+s5cuXKzg42NvpwMvy8vLUqVMnPf3005KkK664Qlu2bNHMmTOVkJDg5exQ3t577z29++67mjNnji677DJt3rxZI0aMUGRkJO0BQCE5OTm64447ZIzRq6++6u108AeGl3tJvXr15OfnV+juw/v371dERISXskJ5GzZsmJYuXaqVK1eqcePG1vSIiAhlZ2fr6NGjTvG0j8ppw4YNOnDggK688kr5+/vL399fq1ev1ksvvSR/f3+Fh4fTHqqQhg0bqk2bNk7TWrdurT179kiStc35/qgaRo0apTFjxuiuu+5Su3btdM899+iRRx5RSkqKJNpDVVacbR8REVHoBr1nz57VkSNHaB+VUH7BvXv3bi1fvtw6yy3RFryNottLAgMD1bFjR6WmplrT8vLylJqaqtjYWC9mhvJgjNGwYcO0aNEirVixQk2bNnV6vWPHjgoICHBqHzt27NCePXtoH5VQjx499P3332vz5s3Wo1OnTrr77rut/9Meqo4uXboU+gnB//3vf4qKipIkNW3aVBEREU7tITMzU2vXrqU9VEKnTp2Sr6/z4Zqfn5/y8vIk0R6qsuJs+9jYWB09elQbNmywYlasWKG8vDzFxMSUe86wT37BvXPnTn3++eeqW7eu0+u0BS/z9p3cqrK5c+eaoKAgM3v2bLN161bzwAMPmFq1apmMjAxvpwabPfTQQyYsLMysWrXK/Pbbb9bj1KlTVsyDDz5oLrnkErNixQrzzTffmNjYWBMbG+vFrFGeHO9ebgztoSpZt26d8ff3N0899ZTZuXOneffdd021atXMv//9bytm8uTJplatWmbJkiXmu+++MzfffLNp2rSpOX36tBczhx0SEhJMo0aNzNKlS82uXbvMwoULTb169cyjjz5qxdAeKq/jx4+bTZs2mU2bNhlJZurUqWbTpk3WHamLs+179uxprrjiCrN27VqzZs0a06JFCzNgwABvfSSUkqe2kJ2dbW666SbTuHFjs3nzZqdjy6ysLGsZtAXvoej2sunTp5tLLrnEBAYGms6dO5uvv/7a2ymhHEhy+Zg1a5YVc/r0aTNkyBBTu3ZtU61aNXPLLbeY3377zXtJo1wVLLppD1XLhx9+aNq2bWuCgoJMq1atzOuvv+70el5enhk3bpwJDw83QUFBpkePHmbHjh1eyhZ2yszMNA8//LC55JJLTHBwsGnWrJn5xz/+4XQgTXuovFauXOnyeCEhIcEYU7xtf/jwYTNgwABTo0YNExoaahITE83x48e98GlQFp7awq5du9weW65cudJaBm3Be3yMMab8zqsDAAAAAFB1cE03AAAAAAA2oegGAAAAAMAmFN0AAAAAANiEohsAAAAAAJtQdAMAAAAAYBOKbgAAAAAAbELRDQAAAACATSi6AQAAAACwCUU3AAAAAAA2oegGAAAAAMAmFN0AAAAAANiEohsAAAAAAJtQdAMAAAAAYBOKbgAAAAAAbELRDQAAAACATSi6AQAAAACwCUU3AAAAAAA2oegGAKCEoqOjNWjQoHJ5r0GDBik6Otppmo+PjyZMmFAu759vwoQJ8vHxKdf3LEp6erp8fHw0e/Zsb6dSZt27d1f37t29nQYAwAYU3QCACuH7779X//79FRUVpeDgYDVq1EjXX3+9pk+f7hT39NNPa/Hixd5JEsW2atUq3XrrrYqIiFBgYKAaNGigvn37auHChd5OzXb79u3ThAkTtHnzZm+nAgCoACi6AQBe99VXX6lTp0769ttvdf/99+vll1/WfffdJ19fX7344otOsRTd0unTp/X44497Ow23kpOTde2112rLli3661//qpkzZ2rUqFE6ceKEbrvtNs2ZM8fbKdpq3759euKJJyi6AQCSJH9vJwAAwFNPPaWwsDCtX79etWrVcnrtwIED3kmqnJw5c0aBgYHy9S3+38GDg4NtzKhsFixYoIkTJ6p///6aM2eOAgICrNdGjRqlTz/9VDk5OV7MEACA8sWZbgCA1/3000+67LLLChXcktSgQQPr/z4+Pjp58qTefvtt+fj4yMfHx7q2evfu3RoyZIhatmypkJAQ1a1bV7fffrvS09Odljd79mz5+Pjoyy+/VFJSkurXr6/q1avrlltu0cGDB51ijTF68skn1bhxY1WrVk3XXnutfvjhh0I5HjlyRCNHjlS7du1Uo0YNhYaGqlevXvr222+d4latWiUfHx/NnTtXjz/+uBo1aqRq1aopMzNTkrR48WK1bdtWwcHBatu2rRYtWuRyfRW8pvv48eMaMWKEoqOjFRQUpAYNGuj666/Xxo0bneZbu3atevbsqbCwMFWrVk3dunXTl19+WWj5a9as0VVXXaXg4GA1b95cr732mss8XBk3bpzq1Kmjt956y6ngzhcfH68bb7zRen7gwAHde++9Cg8PV3BwsNq3b6+333670HxHjx7VoEGDFBYWplq1aikhIUFHjx51mcP27dvVv39/1alTR8HBwerUqZM++OADl8t85JFHrPXWuHFjDRw4UIcOHfL4GZcvX65rrrlGtWrVUo0aNdSyZUs99thjks5t46uuukqSlJiYaLVTx+vOX3/9dTVv3lwhISHq3Lmz/vvf/3p8PwDAxY0z3QAAr4uKilJaWpq2bNmitm3buo3717/+pfvuu0+dO3fWAw88IElq3ry5JGn9+vX66quvdNddd6lx48ZKT0/Xq6++qu7du2vr1q2qVq2a07KGDx+u2rVrKzk5Wenp6Zo2bZqGDRumefPmWTHjx4/Xk08+qd69e6t3797auHGjbrjhBmVnZzst6+eff9bixYt1++23q2nTptq/f79ee+01devWTVu3blVkZKRT/KRJkxQYGKiRI0cqKytLgYGB+uyzz3TbbbepTZs2SklJ0eHDh5WYmKjGjRsXuf4efPBBLViwQMOGDVObNm10+PBhrVmzRtu2bdOVV14pSVqxYoV69eqljh07Kjk5Wb6+vpo1a5auu+46/fe//1Xnzp0lnbu2/oYbblD9+vU1YcIEnT17VsnJyQoPDy8yj507d2r79u0aPHiwatasWWT86dOn1b17d/34448aNmyYmjZtqvnz52vQoEE6evSoHn74YUnn/vhx8803a82aNXrwwQfVunVrLVq0SAkJCYWW+cMPP6hLly5q1KiRxowZo+rVq+u9995Tv3799P777+uWW26RJJ04cUJdu3bVtm3bNHjwYF155ZU6dOiQPvjgA/3666+qV6+ey5x/+OEH3Xjjjbr88ss1ceJEBQUF6ccff7T+eNG6dWtNnDhR48eP1wMPPKCuXbtKkq6++mpJ0ptvvqm//vWvuvrqqzVixAj9/PPPuummm1SnTh01adKkyHUGALgIGQAAvOyzzz4zfn5+xs/Pz8TGxppHH33UfPrppyY7O7tQbPXq1U1CQkKh6adOnSo0LS0tzUgy77zzjjVt1qxZRpKJi4szeXl51vRHHnnE+Pn5maNHjxpjjDlw4IAJDAw0ffr0cYp77LHHjCSnHM6cOWNyc3Od3nvXrl0mKCjITJw40Zq2cuVKI8k0a9asUL4dOnQwDRs2tN4/f71IMlFRUU6xkkxycrL1PCwszAwdOrTQ58+Xl5dnWrRoYeLj450+y6lTp0zTpk3N9ddfb03r16+fCQ4ONrt377ambd261fj5+ZmiDhuWLFliJJkXXnjBY1y+adOmGUnm3//+tzUtOzvbxMbGmho1apjMzExjjDGLFy82ksyUKVOsuLNnz5quXbsaSWbWrFnW9B49eph27dqZM2fOOH3+q6++2rRo0cKaNn78eCPJLFy4sFBejuuooBdeeMFIMgcPHnQbs379+kJ55X+2Bg0amA4dOpisrCxr+uuvv24kmW7durldJgDg4sXwcgCA111//fVKS0vTTTfdpG+//VZTpkxRfHy8GjVq5HJYsCshISHW/3NycnT48GFdeumlqlWrVqFh1pL0wAMPOP0EVteuXZWbm6vdu3dLkj7//HNlZ2dr+PDhTnEjRowotKygoCDrmuzc3FwdPnzYGnbs6r0TEhKc8v3tt9+0efNmJSQkKCwszGm9tGnTpsjPXqtWLa1du1b79u1z+frmzZu1c+dO/d///Z8OHz6sQ4cO6dChQzp58qR69OihL774Qnl5ecrNzdWnn36qfv366ZJLLrHmb926teLj44vMI3+YfHHOckvSxx9/rIiICA0YMMCaFhAQoL/97W86ceKEVq9ebcX5+/vroYcesuL8/Pw0fPhwp+UdOXJEK1as0B133KHjx49bn/Pw4cOKj4/Xzp07tXfvXknS+++/r/bt21tnvh15+mm0/EsglixZory8vGJ9znzffPONDhw4oAcffFCBgYHW9Pxh8wCAyomiGwBQIVx11VVauHChfv/9d61bt05jx47V8ePH1b9/f23durXI+U+fPq3x48erSZMmCgoKUr169VS/fn0dPXpUx44dKxTvWFRKUu3atSVJv//+uyRZxXeLFi2c4urXr2/F5svLy9MLL7ygFi1aOL33d9995/K9mzZt6vTc3XtJUsuWLT1+bkmaMmWKtmzZoiZNmqhz586aMGGCfv75Z+v1nTt3SjpX7NevX9/p8c9//lNZWVk6duyYDh48qNOnT5c6j9DQUEnnrjEvjt27d6tFixaFbiLXunVr6/X8fxs2bKgaNWp4zOnHH3+UMUbjxo0r9DmTk5Mlnb8x308//eTxUgZ37rzzTnXp0kX33XefwsPDddddd+m9994rVgHubjsHBASoWbNmJc4FAHBx4JpuAECFEhgYqKuuukpXXXWV/vSnPykxMVHz58+3iiZ3hg8frlmzZmnEiBGKjY1VWFiYfHx8dNddd7ksiPz8/FwuxxhT4pyffvppjRs3ToMHD9akSZNUp04d+fr6asSIES7f2/Es94Vwxx13qGvXrlq0aJE+++wzPfvss3rmmWe0cOFC9erVy8rh2WefVYcOHVwuo0aNGsrKyipTHq1atZJ07rpwb8j/nCNHjnR7Zv7SSy8t03uEhIToiy++0MqVK/XRRx9p2bJlmjdvnq677jp99tlnbtsVAKDqougGAFRYnTp1knRu+HU+d0N/FyxYoISEBD3//PPWtDNnzri9w3VRoqKiJJ07S+x4FvLgwYPW2XDH97722mv15ptvOk0/evSo2xtyuXuvgnbs2FGsfBs2bKghQ4ZoyJAhOnDggK688ko99dRT6tWrl3WzudDQUMXFxbldRv369RUSElLqPP70pz+pZcuWWrJkiV588cVCZ6YLioqK0nfffae8vDyns93bt2+3Xs//NzU1VSdOnHBaZsGc8rdTQECAx88pnbsB35YtW4r8TK74+vqqR48e6tGjh6ZOnaqnn35a//jHP7Ry5UrFxcW5baOO2/m6666zpufk5GjXrl1q3759qfIBAFRsDC8HAHjdypUrXZ5h/vjjjyU5DyOuXr26y0Laz8+v0DKmT5+u3NzcUuUUFxengIAATZ8+3Wm506ZNK9Z7z58/37p+uCgNGzZUhw4d9PbbbzsNR1++fHmRQ+tzc3MLDWFv0KCBIiMjrTPXHTt2VPPmzfXcc8/pxIkThZaR/1Npfn5+io+P1+LFi7Vnzx7r9W3btunTTz8t1md54okndPjwYd133306e/Zsodc/++wzLV26VJLUu3dvZWRkON0x/uzZs5o+fbpq1Kihbt26WXFnz57Vq6++6vS5p0+fXuhzd+/eXa+99prTH2oKfk5Juu222/Ttt9+6/Fk2T6Mdjhw5Umha/uiB/PVdvXp1SSrUTjt16qT69etr5syZTnfAnz17dqn/OAQAqPg40w0A8Lrhw4fr1KlTuuWWW9SqVStlZ2frq6++0rx58xQdHa3ExEQrtmPHjvr88881depURUZGqmnTpoqJidGNN96of/3rXwoLC1ObNm2Ulpamzz//XHXr1i1VTvXr19fIkSOVkpKiG2+8Ub1799amTZv0ySefFDp7feONN2rixIlKTEzU1Vdfre+//17vvvtuia7TTUlJUZ8+fXTNNddo8ODBOnLkiKZPn67LLrvMZaGc7/jx42rcuLH69++v9u3bq0aNGvr888+1fv1666y/r6+v/vnPf6pXr1667LLLlJiYqEaNGmnv3r1auXKlQkND9eGHH0o6VzQvW7ZMXbt21ZAhQ6wi+LLLLtN3331X5Oe488479f333+upp57Spk2bNGDAAEVFRenw4cNatmyZUlNTNWfOHEnnbmb32muvadCgQdqwYYOio6O1YMECffnll5o2bZp1Q7a+ffuqS5cuGjNmjNLT09WmTRstXLjQ5fXyM2bM0DXXXKN27drp/vvvV7NmzbR//36lpaXp119/tX47fdSoUVqwYIFuv/12DR48WB07dtSRI0f0wQcfaObMmW7POk+cOFFffPGF+vTpo6ioKB04cECvvPKKGjdurGuuuUbSubPotWrV0syZM1WzZk1Vr15dMTExatq0qZ588kn99a9/1XXXXac777xTu3bt0qxZs7imGwAqMy/eOR0AAGOMMZ988okZPHiwadWqlalRo4YJDAw0l156qRk+fLjZv3+/U+z27dvNn//8ZxMSEuL0012///67SUxMNPXq1TM1atQw8fHxZvv27SYqKsrp573yfzJs/fr1TsvN/zmvlStXWtNyc3PNE088YRo2bGhCQkJM9+7dzZYtWwot88yZM+bvf/+7FdelSxeTlpZmunXr5vQzUPnvMX/+fJfr4f333zetW7c2QUFBpk2bNmbhwoUmISHB40+GZWVlmVGjRpn27dubmjVrmurVq5v27dubV155pdDyN23aZG699VZTt25dExQUZKKioswdd9xhUlNTneJWr15tOnbsaAIDA02zZs3MzJkzTXJycpE/GeYoNTXV3HzzzaZBgwbG39/f1K9f3/Tt29csWbLEKW7//v3WdgsMDDTt2rUr9FNbxhhz+PBhc88995jQ0FATFhZm7rnnHrNp0yaXP831008/mYEDB5qIiAgTEBBgGjVqZG688UazYMGCQsscNmyYadSokQkMDDSNGzc2CQkJ5tChQ0V+rsjISBMYGGgiIyPNgAEDzP/+9z+nuCVLlpg2bdoYf3//Qjm+8sorpmnTpiYoKMh06tTJfPHFF4XaCgCg8vAxphR3jAEAAAAAAEXimm4AAAAAAGxC0Q0AAAAAgE0ougEAAAAAsAlFNwAAAAAANqHoBgAAAADAJhTdAAAAAADYxN/bCVxoeXl52rdvn2rWrCkfHx9vpwMAAAAAqISMMTp+/LgiIyPl6+v+fHalK7r37dunJk2aeDsNAAAAAEAV8Msvv6hx48ZuX690RXfNmjUlnfvgoaGhXs4GAAAAAFAZZWZmqkmTJlYN6k6lK7rzh5SHhoZSdAMAAAAAbFXUZc3cSA0AAAAAAJtQdAMAAAAAYBOKbgAAAAAAbELRDQAAAACATUpddH/xxRfq27ev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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# now plot the standardised data\n",
    "fig, axs = plt.subplots(2, 1, figsize=(10, 5))\n",
    "axs[0].bar(range(128), np.mean(cont_codec_data_standard, axis=(0, 1)))\n",
    "axs[0].set_title(\"Standardised Codec mean\")\n",
    "axs[1].bar(range(128), np.std(cont_codec_data_standard, axis=(0, 1)))\n",
    "axs[1].set_title(\"Standardised Codec std\")\n",
    "\n",
    "# add a line to the std plots to show 1 std\n",
    "axs[1].axhline(1, color='r', linestyle='--')\n",
    "\n",
    "# add a line to the mean plots to show 0 mean\n",
    "axs[0].axhline(0, color='r', linestyle='--')\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# lets standardise the vae data by applying std correction of 2.5\n",
    "cont_vae_data_standard = (vae_data) * 2.5\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACE9klEQVR4nO3deXQUVdrH8V/2BGLCTgiEBJRhEQQE4QVkwCEaFhdUUBhGQlBcEBQZEXBkEZQw6iiOg6KOgguIgiwOIooBdJAIiKCiwqCyCYZVCGvW+/4BKbrTS5oknU7S3885fSDVt6ruvV11n3q6lg4wxhgBAAAAAIBSF+jrCgAAAAAAUFmRdAMAAAAA4CUk3QAAAAAAeAlJNwAAAAAAXkLSDQAAAACAl5B0AwAAAADgJSTdAAAAAAB4CUk3AAAAAABeQtINAAAAAICXkHQDPpaQkKAhQ4aUybqGDBmihIQEu2kBAQGaPHlymay/wOTJkxUQEFCm6wQAVC7Ez/Jh165dCggI0Jw5c3xdFaDcIulGpfTdd9+pX79+io+PV3h4uOrXr69rr71WL7zwgl25adOmacmSJb6pJFzKyclRrVq1dPXVV7ssY4xRXFycrrzySrvpy5cvV0BAgGJjY5Wfn+903oSEBAUEBDh99ezZs1TbAgAVCfGzclmzZo1uueUWxcTEKDQ0VHXq1NENN9ygRYsW+bpqgF8J9nUFgNK2bt06XXPNNWrYsKGGDRummJgY7d27V19++aWef/55jRw50io7bdo09evXT3379vVdhX3szJkzCg4uX0NBSEiI+vfvr5dfflm7d+9WfHy8Q5nPP/9cv/76qx566CG76XPnzlVCQoJ27dqlVatWKTEx0ek62rRpo7/+9a8O02NjY0unEQBQwRA/L055jJ+2Jk2apClTpqhJkya65557FB8fryNHjmj58uW69dZbNXfuXP35z3/2dTUBv1B+RwqgmJ588klFR0dr48aNqlatmt17Bw8e9E2lysjZs2cVGhqqwEDPL2IJDw/3Yo2Kb9CgQZo1a5beeecdjRs3zuH9efPmKTAwUAMGDLCmnTp1SkuXLlVqaqpmz56tuXPnuky669evr7/85S9eqz8AVDTEz8oRPyVp4cKFmjJlivr166d58+YpJCTEem/MmDH6+OOPlZOT48MaAv6Fy8tR6fz888+6/PLLHQ4YJKlOnTrW/wMCAnTq1Cm98cYb1qXFBfeG7d69W8OHD1fTpk0VERGhmjVrqn///tq1a5fd8ubMmaOAgAB98cUXGj16tGrXrq2qVavq5ptv1qFDh+zKGmP0xBNPqEGDBqpSpYquueYaff/99w51PHr0qB5++GG1atVKkZGRioqKUq9evfTNN9/YlVuzZo0CAgI0f/58PfbYY6pfv76qVKmizMxMSdKSJUvUsmVLhYeHq2XLllq8eLHT/ip8T9qJEyc0atQoJSQkKCwsTHXq1NG1116rr7/+2m6+9evXq2fPnoqOjlaVKlXUrVs3ffHFFw7LX7t2ra666iqFh4fr0ksv1csvv+y0HoV16dJFCQkJmjdvnsN7OTk5Wrhwoa655hq7M9OLFy/WmTNn1L9/fw0YMECLFi3S2bNnPVqfpwo+87Vr1+qBBx5Q7dq1Va1aNd1zzz3Kzs7WsWPHNHjwYFWvXl3Vq1fXI488ImOM3TLy8/M1Y8YMXX755QoPD1fdunV1zz336Pfff7crt3TpUvXp00exsbEKCwvTpZdeqqlTpyovL8+uXPfu3dWyZUv98MMPuuaaa1SlShXVr19fTz31VKm2HUDlRvysHPFTkiZMmKAaNWro9ddft0u4CyQlJen666+3/j548KDuvPNO1a1bV+Hh4WrdurXeeOMNh/mOHTumIUOGKDo6WtWqVVNycrKOHTvmtA7btm1Tv379VKNGDYWHh6t9+/b64IMPnC7zoYcesvqtQYMGGjx4sA4fPuy2jQEBARoxYoQWLFigFi1aKCIiQp06ddJ3330nSXr55Zd12WWXKTw8XN27d3fYBiXPPgtvbNPwP5zpRqUTHx+v9PR0bd26VS1btnRZ7q233tJdd92lDh066O6775YkXXrppZKkjRs3at26dRowYIAaNGigXbt26aWXXlL37t31ww8/qEqVKnbLGjlypKpXr65JkyZp165dmjFjhkaMGKF3333XKjNx4kQ98cQT6t27t3r37q2vv/5a1113nbKzs+2W9csvv2jJkiXq37+/GjVqpAMHDujll19Wt27d9MMPPzhc/jx16lSFhobq4YcfVlZWlkJDQ/XJJ5/o1ltvVYsWLZSamqojR44oJSVFDRo0KLL/7r33Xi1cuFAjRoxQixYtdOTIEa1du1Y//vijdf/0qlWr1KtXL7Vr106TJk1SYGCgZs+erT/96U/673//qw4dOkg6d2/gddddp9q1a2vy5MnKzc3VpEmTVLdu3SLrERAQoD//+c+aNm2avv/+e11++eXWeytWrNDRo0c1aNAgu3nmzp2ra665RjExMRowYIDGjRun//znP+rfv7/D8nNycpwG9KpVqyoiIqLI+o0cOVIxMTF6/PHH9eWXX+qVV15RtWrVtG7dOjVs2FDTpk3T8uXL9fTTT6tly5YaPHiwNe8999yjOXPmKCUlRQ888IB27typf/3rX9q8ebO++OIL6wBpzpw5ioyM1OjRoxUZGalVq1Zp4sSJyszM1NNPP21Xn99//109e/bULbfcottuu00LFy7U2LFj1apVK/Xq1avI9gAA8bNyxM8dO3Zo27ZtGjp0qC655JIiy585c0bdu3fXTz/9pBEjRqhRo0ZasGCBhgwZomPHjunBBx+UdO7Lj5tuuklr167Vvffeq+bNm2vx4sVKTk52WOb333+vLl26qH79+ho3bpyqVq2q9957T3379tX777+vm2++WZJ08uRJde3aVT/++KOGDh2qK6+8UocPH9YHH3ygX3/9VbVq1XJb9//+97/64IMPdP/990uSUlNTdf311+uRRx7Riy++qOHDh+v333/XU089paFDh2rVqlXWvJ5+Ft7YpuGHDFDJfPLJJyYoKMgEBQWZTp06mUceecR8/PHHJjs726Fs1apVTXJyssP006dPO0xLT083ksybb75pTZs9e7aRZBITE01+fr41/aGHHjJBQUHm2LFjxhhjDh48aEJDQ02fPn3syj366KNGkl0dzp49a/Ly8uzWvXPnThMWFmamTJliTVu9erWRZBo3buxQ3zZt2ph69epZ6y/oF0kmPj7erqwkM2nSJOvv6Ohoc//99zu0v0B+fr5p0qSJSUpKsmvL6dOnTaNGjcy1115rTevbt68JDw83u3fvtqb98MMPJigoyHgy/Hz//fdGkhk/frzd9AEDBpjw8HBz/Phxa9qBAwdMcHCwefXVV61pnTt3NjfddJPDcuPj440kp6/U1FS3dSr4zAu3v1OnTiYgIMDce++91rTc3FzToEED061bN2vaf//7XyPJzJ071265K1ascJjubDu85557TJUqVczZs2etad26dXPYNrOyskxMTIy59dZb3bYHAAoQPytH/Fy6dKmRZJ577jm35QrMmDHDSDJvv/22NS07O9t0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zDM6efKkwzIKfhYjKChISUlJWrJkifbs2WO9/+OPP+rjjz/2qC0FBg0apIMHD+qee+5RTk6O06eWd+3aVbfffrv69etn9xozZowk6Z133rmodXrLbbfdpry8PE2dOtXhvdzcXGt7LPjywHZbyM7O1osvvlgm9QTgf4iflSd+Pv744zpy5Ijuuusu5ebmOrz/ySefaNmyZZKk3r17KyMjw+7p2rm5uXrhhRcUGRmpbt26WeVyc3P10ksv2bX7hRdecGh39+7d9fLLL9t9UVO4ndK5e68LbmMozJtnhj39LKTS36bhnzjTjUpn5MiROn36tG6++WY1a9ZM2dnZWrdund59910lJCQoJSXFKtuuXTt9+umnevbZZxUbG6tGjRqpY8eOuv766/XWW28pOjpaLVq0UHp6uj799FOn94R5onbt2nr44Yetn7Lo3bu3Nm/erI8++sjh2/frr79eU6ZMUUpKijp37qzvvvtOc+fOtfuGvyipqanq06ePrr76ag0dOlRHjx7VCy+8oMsvv9xpcClw4sQJNWjQQP369VPr1q0VGRmpTz/9VBs3brS+4Q0MDNS///1v9erVS5dffrlSUlJUv3597du3T6tXr1ZUVJT+85//SDoX9FesWKGuXbtq+PDhVhC//PLLL+pe41tvvVXDhw/X0qVLFRcXZ3fmd/369dbPnDhTv359XXnllZo7d67Gjh1rTd+3b5/efvtth/KRkZHq27evx3W7WN26ddM999yj1NRUbdmyRdddd51CQkK0Y8cOLViwQM8//7z69eunzp07q3r16kpOTtYDDzyggIAAvfXWW1yeBsBriJ+VJ37efvvt+u677/Tkk09q8+bNGjhwoOLj43XkyBGtWLFCaWlpmjdvnqRzD/56+eWXNWTIEG3atEkJCQlauHChvvjiC82YMcN6INkNN9ygLl26aNy4cdq1a5datGihRYsWOb2veebMmbr66qvVqlUrDRs2TI0bN9aBAweUnp6uX3/91frt9DFjxmjhwoXq37+/hg4dqnbt2uno0aP64IMPNGvWLLVu3drjz+5iXMxnUdrbNPxUGT4pHSgTH330kRk6dKhp1qyZiYyMNKGhoeayyy4zI0eONAcOHLAru23bNvPHP/7RRERE2P30yO+//25SUlJMrVq1TGRkpElKSjLbtm0z8fHxdj9PUvDzEBs3brRbbsHP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kya65557FB8fryNHjmj58uW69dZbNXfuXP35z3/2dTW9Zv/+/Xr88ceVkJCgNm3a+Lo6qITK794PlIEnn3xS0dHR2rhxo6pVq2b33sGDB31TqTJy9uxZhYaGKjDQ8wtewsPDvVij4hs0aJBmzZqld955R+PGjXN4f968eQoMDNSAAQOsaadOndLSpUuVmpqq2bNna+7cuS6T7vr16+svf/mL1+oPABUN8bNyxE9JWrhwoaZMmaJ+/fpp3rx5CgkJsd4bM2aMPv74Y+Xk5PiwhkDFx+Xl8Gs///yzLr/8cocDBkmqU6eO9f+AgACdOnVKb7zxhnVpccG9Ybt379bw4cPVtGlTRUREqGbNmurfv7927dplt7w5c+YoICBAX3zxhUaPHq3atWuratWquvnmm3Xo0CG7ssYYPfHEE2rQoIGqVKmia665Rt9//71DHY8ePaqHH35YrVq1UmRkpKKiotSrVy998803duXWrFmjgIAAzZ8/X4899pjq16+vKlWqKDMzU5K0ZMkStWzZUuHh4WrZsqUWL17stL8K35N24sQJjRo1SgkJCQoLC1OdOnV07bXX6uuvv7abb/369erZs6eio6NVpUoVdevWTV988YXD8teuXaurrrpK4eHhuvTSS/Xyyy87rUdhXbp0UUJCgubNm+fwXk5OjhYuXKhrrrnG7sz04sWLdebMGfXv318DBgzQokWLdPbsWY/W56mcnBw9/vjjatKkicLDw1WzZk1dffXVWrlypaRz9/3NnDlTkuwuWy9w7NgxDRkyRNHR0apWrZqSk5N17NixUq0jABQH8bNyxE9JmjBhgmrUqKHXX3/dLuEukJSUpOuvv976++DBg7rzzjtVt25dhYeHq3Xr1nrjjTcc5ruYGLZt2zb169dPNWrUUHh4uNq3b68PPvjA6TIfeughq98aNGigwYMH6/Dhw27buHLlSl199dWqVq2aIiMj1bRpUz366KOSzn3GV111lSQpJSXF2k5t7zt/5ZVXdOmllyoiIkIdOnTQf//7X7frAwrjTDf8Wnx8vNLT07V161a1bNnSZbm33npLd911lzp06KC7775bknTppZdKkjZu3Kh169ZpwIABatCggXbt2qWXXnpJ3bt31w8//KAqVarYLWvkyJGqXr26Jk2apF27dmnGjBkaMWKE3n33XavMxIkT9cQTT6h3797q3bu3vv76a1133XXKzs62W9Yvv/yiJUuWqH///mrUqJEOHDigl19+Wd26ddMPP/zgcPnz1KlTFRoaqocfflhZWVkKDQ3VJ598oltvvVUtWrRQamqqjhw5opSUFDVo0KDI/rv33nu1cOFCjRgxQi1atNCRI0e0du1a/fjjj9b906tWrVKvXr3Url07TZo0SYGBgZo9e7b+9Kc/6b///a86dOgg6dy9gdddd51q166tyZMnKzc3V5MmTVLdunWLrEdAQID+/Oc/a9q0afr+++91+eWXW++tWLFCR48e1aBBg+zmmTt3rq655hrFxMRowIABGjdunP7zn/+of//+DsvPyclxGtCrVq2qiIgIl/WaPHmyUlNTrW0nMzNTX331lb7++mtde+21uueee7R//36tXLlSb731lt28xhjddNNNWrt2re699141b95cixcvVnJycpH9AQDeRvysHPFzx44d2rZtm4YOHapLLrmkyPJnzpxR9+7d9dNPP2nEiBFq1KiRFixYoCFDhujYsWN68MEHJV1cDPv+++/VpUsX1a9fX+PGjVPVqlX13nvvqW/fvnr//fd18803S5JOnjyprl276scff9TQoUN15ZVX6vDhw/rggw/066+/qlatWk7r/P333+v666/XFVdcoSlTpigsLEw//fST9eVF8+bNNWXKFE2cOFF33323unbtKknq3LmzJOm1117TPffco86dO2vUqFH65ZdfdOONN6pGjRqKi4srss8ASZIB/Ngnn3xigoKCTFBQkOnUqZN55JFHzMcff2yys7MdylatWtUkJyc7TD99+rTDtPT0dCPJvPnmm9a02bNnG0kmMTHR5OfnW9MfeughExQUZI4dO2aMMebgwYMmNDTU9OnTx67co48+aiTZ1eHs2bMmLy/Pbt07d+40YWFhZsqUKda01atXG0mmcePGDvVt06aNqVevnrX+gn6RZOLj4+3KSjKTJk2y/o6Ojjb333+/Q/sL5OfnmyZNmpikpCS7tpw+fdo0atTIXHvttda0vn37mvDwcLN7925r2g8//GCCgoKMJ0PV999/bySZ8ePH200fMGCACQ8PN8ePH7emHThwwAQHB5tXX33Vmta5c2dz0003OSw3Pj7eSHL6Sk1NdVun1q1bmz59+rgtc//99ztt35IlS4wk89RTT1nTcnNzTdeuXY0kM3v2bLfLBQBvIn5Wjvi5dOlSI8k899xzbssVmDFjhpFk3n77bWtadna26dSpk4mMjDSZmZnGmIuLYT169DCtWrUyZ8+etWt/586dTZMmTaxpEydONJLMokWLHOpl20eFPffcc0aSOXTokMsyGzdudBpbs7OzTZ06dUybNm1MVlaWNf2VV14xkky3bt1cLhOwxeXl8GvXXnut0tPTdeONN+qbb77RU089paSkJNWvX9/pZU3O2J7pzMnJ0ZEjR3TZZZepWrVqDpeJSdLdd99tdwlx165dlZeXp927d0uSPv30U2VnZ2vkyJF25UaNGuWwrLCwMOuesry8PB05csS6bMrZupOTk+3q+9tvv2nLli1KTk5WdHS0Xb+0aNGiyLZXq1ZN69ev1/79+52+v2XLFu3YsUN//vOfdeTIER0+fFiHDx/WqVOn1KNHD33++efKz89XXl6ePv74Y/Xt21cNGza05m/evLmSkpKKrIcktWjRQm3bttX8+fOtaadOndIHH3yg66+/XlFRUdb0+fPnKzAwULfeeqs1beDAgfroo4/0+++/Oyy7Y8eOWrlypcNr4MCBRfbP999/rx07dnjUBlvLly9XcHCw7rvvPmtaUFCQ3cOJAMBXiJ+VI34WXCbvyVlu6VxsiomJsYt/ISEheuCBB3Ty5El99tlnVjlPYtjRo0e1atUq3XbbbTpx4oTVziNHjigpKUk7duzQvn37JEnvv/++WrdubZ35tuXup9EKboFYunSpy18qceWrr77SwYMHde+99yo0NNSaXnDZPOApkm74vauuukqLFi3S77//rg0bNmj8+PE6ceKE+vXrpx9++KHI+c+cOaOJEycqLi5OYWFhqlWrlmrXrq1jx47p+PHjDuVtg6IkVa9eXZKsZK/g4KFJkyZ25WrXrm2VLZCfn6/nnntOTZo0sVv3t99+63TdjRo1svvb1bokqWnTpm7bLUlPPfWUtm7dqri4OHXo0EGTJ0/WL7/8Yr1fkGwmJyerdu3adq9///vfysrK0vHjx3Xo0CGdOXOm2PUoMGjQIO3cuVPr1q2TdO5eu9OnTztcWv7222+rQ4cOOnLkiH766Sf99NNPatu2rbKzs7VgwQKH5daqVUuJiYkOL2dPSrc1ZcoUHTt2TH/4wx/UqlUrjRkzRt9++61Hbdm9e7fq1aunyMhIu+kX0x8A4E3Ez4ofPwu+kD5x4kSRZaVz7W7SpInDQ+SaN29uvV/wrycx7KeffpIxRhMmTHBo56RJkyRdeDDfzz//7PZWBlduv/12denSRXfddZfq1q2rAQMG6L333vMoAXf1OYeEhKhx48YXXRf4L+7pBs4LDQ3VVVddpauuukp/+MMflJKSogULFliDvisjR47U7NmzNWrUKHXq1EnR0dEKCAjQgAEDnA7oQUFBTpdjjLnoOk+bNk0TJkzQ0KFDNXXqVNWoUUOBgYEaNWqU03W7u/+4OG677TZ17dpVixcv1ieffKKnn35af//737Vo0SL16tXLqsPTTz/t8ic4IiMjlZWVVSr1GThwoB555BHNmzdPnTt31rx581S9enX17t3bKrNjxw5t3LhRkvODpblz51r3HZbUH//4R/38889aunSpPvnkE/373//Wc889p1mzZumuu+4qlXUAgK8RPy9eeYmfzZo1k3TuvnBfKGjnww8/7PLM/GWXXVaidUREROjzzz/X6tWr9eGHH2rFihV699139ac//UmffPKJy+0KKE0k3YAT7du3l3Tu8rECri5dWrhwoZKTk/WPf/zDmnb27NliP2W64Ozpjh077L5FPXTokMOlzwVP5X7ttdfsph87dszlA0Vcrauw7du3e1TfevXqafjw4Ro+fLgOHjyoK6+8Uk8++aR69eplPSwnKirK5c9xSefOQkRERJSoHtK5382+5pprtGDBAk2YMEErV67UkCFD7C4Jmzt3rkJCQvTWW285BNq1a9fqn//8p/bs2eNwRqW4atSooZSUFKWkpOjkyZP64x//qMmTJ1tJt6vtKj4+XmlpaTp58qTdmYKL6Q8AKGvEz4oVP//whz+oadOmWrp0qZ5//nmHM9OFxcfH69tvv1V+fr7d2e5t27ZZ7xf860kMK/icQkJC3LZTOvcAvq1btxbZJmcCAwPVo0cP9ejRQ88++6ymTZumv/3tb1q9erUSExPdxmLp3Of8pz/9yZqek5OjnTt3qnXr1sWqD/wPl5fDr61evdrpN+TLly+XZH8ZVNWqVZ0eCAQFBTks44UXXlBeXl6x6pSYmKiQkBC98MILdsudMWOGR+tesGCBdf9TUerVq6c2bdrojTfesLucbuXKlUVeGpiXl+dwCV6dOnUUGxtrffPerl07XXrppXrmmWd08uRJh2UU/NRLUFCQkpKStGTJEu3Zs8d6/8cff9THH3/sUVsKDBo0SAcPHtQ999yjnJwcp08t79q1q26//Xb169fP7jVmzBhJ0jvvvHNR63TlyJEjdn9HRkbqsssuszszUbVqVUly2LZ69+6t3NxcvfTSS9a0vLw8vfDCC6VSNwAoCeJn5Ymfjz/+uI4cOaK77rpLubm5Du9/8sknWrZsmaRzsSkjI8PuifG5ubl64YUXFBkZqW7dulnlPIlhderUUffu3fXyyy/bfVFTuJ2SdOutt+qbb75x+rNs7q52OHr0qMO0gqsHCvrbVSxu3769ateurVmzZtk9AX/OnDn8hCcuCme64ddGjhyp06dP6+abb1azZs2UnZ2tdevW6d1331VCQoJSUlKssu3atdOnn36qZ599VrGxsWrUqJE6duyo66+/Xm+99Zaio6PVokULpaen69NPP1XNmjWLVafatWvr4YcfVmpqqq6//nr17t1bmzdv1kcffeTw7fv111+vKVOmKCUlRZ07d9Z3332nuXPnXtR9RqmpqerTp4+uvvpqDR06VEePHtULL7ygyy+/3GmgL3DixAk1aNBA/fr1U+vWrRUZGalPP/1UGzdutM5aBAYG6t///rd69eqlyy+/XCkpKapfv7727dun1atXKyoqSv/5z38knQv6K1asUNeuXTV8+HAriF9++eUe3wctnQvKw4cP19KlSxUXF6c//vGP1nvr16+3fubEmfr16+vKK6/U3LlzNXbsWGv6vn379PbbbzuUj4yMVN++fV3WpUWLFurevbvatWunGjVq6KuvvrJ+IqZAu3btJEkPPPCAkpKSFBQUpAEDBuiGG25Qly5dNG7cOO3atUstWrTQokWLnN5rCABljfhZeeLn7bffru+++05PPvmkNm/erIEDByo+Pl5HjhzRihUrlJaWpnnz5kk69zC7l19+WUOGDNGmTZuUkJCghQsX6osvvtCMGTOsB7JdTAybOXOmrr76arVq1UrDhg1T48aNdeDAAaWnp+vXX3+1fjt9zJgxWrhwofr376+hQ4eqXbt2Onr0qD744APNmjXL5VnnKVOm6PPPP1efPn0UHx+vgwcP6sUXX1SDBg109dVXSzp3Fr1atWqaNWuWLrnkElWtWlUdO3ZUo0aN9MQTT+iee+7Rn/70J91+++3auXOnZs+ezT3duDi+eWg6UD589NFHZujQoaZZs2YmMjLShIaGmssuu8yMHDnSHDhwwK7stm3bzB//+EcTERFh99Mjv//+u0lJSTG1atUykZGRJikpyWzbts3Ex8fb/TxJwU+ebNy40W65BT9Hsnr1amtaXl6eefzxx029evVMRESE6d69u9m6davDMs+ePWv++te/WuW6dOli0tPTTbdu3ex+xqJgHQsWLHDaD++//75p3ry5CQsLMy1atDCLFi0yycnJbn/yJCsry4wZM8a0bt3aXHLJJaZq1aqmdevW5sUXX3RY/ubNm80tt9xiatasacLCwkx8fLy57bbbTFpaml25zz77zLRr186Ehoaaxo0bm1mzZplJkyZ59JNhtvr3728kmUceecRu+siRI40k8/PPP7ucd/LkyUaS+eabb4wx7n8yrHD/FPbEE0+YDh06mGrVqpmIiAjTrFkz8+STT9r9pE5ubq4ZOXKkqV27tgkICLBr65EjR8wdd9xhoqKiTHR0tLnjjjvM5s2b+ckwAD5H/DynMsXPtLQ0c9NNN5k6deqY4OBgU7t2bXPDDTeYpUuX2pU7cOCA9bmFhoaaVq1aOY1JFxPDfv75ZzN48GATExNjQkJCTP369c31119vFi5c6LDMESNGmPr165vQ0FDToEEDk5ycbA4fPlxku2JjY01oaKiJjY01AwcONP/73//syi1dutS0aNHCBAcHO9TxxRdfNI0aNTJhYWGmffv25vPPP3fYVgB3AowpxtMnAAAAAABAkbinGwAAAAAALyHpBgAAAADAS0i6AQAAAADwEpJuAAAAAAC8hKQbAAAAAAAvIekGAAAAAMBLgn1dgdKWn5+v/fv365JLLlFAQICvqwMAgE8ZY3TixAnFxsYqMLDk37UTZwEAOMfTGFvpku79+/crLi7O19UAAKBc2bt3rxo0aFDi5RBnAQCwV1SMrXRJ9yWXXCLpXMOjoqJ8XBsAAHwrMzNTcXFxVnwsKeIsAADneBpjK13SXXCpW1RUFAcDAACcV1qXghNnAQCwV1SM5UFqAAAAAAB4CUk3AAAAAABeQtINAAAAAICXkHQDAAAAAOAlxU66P//8c91www2KjY1VQECAlixZ4rb8okWLdO2116p27dqKiopSp06d9PHHH9uVmTx5sgICAuxezZo1K24VAQAAAADwqWIn3adOnVLr1q01c+ZMj8p//vnnuvbaa7V8+XJt2rRJ11xzjW644QZt3rzZrtzll1+u3377zXqt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cRYAgJIp9oPUatWqpaCgIB04cMBu+oEDBxQTE+N23lOnTmn+/PmaMmVKketp3LixatWqpZ9++kk9evRweD8sLIwHraFcKXjw1K7pfYooCQDlH3EWAICSKfaZ7tDQULVr105paWnWtPz8fKWlpalTp05u512wYIGysrL0l7/8pcj1/Prrrzpy5Ijq1atX3KoCAAAAAOATJbq8fPTo0Xr11Vf1xhtv6Mcff9R9992nU6dOKSUlRZI0ePBgjR8/3mG+1157TX379lXNmjXtpp88eVJjxozRl19+qV27diktLU033XSTLrvsMiUlJZWkqgAAAAAAlLkS/U737bffrkOHDmnixInKyMhQmzZttGLFCuvhanv27FFgoH1ev337dq1du1affPKJw/KCgoL07bff6o033tCxY8cUGxur6667TlOnTuXSNgAAAABAhVOipFuSRowYoREjRjh9z9nDz5o2bSpjjNPyERER+vjjj0taJQAAAAAAygWfPb0cAAAAAIDKjqQbAAAAAAAvIekGAAAAAMBLSLoBAAAAAPASkm4AAAAAALyEpBsAAAAAAC8h6QYAAAAAwEtIugEAAAAA8BKSbgAAAAAAvISkGwAAAAAALyHpBgAAAADAS0i6AQAAAADwEpJuAAAAAAC8hKQbAAAAAAAvIekGAAAAAMBLSLoBAAAAAPASkm4AAAAAALyEpBsAAAAAAC8h6QYAAAAAwEtIugEAAAAA8BKSbgAAAAAAvISkGwAAAAAALyHpBgAAAADAS0qcdM+cOVMJCQkKDw9Xx44dtWHDBpdl58yZo4CAALtXeHi4XRljjCZOnKh69eopIiJCiYmJ2rFjR0mrCQAAAABAmStR0v3uu+9q9OjRmjRpkr7++mu1bt1aSUlJOnjwoMt5oqKi9Ntvv1mv3bt3273/1FNP6Z///KdmzZql9evXq2rVqkpKStLZs2dLUlUAAAAAAMpciZLuZ599VsOGDVNKSopatGihWbNmqUqVKnr99dddzhMQEKCYmBjrVbduXes9Y4xmzJihxx57TDfddJOuuOIKvfnmm9q/f7+WLFlSkqoCAAAAAFDmip10Z2dna9OmTUpMTLywsMBAJSYmKj093eV8J0+eVHx8vOLi4nTTTTfp+++/t97buXOnMjIy7JYZHR2tjh07ulxmVlaWMjMz7V4AAKB0EGcBACiZYifdhw8f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",
      "text/plain": [
       "<Figure size 1000x500 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create one bar plot that contains both vae and the codec results after standardisation\n",
    "# share y axis for the means but use different y axis for the std\n",
    "fig, axs = plt.subplots(2, 2, figsize=(10, 5), sharey='row')\n",
    "axs[0, 0].bar(range(VAE_DIM), np.mean(cont_vae_data_standard, axis=(0, 1)))\n",
    "axs[0, 0].set_title(\"Standardised VAE mean\")\n",
    "axs[0, 1].bar(range(128), np.mean(cont_codec_data_standard, axis=(0, 1)))\n",
    "axs[0, 1].set_title(\"Standardised Codec mean\")\n",
    "axs[1, 0].bar(range(VAE_DIM),  np.std(cont_vae_data_standard, axis=(0, 1)))\n",
    "axs[1, 0].set_title(\"Standardised VAE std\")\n",
    "axs[1, 1].bar(range(128), np.std(cont_codec_data_standard, axis=(0, 1)))\n",
    "axs[1, 1].set_title(\"Standardised Codec std\")\n",
    "\n",
    "\n",
    "# add a line to the std plots to show 1 std\n",
    "for ax in axs[1]:\n",
    "    ax.axhline(1, color='r', linestyle='--')\n",
    "\n",
    "# add a line to the mean plots to show 0 mean\n",
    "for ax in axs[0]:\n",
    "    ax.axhline(0, color='r', linestyle='--')\n",
    "    \n",
    "# add space between the plots\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(5879, 6016, 12) (5879, 6016, 1)\n"
     ]
    }
   ],
   "source": [
    "# read some data from memmap\n",
    "SEMANTIC_N_CODEBOOKS = 1\n",
    "CODEC_N_CODEBOOKS = 12\n",
    "\n",
    "#VAE_N_MEMMAP_TOKENS = 36000\n",
    "#SEMANTIC_N_MEMMAP_TOKENS = 9000\n",
    "\n",
    "N_MEMMAP_TOKENS = 6016\n",
    "\n",
    "\n",
    "base_dir = \"/app/suno/data/chirp_v4/multi\"\n",
    "#base_dir = \"/mnt/localdisk/cjs_shards/\"\n",
    "metas = read_jsonl(f\"{base_dir}/metas_val.jsonl\", progress=False)\n",
    "memmap_filepath = f\"{base_dir}/data_val.bin\"\n",
    "# load memmaps\n",
    "memmap = np.memmap(memmap_filepath, dtype=np.uint16, mode=\"r\")\n",
    "\n",
    "# reshape memmaps\n",
    "data = memmap.reshape(-1, N_MEMMAP_TOKENS, CODEC_N_CODEBOOKS + SEMANTIC_N_CODEBOOKS)\n",
    "\n",
    "codec_data = data[:, :, :CODEC_N_CODEBOOKS]\n",
    "semantic_data = data[:, :, CODEC_N_CODEBOOKS:]\n",
    "\n",
    "print(codec_data.shape, semantic_data.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "suno_env",
   "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.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
