{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import json\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "22787\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 22787/22787 [00:38<00:00, 587.33it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "               bpm  confidence\n",
      "id                            \n",
      "UldJ9AnalEY  124.0    0.815294\n",
      "sIul-FKmPCw   84.0    0.076082\n",
      "35wHGGrGQVU   80.0    0.754036\n",
      "DEJm1igan2Y  139.0    0.417541\n",
      "ZrGWefub8RU  113.0    0.551921\n",
      "                bpm    confidence\n",
      "count  2.916656e+06  2.916656e+06\n",
      "mean   1.094537e+02  5.736889e-01\n",
      "std    2.354758e+01  2.800858e-01\n",
      "min    3.700000e+01  1.845821e-02\n",
      "25%    8.900000e+01  3.548146e-01\n",
      "50%    1.090000e+02  5.993888e-01\n",
      "75%    1.280000e+02  8.211918e-01\n",
      "max    2.120000e+02  9.999993e-01\n"
     ]
    }
   ],
   "source": [
    "# aws s3 sync s3://suno-data/christian/outputs/bpm/genius/ /home/christian/bpm/genius    \n",
    "# aws s3 sync s3://suno-data/christian/outputs/bpm/discogs_subset/ /home/christian/bpm/discogs_subset    \n",
    "\n",
    "\n",
    "dataset_name = \"discogs_subset\"\n",
    "\n",
    "base_dir = f\"/home/christian/bpm/{dataset_name}\"\n",
    "os.makedirs(base_dir, exist_ok=True)\n",
    "# find all json files in the base_dir\n",
    "json_files = [f for f in os.listdir(base_dir) if f.endswith('.json')]\n",
    "print(len(json_files))\n",
    "json_filepaths = [os.path.join(base_dir, f) for f in json_files]\n",
    "\n",
    "# read the json files and store into one dict\n",
    "data = {}\n",
    "for f in tqdm(json_filepaths):\n",
    "    data.update(json.load(open(f)))\n",
    "\n",
    "# create a dataframe with just the track id and mean score\n",
    "rows = []\n",
    "for track_id, track_data in data.items():\n",
    "    row = {\n",
    "        'id': track_id,\n",
    "        'bpm': track_data['bpm'],\n",
    "        \"confidence\": track_data['confidence']\n",
    "    }\n",
    "    rows.append(row)\n",
    "\n",
    "df = pd.DataFrame(rows)\n",
    "# Set id as index\n",
    "df.set_index('id', inplace=True)\n",
    "\n",
    "print(df.head())\n",
    "print(df.describe())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save dataframe to csv\n",
    "base_dir = f\"/home/christian/code/christian/metadata/bpm/\"\n",
    "df.to_csv(os.path.join(base_dir, '{}_bpm_data.csv'.format(dataset_name)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the histogram of the bpm\n",
    "# Create a figure with two subplots stacked vertically\n",
    "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(5, 4))\n",
    "\n",
    "# Plot BPM histogram on the top subplot\n",
    "ax1.hist(df['bpm'], bins=100, color='blue', alpha=0.7)\n",
    "ax1.set_title('BPM Distribution')\n",
    "ax1.set_xlabel('BPM')\n",
    "ax1.set_ylabel('Frequency')\n",
    "#ax1.set_yscale('log')\n",
    "ax1.set_ylim(top=ax1.get_ylim()[1] * 1.1)  # Add 10% space at the top\n",
    "ax1.set_ylim(bottom=0)  # Set bottom to 0\n",
    "\n",
    "# Plot confidence histogram on the bottom subplot\n",
    "ax2.hist(df['confidence'], bins=100, color='green', alpha=0.7)\n",
    "ax2.set_title('Confidence Distribution')\n",
    "ax2.set_xlabel('Confidence')\n",
    "ax2.set_ylabel('Frequency')\n",
    "ax2.set_ylim(top=ax2.get_ylim()[1] * 1.1)  # Add 10% space at the top\n",
    "ax2.set_ylim(bottom=0)  # Set bottom to 0\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                bpm    confidence\n",
      "count  1.135789e+06  1.135789e+06\n",
      "mean   1.085639e+02  8.587402e-01\n",
      "std    2.161705e+01  8.553642e-02\n",
      "min    5.500000e+01  7.000019e-01\n",
      "25%    9.000000e+01  7.860856e-01\n",
      "50%    1.080000e+02  8.648755e-01\n",
      "75%    1.260000e+02  9.339777e-01\n",
      "max    1.790000e+02  9.999993e-01\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Filter data to only include BPM values with confidence above 0.7\n",
    "high_confidence_df = df[df['confidence'] > 0.7]\n",
    "print(high_confidence_df.describe())\n",
    "# plot the histogram of the bpm\n",
    "# Create a figure with two subplots stacked vertically\n",
    "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(5, 4))\n",
    "\n",
    "# Plot BPM histogram on the top subplot (only high confidence values)\n",
    "ax1.hist(high_confidence_df['bpm'], bins=100, color='blue', alpha=0.7)\n",
    "ax1.set_title('BPM Distribution (Confidence > 0.7)')\n",
    "ax1.set_xlabel('BPM')\n",
    "ax1.set_ylabel('Frequency')\n",
    "ax1.set_ylim(top=ax1.get_ylim()[1] * 1.1)  # Add 10% space at the top\n",
    "ax1.set_ylim(bottom=0)  # Set bottom to 0\n",
    "\n",
    "# Plot confidence histogram on the bottom subplot\n",
    "ax2.hist(df['confidence'], bins=100, color='green', alpha=0.7)\n",
    "ax2.axvline(x=0.7, color='red', linestyle='--', label='Threshold (0.7)')\n",
    "ax2.legend()\n",
    "ax2.set_title('Confidence Distribution')\n",
    "ax2.set_xlabel('Confidence')\n",
    "ax2.set_ylabel('Frequency')\n",
    "ax2.set_ylim(top=ax2.get_ylim()[1] * 1.1)  # Add 10% space at the top\n",
    "ax2.set_ylim(bottom=0)  # Set bottom to 0\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "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
}
