{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pose clustering of docking results\n", "\n", "In this Cheminformatics workflow I will show you how to perform a pose clustering from docking experiments (no matter what software they come from). For this workflow I will use RDKIT and the clustering will be based on The Cambridge Crystallographic Data Centre (CCDC) pose clustering analysis described in: ([GOLD_user_guide](https://www.ccdc.cam.ac.uk/support-and-resources/ccdcresources/GOLD_User_Guide.pdf))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Remarks:\n", "\n", "Pose clustering is based on in place RMS calculation of the molecule poses. However, RDKIT cannot perform in place RMS calculations (yet). Because of that I will need to use another library (for instance Pymol) or calculate the RMS by applying the RMS formula ([wikipedia_RMSD](https://en.wikipedia.org/wiki/Root-mean-square_deviation_of_atomic_positions)). \n", "\n", "For this workflow, I will use both and then I will discuss which is better for this approach (in my opinion)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing the libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "# The powerful libraries from rdkit I will use:\n", "from rdkit import Chem\n", "from rdkit.Chem import rdFMCS,AllChem, Draw\n", "from rdkit.Chem.Draw import DrawingOptions\n", "\n", "# Other powerful python libraries:\n", "import numpy as np\n", "import math\n", "import pandas as pd\n", "from matplotlib import pyplot as plt\n", "from matplotlib import gridspec\n", "\n", "# We will use pymol for comparison\n", "from pymol import cmd\n", "\n", "# All we need for clustering\n", "from scipy.cluster.hierarchy import dendrogram, linkage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## In place RMS calculation using RDKIT Maximum Common Substructure \n", "\n", "To get the atom mapping of our docking poses we will use the Maximum Common Substructure ([MCS](http://rdkit.org/docs/source/rdkit.Chem.MCS.html)) search module from RDKIT. For comparison with other RMS in place method, I will use pymol Rms_cur method ([Rms_cur](https://pymolwiki.org/index.php/Rms_cur))." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loading the poses\n", "\n", "After docking I have a .sdf file for each molecule with 10 poses. I want to compare all my poses" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "poses=Chem.SDMolSupplier('ZINC12447282.sdf')\n", "renamed_poses=[]\n", "for index,p in enumerate(poses):\n", " p.SetProp('_Name',str(index+1))\n", " renamed_poses.append(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let´s take a look to the 3D structures of my poses" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# If all molecules are correct (sanitized), Draw.MolsToGridImage must work \n", "img=Draw.MolsToGridImage(renamed_poses,molsPerRow=(5),legends=[i.GetProp('_Name') for i in renamed_poses],useSVG=False)\n", "img" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## RMS in place calculation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For an accurate RMS calculation we need to establish the atom pairs that will be used for RMS calculation. For such purpose I will use the MCS.\n", "\n", "The idea of using the MCS is to generate the atom pairs for comparison. This is important, because atom mapping for poses of same molecule can be different in some cases. For instance, if they come from different docking softwares or due to format conversion (e.g. converting output mols from docking using openbabel).\n", "\n", "Because of above, performing MCS will find the atom map matching pairs for the poses before of doing the RMS calculation.\n", "\n", "For this example, all poses come from same docking software. As a consequence atoms are numerated in the same way in all poses. But this could be tricky if we use different softwares." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "size=len(renamed_poses)\n", "hmap=np.empty(shape=(size,size))\n", "table=pd.DataFrame()\n", "for i,mol in enumerate(renamed_poses):\n", " for j,jmol in enumerate(renamed_poses):\n", " # MCS identification between reference pose and target pose\n", " r=rdFMCS.FindMCS([mol,jmol])\n", " # Atom map for reference and target \n", " a=mol.GetSubstructMatch(Chem.MolFromSmarts(r.smartsString))\n", " b=jmol.GetSubstructMatch(Chem.MolFromSmarts(r.smartsString))\n", " # Atom map generation \n", " amap=list(zip(a,b))\n", " \n", " # distance calculation per atom pair\n", " distances=[]\n", " for atomA, atomB in amap:\n", " pos_A=mol.GetConformer().GetAtomPosition (atomA)\n", " pos_B=jmol.GetConformer().GetAtomPosition (atomB)\n", " coord_A=np.array((pos_A.x,pos_A.y,pos_A.z))\n", " coord_B=np.array ((pos_B.x,pos_B.y,pos_B.z))\n", " dist_numpy = np.linalg.norm(coord_A-coord_B) \n", " distances.append(dist_numpy)\n", " \n", " # This is the RMSD formula from wikipedia\n", " rmsd=math.sqrt(1/len(distances)*sum([i*i for i in distances])) \n", " \n", " #saving the rmsd values to a matrix and a table for clustering\n", " hmap[i,j]=rmsd\n", " table.loc[mol.GetProp('_Name'),jmol.GetProp('_Name')]=rmsd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can find the RMS values of all comparison within the table." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12345678910
10.00000011.67279711.78844810.8289506.96115310.43302814.64461910.84631612.93544911.614146
211.6727970.0000001.69909110.2855729.5800732.8267366.9162877.7432537.4885346.121009
311.7884481.6990910.00000010.3926919.7911943.3002597.0734457.9361587.2054266.554362
410.82895010.28557210.3926910.0000006.5314239.9417979.5898115.9229819.6910219.448656
56.9611539.5800739.7911946.5314230.0000008.71439811.2296597.7801329.7020398.521143
610.4330282.8267363.3002599.9417978.7143980.0000007.6232717.4197017.7165916.322045
714.6446196.9162877.0734459.58981111.2296597.6232710.0000008.4540145.1252154.790534
810.8463167.7432537.9361585.9229817.7801327.4197018.4540140.0000009.4960958.573034
912.9354497.4885347.2054269.6910219.7020397.7165915.1252159.4960950.0000004.256204
1011.6141466.1210096.5543629.4486568.5211436.3220454.7905348.5730344.2562040.000000
\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 \\\n", "1 0.000000 11.672797 11.788448 10.828950 6.961153 10.433028 \n", "2 11.672797 0.000000 1.699091 10.285572 9.580073 2.826736 \n", "3 11.788448 1.699091 0.000000 10.392691 9.791194 3.300259 \n", "4 10.828950 10.285572 10.392691 0.000000 6.531423 9.941797 \n", "5 6.961153 9.580073 9.791194 6.531423 0.000000 8.714398 \n", "6 10.433028 2.826736 3.300259 9.941797 8.714398 0.000000 \n", "7 14.644619 6.916287 7.073445 9.589811 11.229659 7.623271 \n", "8 10.846316 7.743253 7.936158 5.922981 7.780132 7.419701 \n", "9 12.935449 7.488534 7.205426 9.691021 9.702039 7.716591 \n", "10 11.614146 6.121009 6.554362 9.448656 8.521143 6.322045 \n", "\n", " 7 8 9 10 \n", "1 14.644619 10.846316 12.935449 11.614146 \n", "2 6.916287 7.743253 7.488534 6.121009 \n", "3 7.073445 7.936158 7.205426 6.554362 \n", "4 9.589811 5.922981 9.691021 9.448656 \n", "5 11.229659 7.780132 9.702039 8.521143 \n", "6 7.623271 7.419701 7.716591 6.322045 \n", "7 0.000000 8.454014 5.125215 4.790534 \n", "8 8.454014 0.000000 9.496095 8.573034 \n", "9 5.125215 9.496095 0.000000 4.256204 \n", "10 4.790534 8.573034 4.256204 0.000000 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And also we can check if our RMS calculation is considering the full molecule, a fragment or substructure. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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WCwWt6mnnTt3Sp8+fZQQMBqNyn9feeUV1dtOTU2Vnj17Kr/TrVs3Wb58eW08LKJqYYAQ3YCcnByJj49XGvtevXq5zZeXlZWJ1WqV+vXri9FolAkTJkhmZqbbbW3dulVGjBih3JZzPYS7q8hXGUREamW/MFEdtmLFCjzzzDM4duwYAgIC8F//9V9477330KTcJxFfunQJBQUFaNWqlcvvZmRk4OWXX8Y333wDEUGTJk3w17/+FTNnzuQFbOTTGCBENeTKlSt444038Prrr8NmsyEyMhJvvPEG4uPjVb9LPScnB/PmzcPChQtRWlqKiIgIPP3005g1axYaNGigwyMgqh4GCFENy8zMxJNPPok1a9YAAO688058/PHHuP322wEAhYWFePvtt/Hmm2/iypUrMBqNmDp1KubOnetylTmRr2OAEHmBiGDx4sX4y1/+gnPnzsFoNOLZZ59F27ZtMW/ePJw9exYGgwGTJk3C3/72N3Ts2FHvkomqjQFC5EV5eXl4/vnn8cUXXwBwBAsAjB49GhaLBf369dOxOqIbwwAhqgUbNmzA6tWrcf78edx7770YO3as3iUR3TAGCBERacKPcyciIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpAkDhIiINGGAEBGRJgwQIiLShAFCRESaMECIiEgTBggREWnCACEiIk0YIEREpMn/A2rGpzx/cb6lAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Atoms that were used for RMSD calculation (Stereochemistry not shown)\n", "DrawingOptions.bondLineWidth=2\n", "DrawingOptions.includeAtomNumbers=False\n", "structure=Draw.MolToImage(Chem.MolFromSmarts(r.smartsString),size=(400,250))\n", "structure" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Depending in what you want to do, you could be interested in performing an RMS calculation of just a fragment of the molecule. For such purpose you can modify the MCS search to get the atom pairs of the substructure for you are interested.\n", "\n", "E.g.\n", "\n", "To calculate the RMS for the quinoline \n", "\n", "a=mol.GetSubstructMatch(Chem.MolFromSmiles('C1=CC2=CC=CN=C2C=C1'))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DrawingOptions.bondLineWidth=2\n", "DrawingOptions.includeAtomNumbers=False\n", "Draw.MolToImage(Chem.MolFromSmiles('C1=CC2=CC=CN=C2C=C1'),size=(400,250))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a comparison, I will run the same RMS calculation but using Pymol instead of the formula" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " PyMOL not running, entering library mode (experimental)\n" ] } ], "source": [ "size=len(renamed_poses)\n", "hmap=np.empty(shape=(size,size))\n", "table=pd.DataFrame()\n", "for i,mol in enumerate(renamed_poses):\n", " for j,jmol in enumerate(renamed_poses):\n", " \n", " #This is the Pymol Rms_cur implementation for in place calculation\n", " cmd.read_molstr(Chem.MolToMolBlock(mol),'ref')\n", " cmd.read_molstr(Chem.MolToMolBlock(jmol),'target')\n", " rmsd=cmd.rms_cur('ref','target',cycles=10,matchmaker=1)\n", " cmd.deselect()\n", " cmd.delete('all')\n", " \n", " hmap[i,j]=rmsd\n", " table.loc[mol.GetProp('_Name'),jmol.GetProp('_Name')]=rmsd" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12345678910
10.00000011.67279611.78844810.8289506.96115410.43302714.64461910.84631512.93544911.614147
211.6727960.0000001.69909210.2855729.5800732.8267356.9162877.7432537.4885346.121009
311.7884481.6990920.00000010.3926919.7911933.3002587.0734457.9361587.2054266.554362
410.82895010.28557210.3926910.0000006.5314249.9417969.5898115.9229819.6910219.448656
56.9611549.5800739.7911936.5314240.0000008.71439711.2296597.7801329.7020398.521143
610.4330272.8267353.3002589.9417968.7143970.0000007.6232717.4197027.7165906.322044
714.6446196.9162877.0734459.58981111.2296597.6232710.0000008.4540155.1252154.790534
810.8463157.7432537.9361585.9229817.7801327.4197028.4540150.0000009.4960958.573033
912.9354497.4885347.2054269.6910219.7020397.7165905.1252159.4960950.0000004.256204
1011.6141476.1210096.5543629.4486568.5211436.3220444.7905348.5730334.2562040.000000
\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 \\\n", "1 0.000000 11.672796 11.788448 10.828950 6.961154 10.433027 \n", "2 11.672796 0.000000 1.699092 10.285572 9.580073 2.826735 \n", "3 11.788448 1.699092 0.000000 10.392691 9.791193 3.300258 \n", "4 10.828950 10.285572 10.392691 0.000000 6.531424 9.941796 \n", "5 6.961154 9.580073 9.791193 6.531424 0.000000 8.714397 \n", "6 10.433027 2.826735 3.300258 9.941796 8.714397 0.000000 \n", "7 14.644619 6.916287 7.073445 9.589811 11.229659 7.623271 \n", "8 10.846315 7.743253 7.936158 5.922981 7.780132 7.419702 \n", "9 12.935449 7.488534 7.205426 9.691021 9.702039 7.716590 \n", "10 11.614147 6.121009 6.554362 9.448656 8.521143 6.322044 \n", "\n", " 7 8 9 10 \n", "1 14.644619 10.846315 12.935449 11.614147 \n", "2 6.916287 7.743253 7.488534 6.121009 \n", "3 7.073445 7.936158 7.205426 6.554362 \n", "4 9.589811 5.922981 9.691021 9.448656 \n", "5 11.229659 7.780132 9.702039 8.521143 \n", "6 7.623271 7.419702 7.716590 6.322044 \n", "7 0.000000 8.454015 5.125215 4.790534 \n", "8 8.454015 0.000000 9.496095 8.573033 \n", "9 5.125215 9.496095 0.000000 4.256204 \n", "10 4.790534 8.573033 4.256204 0.000000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, values from RMS formula and Pymol Rms_cur are the same. However, for this calculation Pymol generates the atom selection by turning on the option **matchmaker=1**. In my experience, when working with poses from different softwares. Pymol Rms_cur can fail even with matchmaker=1. So I would advice to use it carefully and corroborate the RMS values by using the MCS from RDKIT." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pose clustering\n", "\n", "As I refer before, this analysis will be based on the GOLD clustering of poses from the CCDC. Therefore, we need to use a complete linkage hierarchical clustering algorithm (HCL). This can be easy doing by typing:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/angel/miniconda3/envs/Cheminformatics/lib/python3.6/site-packages/ipykernel_launcher.py:2: ClusterWarning: scipy.cluster: The symmetric non-negative hollow observation matrix looks suspiciously like an uncondensed distance matrix\n", " \n" ] } ], "source": [ "# I will use the matrix that I generated before\n", "linked = linkage(hmap,'complete')\n", "labelList = [mol.GetProp('_Name') for mol in renamed_poses]\n", "# Don´t worry about the warning, the analysis was done" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A simple plot of the HCL" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5,5))\n", "\n", "ax1=plt.subplot()\n", "o=dendrogram(linked, \n", " orientation='left',\n", " labels=labelList,\n", " distance_sort='descending',\n", " show_leaf_counts=True)\n", "\n", "ax1.spines['left'].set_visible(False)\n", "ax1.spines['top'].set_visible(False)\n", "ax1.spines['right'].set_visible(False)\n", "plt.title('Pose clustering',fontsize=20,weight='bold')\n", "plt.tick_params ('both',width=2,labelsize=12)\n", "plt.tight_layout()\n", "plt.show() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more clearance we will interested in see a heatmap of the poses next to the HCL" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# This will give us the clusters in order as the last plot\n", "\n", "new_data=list(reversed(o['ivl']))\n", "\n", "# we create a new table with the order of HCL\n", "hmap_2=np.empty(shape=(size,size))\n", "for index,i in enumerate(new_data):\n", " for jndex,j in enumerate(new_data):\n", " hmap_2[index,jndex]=table.loc[i].at[j]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now a super fancy and useful plot" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure= plt.figure(figsize=(15,15))\n", "gs1 = gridspec.GridSpec(2,7)\n", "gs1.update(wspace=0.01)\n", "ax1 = plt.subplot(gs1[0:-1, :2])\n", "dendrogram(linked, orientation='left', distance_sort='descending',show_leaf_counts=True,no_labels=True)\n", "ax1.spines['left'].set_visible(False)\n", "ax1.spines['top'].set_visible(False)\n", "ax1.spines['right'].set_visible(False)\n", "\n", "ax2 = plt.subplot(gs1[0:-1,2:6])\n", "f=ax2.imshow (hmap_2, cmap='magma', interpolation='nearest')\n", "\n", "ax2.set_title('Pose clustering',fontsize=20,weight='bold')\n", "ax2.set_xticks (range(len(new_data)))\n", "ax2.set_yticks (range(len(new_data)))\n", "ax2.set_xticklabels (new_data,rotation=90)\n", "ax2.set_yticklabels (new_data)\n", "\n", "ax3 = plt.subplot(gs1[0:-1,6:7])\n", "m=plt.colorbar(f,cax=ax3,shrink=0.75,orientation='vertical',spacing='uniform',pad=0.01)\n", "m.set_label ('RMSD')\n", "\n", "plt.tick_params ('both',width=2,labelsize=9)\n", "plt.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ".. disqus::" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.4" } }, "nbformat": 4, "nbformat_minor": 4 }