{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2BMxlo-Eo95t",
        "outputId": "a72c5a7b-7bb6-4000-f918-aceb449f0157"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "--2024-08-26 07:52:10--  https://mona.fiehnlab.ucdavis.edu/rest/downloads/retrieve/19a23fd5-4e06-4122-ae9d-169198ee9794\n",
            "Resolving mona.fiehnlab.ucdavis.edu (mona.fiehnlab.ucdavis.edu)... 128.120.143.183\n",
            "Connecting to mona.fiehnlab.ucdavis.edu (mona.fiehnlab.ucdavis.edu)|128.120.143.183|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 492047089 (469M) [application/octet-stream]\n",
            "Saving to: ‘19a23fd5-4e06-4122-ae9d-169198ee9794’\n",
            "\n",
            "19a23fd5-4e06-4122- 100%[===================>] 469.25M  12.5MB/s    in 40s     \n",
            "\n",
            "2024-08-26 07:52:50 (11.9 MB/s) - ‘19a23fd5-4e06-4122-ae9d-169198ee9794’ saved [492047089/492047089]\n",
            "\n"
          ]
        }
      ],
      "source": [
        "!wget https://mona.fiehnlab.ucdavis.edu/rest/downloads/retrieve/19a23fd5-4e06-4122-ae9d-169198ee9794"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!mv 19a23fd5-4e06-4122-ae9d-169198ee9794 mona_exp_spec_all.zip"
      ],
      "metadata": {
        "id": "dJCZAp2UpcbV"
      },
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "!unzip mona_exp_spec_all.zip"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "k4fD9Z_Ep3BS",
        "outputId": "93d3fb2c-392c-4b74-f1ad-9a3fc4c0642b"
      },
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Archive:  mona_exp_spec_all.zip\n",
            "  inflating: MoNA-export-Experimental_Spectra.json  \n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "!ls -lh /content/MoNA-export-Experimental_Spectra.json"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "JsUlxYcRp5Q9",
        "outputId": "d709fef6-871b-4c0c-e978-83c686b928c7"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "-rw-r--r-- 1 root root 3.2G Aug 25 19:13 /content/MoNA-export-Experimental_Spectra.json\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# prompt: load /content/MoNA-export-Experimental_Spectra.json to Python\n",
        "\n",
        "import json\n",
        "\n",
        "with open('/content/MoNA-export-Experimental_Spectra.json', 'r') as f:\n",
        "  data = json.load(f)\n"
      ],
      "metadata": {
        "id": "5WY4JF8OqfK2"
      },
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "len(data)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "irdLsxYtqmkC",
        "outputId": "ede2437d-0642-4feb-dec3-5be1628990e3"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "235451"
            ]
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "massbankspecs = []\n",
        "for spec in data:\n",
        "    if 'library' in spec.keys():\n",
        "        if 'library' in spec['library'].keys():\n",
        "            if spec['library']['library'] == 'MassBank':\n",
        "                massbankspecs.append(spec)"
      ],
      "metadata": {
        "id": "PlmoVVWWsAy3"
      },
      "execution_count": 19,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "len(massbankspecs)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "HC4yrnRA9aw7",
        "outputId": "5f951f0d-76aa-483e-b455-7ee7e620a144"
      },
      "execution_count": 57,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "72439"
            ]
          },
          "metadata": {},
          "execution_count": 57
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "massbankspecs[3]['compound'][0]['inchiKey']"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "s6uRBeb9sIa5",
        "outputId": "f9a80a49-022c-4dea-bfa1-a7bce291208a"
      },
      "execution_count": 33,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'JFPVXVDWJQMJEE-IZRZKJBUSA-N'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 33
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "massbankspecs[3]['library']\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "RF3aggC8sbsO",
        "outputId": "e08db75e-1293-4dd3-ff63-8aa09e2c7520"
      },
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{'description': 'MassBank High Quality Mass Spectral Database',\n",
              " 'link': 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002991',\n",
              " 'library': 'MassBank'}"
            ]
          },
          "metadata": {},
          "execution_count": 34
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "massbankspecs[3]['id']"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "id": "FQSd30naxQfM",
        "outputId": "609efc1d-6f9c-4921-ded0-f3be53b4f3cf"
      },
      "execution_count": 43,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'WA002991'"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            }
          },
          "metadata": {},
          "execution_count": 43
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "lines = []\n",
        "for mbspec in massbankspecs:\n",
        "    inchikey = ''\n",
        "    kingdom = ''\n",
        "    superclass = ''\n",
        "    class_ = ''\n",
        "    subclass = ''\n",
        "    if len(mbspec['compound'][0]['classification']) > 0:\n",
        "        if 'inchiKey' in mbspec['compound'][0].keys():\n",
        "            inchikey = mbspec['compound'][0]['inchiKey']\n",
        "        for i in mbspec['compound'][0]['classification']:\n",
        "            if i['name'] == 'kingdom':\n",
        "                kingdom = i['value']\n",
        "            if i['name'] == 'superclass':\n",
        "                superclass = i['value']\n",
        "            if i['name'] == 'class':\n",
        "                class_ = i['value']\n",
        "            if i['name'] == 'subclass':\n",
        "                subclass = i['value']\n",
        "    line = \"\\t\".join([mbspec['library']['link'], inchikey, kingdom, superclass, class_, subclass])\n",
        "    lines.append(line)\n"
      ],
      "metadata": {
        "id": "xdxYgMyetOPP"
      },
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "with open('massbank_inchikey_classyfire.tsv', 'w') as f:\n",
        "    for line in lines:\n",
        "        f.write(line + '\\n')"
      ],
      "metadata": {
        "id": "TCc-cc_bvxru"
      },
      "execution_count": 55,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "lines[0:20]"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "8YmtlbDn4zrm",
        "outputId": "61fea71a-194c-4414-8754-009f34eebb00"
      },
      "execution_count": 60,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002994\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002993\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002992\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002991\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002990\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002989\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002988\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002987\\tJFPVXVDWJQMJEE-IZRZKJBUSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tLactams\\tBeta lactams',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002986\\tQWCRAEMEVRGPNT-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tDiazinanes\\tPiperazines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002985\\tQWCRAEMEVRGPNT-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tDiazinanes\\tPiperazines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002984\\tQWCRAEMEVRGPNT-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tDiazinanes\\tPiperazines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002983\\tQWCRAEMEVRGPNT-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tDiazinanes\\tPiperazines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002982\\tVLPIATFUUWWMKC-UHFFFAOYSA-N\\tOrganic compounds\\tBenzenoids\\tPhenol ethers\\t',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002981\\tVLPIATFUUWWMKC-UHFFFAOYSA-N\\tOrganic compounds\\tBenzenoids\\tPhenol ethers\\t',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002980\\tVLPIATFUUWWMKC-UHFFFAOYSA-N\\tOrganic compounds\\tBenzenoids\\tPhenol ethers\\t',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002979\\tVLPIATFUUWWMKC-UHFFFAOYSA-N\\tOrganic compounds\\tBenzenoids\\tPhenol ethers\\t',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002978\\tVLPIATFUUWWMKC-UHFFFAOYSA-N\\tOrganic compounds\\tBenzenoids\\tPhenol ethers\\t',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002977\\tXLFWDASMENKTKL-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tOxazinanes\\tMorpholines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002976\\tXLFWDASMENKTKL-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tOxazinanes\\tMorpholines',\n",
              " 'https://massbank.eu/MassBank/RecordDisplay.jsp?id=WA002975\\tXLFWDASMENKTKL-UHFFFAOYSA-N\\tOrganic compounds\\tOrganoheterocyclic compounds\\tOxazinanes\\tMorpholines']"
            ]
          },
          "metadata": {},
          "execution_count": 60
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "eqlYggCV9r-1"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}