{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "821d7d64-b3d2-403e-851b-ad7d76bc3ece", "metadata": {}, "source": [ "## Compute RMSD between two predicted protein structures & Visualize\n", "Ref: https://notebook.community/aloctavodia/SBioA/English/04_Comparing_structures\n", "Ref: https://github.com/aws-solutions-library-samples/aws-batch-arch-for-protein-folding/blob/0a0a62faa0d407f4856e0865df4c8e8ec6d26290/src/batchfold/utils/utils.py#LL102C5-L102C5" ] }, { "cell_type": "code", "execution_count": null, "id": "c2f1dd54-fc61-4d5c-abfe-9e70fd3f8cd5", "metadata": { "tags": [] }, "outputs": [], "source": [ "# install pymol https://pymol.org/2/?#download\n", "!conda install -y -c schrodinger pymol-bundle" ] }, { "cell_type": "code", "execution_count": null, "id": "2cc1b770-900a-4ec2-81fe-36270fcfc335", "metadata": { "tags": [] }, "outputs": [], "source": [ "!pip install -q py3dmol" ] }, { "cell_type": "code", "execution_count": null, "id": "c0881987-f848-4e66-b190-aa40b3d5354a", "metadata": { "tags": [] }, "outputs": [], "source": [ "!apt-get update;apt-get install -y libgl1 " ] }, { "cell_type": "code", "execution_count": null, "id": "20a0127c-fb54-450c-92e4-e9b0f877aeb3", "metadata": {}, "outputs": [], "source": [ "!pip install dm-tree" ] }, { "cell_type": "code", "execution_count": null, "id": "d0a2e983-ca7a-4b63-ab0e-fe03312a7016", "metadata": {}, "outputs": [], "source": [ "!pip install biopython" ] }, { "cell_type": "code", "execution_count": null, "id": "cde0223d-fb81-4886-82db-ef68ce934f37", "metadata": { "scrolled": true, "tags": [] }, "outputs": [], "source": [ "import sys, pymol\n", "from pymol import cmd, stored\n", "import py3Dmol\n", "import matplotlib.pyplot as plt\n", "\n", "from Bio.PDB import PDBParser, PDBIO\n", "import io\n", "from source_dir import protein\n", "from source_dir import residue_constants" ] }, { "cell_type": "code", "execution_count": null, "id": "47f8d5c7-97b3-416a-8410-48254c577db9", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import seaborn as sns\n", "import sagemaker\n", "import boto3\n", "client = boto3.client(\"sagemaker\")" ] }, { "cell_type": "code", "execution_count": null, "id": "e34a6322-1686-46f0-9454-0b1a3250b695", "metadata": { "tags": [] }, "outputs": [], "source": [ "#By default the notebook compares the last 3 successful pipeline executions \n", "#Provide 3 pipeline executions to override \n", "pipeline_arns = []\n", "\n", "#Below names should correspond to protein file input for last 3 succesful pipeline executions\n", "input_name_1 = \"T1090\"\n", "input_name_2 = \"T1076\"\n", "input_name_3 = \"T1030\"" ] }, { "cell_type": "code", "execution_count": null, "id": "a58e9910-3fa5-423b-adb1-bca4e85c668d", "metadata": { "tags": [] }, "outputs": [], "source": [ "past_pipeline_executions = client.list_pipeline_executions(\n", " PipelineName='ProteinFoldWorkflow',\n", " MaxResults=25\n", ")\n", "\n", "successful_pipeline_executions = []\n", "pipeline_executions_summaries = past_pipeline_executions.get(\"PipelineExecutionSummaries\")\n", "for executionNum in range(len(pipeline_executions_summaries)):\n", " if pipeline_executions_summaries[executionNum].get(\"PipelineExecutionStatus\") == \"Succeeded\":\n", " successful_pipeline_executions.append(past_pipeline_executions.get(\"PipelineExecutionSummaries\")[executionNum])\n", " \n", "successful_pipeline_executions" ] }, { "cell_type": "code", "execution_count": null, "id": "0e0c3a3c-a89e-4bca-b2d0-c068e1074bb0", "metadata": { "tags": [] }, "outputs": [], "source": [ "if not pipeline_arns:\n", " for pipeline_num in range(3):\n", " pipeline_arns.append(successful_pipeline_executions[pipeline_num].get(\"PipelineExecutionArn\"))\n", "pipeline_arns" ] }, { "cell_type": "code", "execution_count": null, "id": "a40afc9e-42e6-4040-9046-922e14c067bc", "metadata": { "tags": [] }, "outputs": [], "source": [ "def get_inference_outputs(pipeline_arn):\n", " client = boto3.client(\"sagemaker\")\n", " pipeline_output = client.list_pipeline_execution_steps(\n", " PipelineExecutionArn=pipeline_arn,\n", " MaxResults=3,\n", " )\n", " for pipeline_step in pipeline_output.get(\"PipelineExecutionSteps\"):\n", " if pipeline_step.get(\"StepName\") == \"RunAlphaFold\":\n", " alphafold_job_arn = pipeline_step.get(\"Metadata\").get(\"TrainingJob\").get(\"Arn\")\n", " elif pipeline_step.get(\"StepName\") == \"RunOpenFold\":\n", " openfold_job_arn = pipeline_step.get(\"Metadata\").get(\"TrainingJob\").get(\"Arn\")\n", " \n", " alphafold_job_name_index = alphafold_job_arn.find(\"/\")\n", " openfold_job_name_index = openfold_job_arn.find(\"/\")\n", " \n", " alphafold_job_name = alphafold_job_arn[alphafold_job_name_index+1:]\n", " openfold_job_name = openfold_job_arn[openfold_job_name_index+1:]\n", " \n", " alphafold_job_arn = client.describe_training_job(TrainingJobName=alphafold_job_name)\n", " openfold_job_arn = client.describe_training_job(TrainingJobName=openfold_job_name)\n", " \n", " alphafold_output = alphafold_job_arn.get(\"ModelArtifacts\").get(\"S3ModelArtifacts\")\n", " openfold_output = openfold_job_arn.get(\"ModelArtifacts\").get(\"S3ModelArtifacts\")\n", " \n", " return [alphafold_output,openfold_output]" ] }, { "cell_type": "code", "execution_count": null, "id": "7d24e979-9383-443e-8764-0b2ff0375133", "metadata": {}, "outputs": [], "source": [ "outputs_1 = get_inference_outputs(pipeline_arns[0])\n", "s3_alphafold_output_1 = outputs_1[0]\n", "s3_openfold_output_1 = outputs_1[1]\n", "\n", "outputs_2 = get_inference_outputs(pipeline_arns[1])\n", "s3_alphafold_output_2 = outputs_2[0]\n", "s3_openfold_output_2 = outputs_2[1]\n", "\n", "outputs_3 = get_inference_outputs(pipeline_arns[2])\n", "s3_alphafold_output_3 = outputs_3[0]\n", "s3_openfold_output_3 = outputs_3[1]" ] }, { "cell_type": "code", "execution_count": null, "id": "ecbee108-7dab-44e6-a00b-4d30e66ea570", "metadata": { "tags": [] }, "outputs": [], "source": [ "sagemaker.s3.S3Downloader.download(s3_alphafold_output_1, local_path=f'output/{input_name_1}/alphafold')\n", "sagemaker.s3.S3Downloader.download(s3_openfold_output_1, local_path=f'output/{input_name_1}/openfold')\n", "\n", "sagemaker.s3.S3Downloader.download(s3_alphafold_output_2, local_path=f'output/{input_name_2}/alphafold')\n", "sagemaker.s3.S3Downloader.download(s3_openfold_output_2, local_path=f'output/{input_name_2}/openfold')\n", "\n", "sagemaker.s3.S3Downloader.download(s3_alphafold_output_3, local_path=f'output/{input_name_3}/alphafold')\n", "sagemaker.s3.S3Downloader.download(s3_openfold_output_3, local_path=f'output/{input_name_3}/openfold')" ] }, { "cell_type": "code", "execution_count": null, "id": "c8bfac4d-93c3-452b-939c-d1dcbd964a14", "metadata": { "tags": [] }, "outputs": [], "source": [ "!tar zxfv ./output/{input_name_1}/alphafold/model.tar.gz --directory ./output/{input_name_1}/alphafold/\n", "!tar zxfv ./output/{input_name_1}/openfold/model.tar.gz --directory ./output/{input_name_1}/openfold/\n", "\n", "!tar zxfv ./output/{input_name_2}/alphafold/model.tar.gz --directory ./output/{input_name_2}/alphafold/\n", "!tar zxfv ./output/{input_name_2}/openfold/model.tar.gz --directory ./output/{input_name_2}/openfold/\n", "\n", "!tar zxfv ./output/{input_name_3}/alphafold/model.tar.gz --directory ./output/{input_name_3}/alphafold/\n", "!tar zxfv ./output/{input_name_3}/openfold/model.tar.gz --directory ./output/{input_name_3}/openfold/" ] }, { "cell_type": "code", "execution_count": null, "id": "18b1f485-6a77-42fe-ac31-bb9e72384370", "metadata": { "tags": [] }, "outputs": [], "source": [ "cmd.load(filename = f'output/{input_name_1}/alphafold/{input_name_1}/ranked_0.pdb', object = f'{input_name_1}_ranked_0')\n", "cmd.load(f'output/{input_name_1}/openfold/predictions/{input_name_1}_model_1_ptm_relaxed.pdb')\n", "\n", "cmd.load(filename = f'output/{input_name_2}/alphafold/{input_name_2}/ranked_0.pdb', object = f'{input_name_2}_ranked_0')\n", "cmd.load(f'output/{input_name_2}/openfold/predictions/{input_name_2}_model_1_ptm_relaxed.pdb')\n", "\n", "cmd.load(filename = f'output/{input_name_3}/alphafold/{input_name_3}/ranked_0.pdb', object = f'{input_name_3}_ranked_0')\n", "cmd.load(f'output/{input_name_3}/openfold/predictions/{input_name_3}_model_1_ptm_relaxed.pdb')" ] }, { "cell_type": "code", "execution_count": null, "id": "6ffdc35e-8e81-4be7-9aa0-573571016f3a", "metadata": { "tags": [] }, "outputs": [], "source": [ "cmd.remove('not polymer or hydro')\n", "object0 = cmd.get_names()[0]\n", "object1 = cmd.get_names()[1]\n", "\n", "object2 = cmd.get_names()[2]\n", "object3 = cmd.get_names()[3]\n", "\n", "object4 = cmd.get_names()[4]\n", "object5 = cmd.get_names()[5]" ] }, { "cell_type": "code", "execution_count": null, "id": "675ca029-9446-476a-a9f9-cf8f878e47e2", "metadata": { "tags": [] }, "outputs": [], "source": [ "object0, object1, object2, object3, object4, object5" ] }, { "cell_type": "markdown", "id": "a513ce66-6d53-4b81-9ab3-98fdc78f7f62", "metadata": {}, "source": [ "## Example of Visualizing Alphafold & Openfold" ] }, { "cell_type": "markdown", "id": "bc45695f-5878-43c8-8f9f-eab6187a5de7", "metadata": {}, "source": [ "Visualization code credit: https://notebook.community/aloctavodia/SBioA/English/04_Comparing_structures" ] }, { "cell_type": "code", "execution_count": null, "id": "90be79fd-672e-4126-b592-a29f5da449ba", "metadata": { "tags": [] }, "outputs": [], "source": [ "def overwrite_b_factors(pdb_str: str, bfactors: np.ndarray) -> str:\n", " \"\"\"Overwrites the B-factors in pdb_str with contents of bfactors array.\n", "\n", " Args:\n", " pdb_str: An input PDB string.\n", " bfactors: A numpy array with shape [1, n_residues, 37]. We assume that the\n", " B-factors are per residue; i.e. that the nonzero entries are identical in\n", " [0, i, :].\n", "\n", " Returns:\n", " A new PDB string with the B-factors replaced.\n", " \"\"\"\n", " if bfactors.shape[-1] != residue_constants.atom_type_num:\n", " raise ValueError(\n", " f\"Invalid final dimension size for bfactors: {bfactors.shape[-1]}.\"\n", " )\n", "\n", " parser = PDBParser(QUIET=True)\n", " handle = io.StringIO(pdb_str)\n", " structure = parser.get_structure(\"\", handle)\n", "\n", " curr_resid = (\"\", \"\", \"\")\n", " idx = -1\n", " for atom in structure.get_atoms():\n", " atom_resid = atom.parent.get_id()\n", " if atom_resid != curr_resid:\n", " idx += 1\n", " if idx >= bfactors.shape[0]:\n", " raise ValueError(\n", " \"Index into bfactors exceeds number of residues. \"\n", " \"B-factors shape: {shape}, idx: {idx}.\"\n", " )\n", " curr_resid = atom_resid\n", " atom.bfactor = bfactors[idx, residue_constants.atom_order[\"CA\"]]\n", "\n", " new_pdb = io.StringIO()\n", " pdb_io = PDBIO()\n", " pdb_io.set_structure(structure)\n", " pdb_io.save(new_pdb)\n", " return new_pdb.getvalue()\n", "\n", "def plot_banded_pdb(pdb_file, show_sidechains = False, width = 800, height = 600):\n", " with open(pdb_file) as f:\n", " best_pdb = f.read()\n", " target_protein = protein.from_pdb_string(best_pdb)\n", " plddt_list = target_protein.b_factors[:,0]\n", " atom_mask = target_protein.atom_mask\n", " banded_b_factors = []\n", " for plddt in plddt_list:\n", " for idx, (min_val, max_val, _) in enumerate(residue_constants.PLDDT_BANDS):\n", " if plddt >= min_val and plddt <= max_val:\n", " banded_b_factors.append(idx)\n", " break\n", "\n", " banded_b_factors = (\n", " np.array(banded_b_factors)[:, None] * atom_mask\n", " )\n", "\n", " to_visualize_pdb = overwrite_b_factors(best_pdb, banded_b_factors)\n", " # Color the structure by per-residue pLDDT\n", " color_map = {i: bands[2] for i, bands in enumerate(residue_constants.PLDDT_BANDS)}\n", " view = py3Dmol.view(width, height)\n", " view.addModelsAsFrames(to_visualize_pdb)\n", " style = {\"cartoon\": {\"colorscheme\": {\"prop\": \"b\", \"map\": color_map}}}\n", " if show_sidechains:\n", " style[\"stick\"] = {}\n", " view.setStyle({\"model\": -1}, style)\n", " view.zoomTo()\n", " view.show()\n", " return None\n", "\n", "def plot_plddt_legend():\n", " \"\"\"Plots the legend for pLDDT.\"\"\"\n", "\n", " thresh = [\n", " \"Very low (pLDDT < 50)\",\n", " \"Low (70 > pLDDT > 50)\",\n", " \"Confident (90 > pLDDT > 70)\",\n", " \"Very high (pLDDT > 90)\",\n", " ]\n", "\n", " colors = [x[2] for x in residue_constants.PLDDT_BANDS]\n", "\n", " plt.figure(figsize=(2, 2))\n", " for c in colors:\n", " plt.bar(0, 0, color=c)\n", " plt.legend(thresh, frameon=False, loc=\"center\", fontsize=20)\n", " plt.xticks([])\n", " plt.yticks([])\n", " ax = plt.gca()\n", " ax.spines[\"right\"].set_visible(False)\n", " ax.spines[\"top\"].set_visible(False)\n", " ax.spines[\"left\"].set_visible(False)\n", " ax.spines[\"bottom\"].set_visible(False)\n", " plt.title(\"Model Confidence\", fontsize=20, pad=20)\n", " return plt" ] }, { "cell_type": "code", "execution_count": null, "id": "3a9a84aa-a49d-452e-b384-6f9051c5ba8a", "metadata": { "tags": [] }, "outputs": [], "source": [ "#AlphaFold\n", "plt=plot_plddt_legend()\n", "plt.show()\n", "plot_banded_pdb(f'output/{input_name_1}/alphafold/{input_name_1}/ranked_0.pdb')" ] }, { "cell_type": "code", "execution_count": null, "id": "5e23d266-dd10-4026-a61b-0eaa0074c080", "metadata": { "tags": [] }, "outputs": [], "source": [ "#OpenFold\n", "plt=plot_plddt_legend()\n", "plt.show()\n", "plot_banded_pdb(f'output/{input_name_1}/openfold/predictions/{input_name_1}_model_1_ptm_relaxed.pdb')" ] }, { "cell_type": "markdown", "id": "e8f6a444-40d1-4e50-921e-032a03ec129f", "metadata": {}, "source": [ "### RMSD (root mean square deviation)\n", "It is the most common metric used to compare two protein structure. It measures the average distance between the atoms of the superimposed proteins." ] }, { "cell_type": "code", "execution_count": null, "id": "14efb440-5cb7-4b1b-9e1a-bd374819e87a", "metadata": { "tags": [] }, "outputs": [], "source": [ "def rmsd_cur(mol0, mol1, sel='*'):\n", " \"\"\"\n", " Computes the root mean square deviation from the current\n", " coordinates of two pairs of equivalent atoms. Does not\n", " perform a superposition.\n", " \n", " Parameters\n", " ----------\n", " mol0 : PyMOL object\n", " mol1 : PyMOL object\n", " sel : PyMOL selection, atoms used to compute rmsd.\n", " e.g. use ca+c+n for the backbone\n", " \"\"\"\n", " model0 = cmd.get_model('%s and name %s' % (mol0, sel))\n", " model1 = cmd.get_model('%s and name %s' % (mol1, sel))\n", " xyz0 = np.array(model0.get_coord_list())\n", " xyz1 = np.array(model1.get_coord_list())\n", " \n", " rmsd = (np.sum((xyz0 - xyz1 )**2)/len(xyz0))**0.5\n", " return rmsd\n" ] }, { "cell_type": "code", "execution_count": null, "id": "eac41204-b221-48fe-8344-3c7db758f9ac", "metadata": { "tags": [] }, "outputs": [], "source": [ "rmsd_cur_one = rmsd_cur(object0, object1, sel='ca') #'ca+c+n'\n", "rmsd_cur_two = rmsd_cur(object2, object3, sel='ca')\n", "rmsd_cur_three = rmsd_cur(object4, object5, sel='ca')\n", "print('%.2f' % rmsd_cur_one,rmsd_cur_two,rmsd_cur_three)" ] }, { "cell_type": "markdown", "id": "f7f9da90-b221-42c0-8e30-cd027f3fa90a", "metadata": {}, "source": [ "### RMSD with superposition\n", "RMSD can be meaningless if the proteins are not superposed. Superposition two protein structures aligns the structure by rotating and translating one of them respect to the other." ] }, { "cell_type": "code", "execution_count": null, "id": "3d79808d-f731-4908-8db0-5fcd1e88b122", "metadata": { "tags": [] }, "outputs": [], "source": [ "def rmsd_fit(mol0, mol1, sel='*', fit=True):\n", " \"\"\"\n", " Computes the root mean square deviation from two pairs of\n", " equivalent atoms after superposition.\n", " \n", " Parameters\n", " ----------\n", " mol0 : PyMOL object\n", " mol1 : PyMOL object\n", " sel : PyMOL selection. atoms used to compute rmsd.\n", " e.g. use ca+c+n for the backbone\n", " fit : bool. If false computes the rmsd after superposition, but without\n", " updating the coordinates\n", " \n", " \"\"\"\n", " xyz0 = np.array(cmd.get_model('%s and name %s' % (mol0, sel)).get_coord_list())\n", " xyz1 = np.array(cmd.get_model('%s and name %s' % (mol1, sel)).get_coord_list())\n", " \n", " xyz0_all = np.array(cmd.get_model('%s' % mol0).get_coord_list())\n", " xyz1_all = np.array(cmd.get_model('%s' % mol1).get_coord_list())\n", " \n", " # Translation\n", " X = xyz0 - xyz0.mean(axis=0)\n", " Y = xyz1 - xyz1.mean(axis=0)\n", " # Covariation matrix\n", " Cov_matrix = np.dot(Y.T, X)\n", " # Optimal rotation matrix\n", " U, S, Wt = np.linalg.svd(Cov_matrix)\n", " # Create Rotation matrix R\n", " R = np.dot(U, Wt)\n", " # Ensure a right-handed coordinate system\n", " if np.linalg.det(R) < 0.:\n", " S[-1] = -S[-1]\n", " Wt[-1] *= -1\n", " R = np.dot(U, Wt) \n", " if fit:\n", " # center the first molecule\n", " stored.sel0 = list(xyz0_all - xyz0.mean(axis=0))\n", " # rotate and translate the second molecule\n", " stored.sel1 = list(np.dot((xyz1_all - xyz1.mean(0)), R))\n", " #update the changes to the coordinates \n", " cmd.alter_state(1, mol0,\"(x,y,z)=stored.sel0.pop(0)\")\n", " cmd.alter_state(1, mol1,\"(x,y,z)=stored.sel1.pop(0)\")\n", "\n", " # We compute the RMSD after superposition by using the matrix S. The advantage is \n", " # we do not need to actually do the superposition before computing the RMSD.\n", " #rmsd = (np.exp(np.log(np.sum(X ** 2) + np.sum(Y ** 2)) - 2.0 * np.log(np.sum(S)))/len(X))**0.5\n", " rmsd = ((np.sum(X ** 2) + np.sum(Y ** 2) - 2.0 * np.sum(S))/len(X))**0.5\n", " # scales and translates the window to show a selection\n", " cmd.zoom()\n", " return rmsd" ] }, { "cell_type": "code", "execution_count": null, "id": "d2f4ea6b-0012-49fe-a44d-9958f4ddcae2", "metadata": { "tags": [] }, "outputs": [], "source": [ "rmsd_fit_one = rmsd_fit(object0, object1, sel='ca', fit=True)\n", "rmsd_fit_two = rmsd_fit(object2, object3, sel='ca', fit=True)\n", "rmsd_fit_three = rmsd_fit(object4, object5, sel='ca', fit=True)\n", "print('%.2f' % rmsd_fit_one,rmsd_fit_two,rmsd_fit_three)" ] }, { "cell_type": "code", "execution_count": null, "id": "54a87e85-4ff1-488f-9a5c-26538dcf12ea", "metadata": { "tags": [] }, "outputs": [], "source": [ "def tm_score(mol0, mol1, sel='*'): #Check if TM-align use all atoms!\n", " \"\"\"\n", " Compute TM-score between two set of coordinates\n", " \n", " Parameters\n", " ----------\n", " mol0 : PyMOL object\n", " mol1 : PyMOL object\n", " sel : PyMOL selection, atoms used to compute rmsd.\n", " e.g. use ca+c+n for the backbone\n", " \"\"\"\n", " xyz0 = np.array(cmd.get_model('%s and name %s' % (mol0, sel)).get_coord_list())\n", " xyz1 = np.array(cmd.get_model('%s and name %s' % (mol1, sel)).get_coord_list())\n", " \n", " L = len(xyz0)\n", " # d0 is less than 0.5 for L < 22 \n", " # and nan for L < 15 (root of a negative number)\n", " d0 = 1.24 * np.power(L - 15, 1/3) - 1.8\n", " d0 = max(0.5, d0) \n", "\n", " # compute the distance for each pair of atoms\n", " di = np.sum((xyz0 - xyz1) ** 2, 1) # sum along first axis\n", " return np.sum(1 / (1 + (di / d0) ** 2)) / L" ] }, { "cell_type": "code", "execution_count": null, "id": "6233f799-b944-456c-ab1c-13d43432ab4c", "metadata": { "tags": [] }, "outputs": [], "source": [ "tmscore_one = tm_score(object0, object1, sel='ca')\n", "tmscore_two = tm_score(object2, object3, sel='ca')\n", "tmscore_three = tm_score(object4, object5, sel='ca')\n", "print('%.4f' % tmscore_one,tmscore_two,tmscore_three)" ] }, { "cell_type": "code", "execution_count": null, "id": "08db2594-cd02-40a2-a73a-8d3502468dbf", "metadata": { "scrolled": true, "tags": [] }, "outputs": [], "source": [ "!pip install sagemaker-experiments" ] }, { "cell_type": "code", "execution_count": null, "id": "538a4fce-07a3-4136-b9d1-abe865a4282e", "metadata": { "tags": [] }, "outputs": [], "source": [ "%%time\n", "from sagemaker.experiments.run import Run, load_run\n", "import sagemaker\n", "# create an experiment and start a new run\n", "experiment_name='proteinfoldworkflow'\n", "sess=sagemaker.Session()" ] }, { "cell_type": "code", "execution_count": null, "id": "33f76662-2056-4dc0-8643-adfd93e94c41", "metadata": { "tags": [] }, "outputs": [], "source": [ "metric_type='compare:'\n", "experiment_name = 'proteinfoldworkflow'\n", "with Run(experiment_name=experiment_name, run_name=input_name_1, sagemaker_session=sess) as run:\n", " run.log_metric(name=metric_type + \"rmsd_cur\", value=rmsd_cur_one, step=1)\n", " run.log_metric(name=metric_type + \"rmds_fit\", value=rmsd_fit_one, step=1)\n", " run.log_metric(name=metric_type + \"tm_score\", value=tmscore_one, step=1)" ] }, { "cell_type": "code", "execution_count": null, "id": "ce8e691e-2da7-4a51-bf7f-d47dbd0b3fcc", "metadata": { "tags": [] }, "outputs": [], "source": [ "metric_type='compare:'\n", "experiment_name = 'proteinfoldworkflow'\n", "with load_run(experiment_name=experiment_name, run_name=input_name_2, sagemaker_session=sess) as run:\n", " run.log_metric(name=metric_type + \"rmsd\", value=rmsd_fit_two, step=1)\n", " run.log_metric(name=metric_type + \"rmds_fit\", value=rmsd_fit_two, step=1)\n", " run.log_metric(name=metric_type + \"tm_score\", value=tmscore_two, step=1)" ] }, { "cell_type": "code", "execution_count": null, "id": "7226324e-8f20-4266-93db-ad947a2dfab3", "metadata": { "tags": [] }, "outputs": [], "source": [ "metric_type='compare:'\n", "experiment_name = 'proteinfoldworkflow'\n", "with load_run(experiment_name=experiment_name, run_name=input_name_3, sagemaker_session=sess) as run:\n", " run.log_metric(name=metric_type + \"rmsd\", value=rmsd_three, step=1)\n", " run.log_metric(name=metric_type + \"rmds_fit\", value=rmsd_fit_three, step=1)\n", " run.log_metric(name=metric_type + \"tm_score\", value=tmscore_three, step=1)" ] } ], "metadata": { "availableInstances": [ { "_defaultOrder": 0, "_isFastLaunch": true, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 4, "name": "ml.t3.medium", "vcpuNum": 2 }, { "_defaultOrder": 1, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.t3.large", "vcpuNum": 2 }, { "_defaultOrder": 2, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.t3.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 3, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.t3.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 4, "_isFastLaunch": true, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.m5.large", "vcpuNum": 2 }, { "_defaultOrder": 5, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.m5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 6, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.m5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 7, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.m5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 8, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.m5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 9, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.m5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 10, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.m5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 11, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.m5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 12, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.m5d.large", "vcpuNum": 2 }, { "_defaultOrder": 13, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.m5d.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 14, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.m5d.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 15, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.m5d.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 16, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.m5d.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 17, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.m5d.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 18, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.m5d.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 19, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.m5d.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 20, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": true, "memoryGiB": 0, "name": "ml.geospatial.interactive", "supportedImageNames": [ "sagemaker-geospatial-v1-0" ], "vcpuNum": 0 }, { "_defaultOrder": 21, "_isFastLaunch": true, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 4, "name": "ml.c5.large", "vcpuNum": 2 }, { "_defaultOrder": 22, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.c5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 23, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.c5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 24, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.c5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 25, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 72, "name": "ml.c5.9xlarge", "vcpuNum": 36 }, { "_defaultOrder": 26, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 96, "name": "ml.c5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 27, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 144, "name": "ml.c5.18xlarge", "vcpuNum": 72 }, { "_defaultOrder": 28, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.c5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 29, "_isFastLaunch": true, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.g4dn.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 30, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.g4dn.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 31, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.g4dn.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 32, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.g4dn.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 33, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.g4dn.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 34, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.g4dn.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 35, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 61, "name": "ml.p3.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 36, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 244, "name": "ml.p3.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 37, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 488, "name": "ml.p3.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 38, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.p3dn.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 39, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.r5.large", "vcpuNum": 2 }, { "_defaultOrder": 40, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.r5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 41, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.r5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 42, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.r5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 43, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.r5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 44, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.r5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 45, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 512, "name": "ml.r5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 46, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.r5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 47, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.g5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 48, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.g5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 49, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.g5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 50, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.g5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 51, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.g5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 52, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.g5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 53, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.g5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 54, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.g5.48xlarge", "vcpuNum": 192 } ], "forced_instance_type": "ml.t3.medium", "forced_lcc_arn": "", "instance_type": "ml.t3.medium", "kernelspec": { "display_name": "Python 3 (Data Science)", "language": "python", "name": "python3__SAGEMAKER_INTERNAL__arn:aws:sagemaker:us-west-2:236514542706:image/datascience-1.0" }, "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.7.10" } }, "nbformat": 4, "nbformat_minor": 5 }