{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Structural_motifs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the SBL provides three executables to mine motifs shared by two structures:\n", "* sbl-structural-motifs-conformations.exe\n", "* sbl-structural-motifs-chains-apurva.exe and sbl-structural-motifs-chains-kpax.exe , which use two different methods for seed alignments, namely\n", "Apurva and Kpax.\n", "\n", "
The main difference is that for conformations of the same molecule, we do not need to compute any alignment.\n", "\n", "
In the sequel, we focus on conformations -- using the remaining two executables is similar.\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Useful general functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Case study I: extracting motifs using Conserved Distances (CD) filtration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### Run the calculation " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "General options are: {'input_dir': '', 'input_list': '', 'occupancy': 4, 'mode': 'conformations', 'use_sfd': False, 'min_motif_size': 10, 'lrmsd_ratio': 0.8, 'pd_dist_threshold': 0.8, 'show_diagrams': False, 'odir_root': 'results', 'verbose': False, 'dry': False, 'aligner': 'identity', 'exe': '/user/fcazals/home/projects/proj-soft/sbl-install/bin/sbl-structural-motifs-conformations.exe'}\n", "/user/fcazals/home/projects/proj-soft/sbl-install/bin/sbl-structural-motifs-conformations.exe --motif-size 10 --lrmsd-threshold 0.8 --allow-incomplete-chains -p 4 --pdb-file fusion-class-II/1SVB.pdb --chains A --pdb-file fusion-class-II/1URZ.pdb --chains A --directory-output results/identity-cd/1SVB-A--1URZ-A --module-uid --log\n", "Log file: results/identity-cd/1SVB-A--1URZ-A/sbl-structural-motifs-conformations__log.txt\n", "\n", "Res-triple:\n", "Aligner: identity\n", "Concatenation of pdb ids: 1SVB-1URZ\n", "Output directory: results/identity-cd/1SVB-A--1URZ-A\n" ] } ], "source": [ "from SBL.Structural_motifs import *\n", "from SBL.SBL_pytools import SBL_pytools as sblpyt\n", "#help(sblpyt)\n", "\n", "\n", "\n", "# Structural motifs general options\n", "smgo = Structural_motifs_general_options()\n", "smgo.update_mode(\"conformations\")\n", "print(\"General options are: \", str(smgo))\n", "\n", "\n", "\n", "# Prepare the 4-tuple to be processed\n", "smgo.set(\"input_dir\", \"fusion-class-II\")\n", "data = (\"1SVB.pdb\", \"A\", \"1URZ.pdb\", \"A\")\n", "\n", "# Create an instance of the algo and run it\n", "sm_for_pairs = Structural_motifs_computer_for_pair(smgo)\n", "res_triple = sm_for_pairs.process_two_structures( data )\n", "res_triple.dump()\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Collect statistics and perform the plots \n", "\n", "\n", "* Socre plot. Recall that the C-alpha ranks are obtained from a structural distance score, namely the distance difference between two C-alpha carbons. If CA_i and CA_j are aligned to CA_i' and CA_j' respectively, the distance difference is s_ij = |d_ij - d_i'j'| where d_ij = |CA_i - CA_j|. We can plot the s_ij scores against their respective C-alpha ranks. \n", "\n", "* Calpha distance plot. For a given C-alpha rank we can recover the corresponding C-alpha carbons CA_i and CA_j. We can then plot |CA_i - CA_j| (or |CA_i' - CA_j'| for the second structure) against the C-alpha rank. This gives us an indication on how the atoms are selected on the structure. Notice the distinctive sawtooth pattern indicating that atoms can be far apart and we do not necessarily process atoms adjacent to each other on the back-bone.\n", "\n", "* Sequence shift plot. For the same CA carbons (CA_i and CA_j), we assume their residue sequence numbers are i and j. We can then plot |i - j| (|i' - j'| for the second structure) against the C-alpha ranks. This gives us an indication on their proximity in the sequence. Once again we notice a distinctive sawtooth pattern." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Motif file is results/identity-cd/1SVB-A--1URZ-A/sbl-structural-motifs-conformations__persistent_motifs.xml\n", "Log file is results/identity-cd/1SVB-A--1URZ-A/sbl-structural-motifs-conformations__log.txt\n", "Initial alignment size: 376.0\n", "Initial alignment lRMSD: 11.328041\n", "XML: 1 / 1 files were loaded\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "