SURFACE-Bind
  • Home
  • Analysis
  • Protein Families
    • Enzymes
    • Receptors
    • Transporters
    • Miscellaneous
    • Unclassified
    • Unmatched
  • About
  1. Channels
  2. O43315

  • Active_transporters
    • O15438
    • O15439
    • O15440
    • O60706
    • O94911
    • O95342
    • O95477
    • P05023
    • P08183
    • P13637
    • P21439
    • P23634
    • P33527
    • P50993
    • P78363
    • Q2M3G0
    • Q4VNC0
    • Q5T3U5
    • Q8IUA7
    • Q8IZY2
    • Q8N139
    • Q8WWZ7
    • Q9BZC7
    • Q9H7F0
    • Q9H172
    • Q9H222
    • Q9HD20
    • Q9NP78
    • Q9NQ11
    • Q86UK0
    • Q86UQ4
    • Q96J65
    • Q01814
    • Q13733
    • Q16720
    • Q92887
    • Q99758

  • AuxillaryTransportUnit
    • A6NFC5
    • O60359
    • O60939
    • P05026
    • P14415
    • P51164
    • P54709
    • P62955
    • P98161
    • Q4KMZ8
    • Q5VU97
    • Q5VXU1
    • Q7Z442
    • Q7Z443
    • Q8IWT1
    • Q8N8D7
    • Q8TDX9
    • Q8WXS4
    • Q8WXS5
    • Q9BXT2
    • Q9NPA1
    • Q9NTG1
    • Q9NY72
    • Q9UBN1
    • Q9UF02
    • Q9UN42
    • Q9Y691
    • Q86W47
    • Q06432
    • Q07699
    • Q16558

  • Channels
    • A5X5Y0
    • A8MPY1
    • O00591
    • O14764
    • O15399
    • O15547
    • O43315
    • O43424
    • O43497
    • O60391
    • O75311
    • O94778
    • O95264
    • O95279
    • P02708
    • P07510
    • P11230
    • P14867
    • P17787
    • P18505
    • P18507
    • P23415
    • P23416
    • P24046
    • P28472
    • P28476
    • P29972
    • P30301
    • P30532
    • P30926
    • P31644
    • P32297
    • P34903
    • P35498
    • P35499
    • P36544
    • P39086
    • P41181
    • P42261
    • P42262
    • P42263
    • P43681
    • P46098
    • P47869
    • P47870
    • P48050
    • P48058
    • P48167
    • P48169
    • P48549
    • P51575
    • P51801
    • P55064
    • P55087
    • P56373
    • P78334
    • Q7Z418
    • Q8N1C3
    • Q8TCU5
    • Q8TDN1
    • Q8TDN2
    • Q8WXA8
    • Q9BSA4
    • Q9C0H2
    • Q9GZU1
    • Q9GZZ6
    • Q9H1D0
    • Q9H313
    • Q9HBA0
    • Q9NQA5
    • Q9NY46
    • Q9P0L9
    • Q9P0X4
    • Q9UBL9
    • Q9UGM1
    • Q9UI33
    • Q9ULK0
    • Q9ULQ1
    • Q9UN88
    • Q9UQD0
    • Q9Y5S1
    • Q9Y5Y9
    • Q70Z44
    • Q96KK3
    • Q96PS8
    • Q401N2
    • Q01118
    • Q04844
    • Q05586
    • Q05901
    • Q07001
    • Q12879
    • Q13002
    • Q13003
    • Q13224
    • Q13563
    • Q13936
    • Q14500
    • Q14524
    • Q14957
    • Q15822
    • Q15825
    • Q15858
    • Q16099
    • Q16445
    • Q16478
    • Q99250
    • Q99571
    • Q99572
    • Q99928

  • Other_transporters
    • A6NH21
    • Q5GH77
    • Q8NFU0
    • Q8NFU1
    • Q9NRX5
    • Q86VE9

  • SLC
    • A0AV02
    • A0PJK1
    • A1A5C7
    • A4IF30
    • A6NNN8
    • G3V0H7
    • O00337
    • O00341
    • O15375
    • O15431
    • O43511
    • O43826
    • O43868
    • O60669
    • O94956
    • O95436
    • O95528
    • O95907
    • P02730
    • P08195
    • P09131
    • P13866
    • P19634
    • P32418
    • P40879
    • P41440
    • P43003
    • P43004
    • P43005
    • P43007
    • P46059
    • P46721
    • P48067
    • P48664
    • P48764
    • P50443
    • P52569
    • P53985
    • P54219
    • P55011
    • P55017
    • P57103
    • P58743
    • P82251
    • Q2Y0W8
    • Q3KNW5
    • Q4U2R8
    • Q5PT55
    • Q6NVV3
    • Q6P5W5
    • Q6PXP3
    • Q6T423
    • Q6U841
    • Q6YBV0
    • Q6ZMD2
    • Q6ZMH5
    • Q6ZQN7
    • Q6ZSM3
    • Q7L0J3
    • Q7LBE3
    • Q7RTT9
    • Q08AI6
    • Q8IWA5
    • Q8IY34
    • Q8IZD6
    • Q8N4M1
    • Q8N130
    • Q8N434
    • Q8N695
    • Q8N697
    • Q8NCS7
    • Q8NDX2
    • Q8NFF2
    • Q8NHS3
    • Q8WUG5
    • Q8WWI5
    • Q8WWT9
    • Q9BXP2
    • Q9BXS9
    • Q9BY07
    • Q9BYT1
    • Q9BZD2
    • Q9BZV2
    • Q9BZW2
    • Q9C0K1
    • Q9H2B4
    • Q9H2H9
    • Q9H2X9
    • Q9H2Y9
    • Q9H015
    • Q9H841
    • Q9HAS3
    • Q9HC58
    • Q9NP94
    • Q9NPD5
    • Q9NRM0
    • Q9NSA0
    • Q9NUM3
    • Q9NY64
    • Q9NYB5
    • Q9P2U7
    • Q9P2U8
    • Q9UBD6
    • Q9UBY0
    • Q9UGH3
    • Q9UHI7
    • Q9UHW9
    • Q9UI40
    • Q9UIG8
    • Q9UKG4
    • Q9ULF5
    • Q9UP95
    • Q9UPR5
    • Q9Y6L6
    • Q9Y6M7
    • Q9Y6R1
    • Q9Y267
    • Q9Y666
    • Q9Y694
    • Q53GD3
    • Q71RS6
    • Q96GZ6
    • Q96JW4
    • Q96N87
    • Q96QE2
    • Q96RN1
    • Q96T83
    • Q495M3
    • Q496J9
    • Q504Y0
    • Q969I6
    • Q01650
    • Q05940
    • Q06495
    • Q07837
    • Q12908
    • Q13183
    • Q13336
    • Q13433
    • Q13621
    • Q14542
    • Q14973
    • Q15758
    • Q15849
    • Q16348
    • Q16572
    • Q92581
    • Q92911
    • Q92959

  • Transporters

On this page

  • General information
  • AlphaFold model
  • Surface representation - binding sites
  • All detected seeds aligned
  • Seed scores per sites
  • Binding site metrics
  • Binding site sequence composition
  • Download
  1. Channels
  2. O43315

O43315

Author

Hamed Khakzad

Published

August 10, 2024

General information

Code
import requests
import urllib3
urllib3.disable_warnings()

def fetch_uniprot_data(uniprot_id):
    url = f"https://rest.uniprot.org/uniprotkb/{uniprot_id}.json"
    response = requests.get(url, verify=False)  # Disable SSL verification
    response.raise_for_status()  # Raise an error for bad status codes
    return response.json()

def display_uniprot_data(data):
    primary_accession = data.get('primaryAccession', 'N/A')
    protein_name = data.get('proteinDescription', {}).get('recommendedName', {}).get('fullName', {}).get('value', 'N/A')
    gene_name = data.get('gene', [{'geneName': {'value': 'N/A'}}])[0]['geneName']['value']
    organism = data.get('organism', {}).get('scientificName', 'N/A')
    
    function_comment = next((comment for comment in data.get('comments', []) if comment['commentType'] == "FUNCTION"), None)
    function = function_comment['texts'][0]['value'] if function_comment else 'N/A'

    # Printing the data
    print(f"UniProt ID: {primary_accession}")
    print(f"Protein Name: {protein_name}")
    print(f"Organism: {organism}")
    print(f"Function: {function}")

# Replace this with the UniProt ID you want to fetch
uniprot_id = "O43315"
data = fetch_uniprot_data(uniprot_id)
display_uniprot_data(data)
UniProt ID: O43315
Protein Name: Aquaporin-9
Organism: Homo sapiens
Function: Forms a water channel with a broad specificity. Also permeable glycerol and urea. Mediates passage of a wide variety of small, non-charged solutes including carbamides, polyols, purines, and pyrimidines

More information:   

AlphaFold model

Surface representation - binding sites

The computed point cloud for pLDDT > 0.6. Each atom is sampled on average by 10 points.

To see the predicted binding interfaces, you can choose color theme “uncertainty”.

  • Go to the “Controls Panel”

  • Below “Components”, to the right, click on “…”

  • “Set Coloring” by “Atom Property”, and “Uncertainty/Disorder”

All detected seeds aligned

Seed scores per sites

Code
import re
import pandas as pd
import os
import plotly.express as px

ID = "O43315"
data_list = []

name_pattern = re.compile(r'name: (\S+)')
score_pattern = re.compile(r'score: (\d+\.\d+)')
desc_dist_score_pattern = re.compile(r'desc_dist_score: (\d+\.\d+)')

directory = f"/Users/hamedkhakzad/Research_EPFL/1_postdoc_project/Surfaceome_web_app/www/Surfaceome_top100_per_site/{ID}_A"

for filename in os.listdir(directory):
    if filename.startswith("output_sorted_") and filename.endswith(".score"):
        filepath = os.path.join(directory, filename)
        with open(filepath, 'r') as file:
            for line in file:
                name_match = name_pattern.search(line)
                score_match = score_pattern.search(line)
                desc_dist_score_match = desc_dist_score_pattern.search(line)
                
                if name_match and score_match and desc_dist_score_match:
                    name = name_match.group(1)
                    score = float(score_match.group(1))
                    desc_dist_score = float(desc_dist_score_match.group(1))
                    
                    simple_filename = filename.replace("output_sorted_", "").replace(".score", "")
                    data_list.append({
                        'name': name[:-1],
                        'score': score,
                        'desc_dist_score': desc_dist_score,
                        'file': simple_filename
                    })

data = pd.DataFrame(data_list)

fig = px.scatter(
    data,
    x='score',
    y='desc_dist_score',
    color='file',
    title='Score vs Desc Dist Score',
    labels={'score': 'Score', 'desc_dist_score': 'Desc Dist Score'},
    hover_data={'name': True}
)

fig.update_layout(
    legend_title_text='File',
    legend=dict(
        yanchor="top",
        y=0.99,
        xanchor="left",
        x=1.05
    )
)

fig.show()

Binding site metrics

Code
import pandas as pd
pd.options.mode.chained_assignment = None
import plotly.express as px

df_total = pd.read_csv('/Users/hamedkhakzad/Research_EPFL/1_postdoc_project/Surfaceome_web_app/www/database/df_flattened.csv')
df_plot = df_total[df_total['acc_flat'] == ID]
df_plot ['Total seeds'] = df_plot.loc[:,['seedss_a','seedss_b']].sum(axis=1)
df_plot.loc[:, ["acc_flat", "main_classs", "sub_classs", "seedss_a", "seedss_b", "areass", "bsss", "hpss"]]
acc_flat main_classs sub_classs seedss_a seedss_b areass bsss hpss
299 O43315 Transporters Channels 0 0 0.0 0 0.0
Code
import math
import matplotlib.pyplot as plt

features = ['seedss_a', 'seedss_b', 'areass', 'hpss']
titles = ['Alpha seeds', 'Beta seeds', 'Area', 'Hydrophobicity']
num_features = len(features)

if len(df_plot) > 8:
    num_rows = 2
    num_cols = 2
else:
    num_rows = 1
    num_cols = 4

fig, axes = plt.subplots(nrows=num_rows, ncols=num_cols, figsize=(9, num_rows * 5))

axes = axes.flatten()
positions = range(1, len(df_plot) + 1)

for i, feature in enumerate(features):
    title = titles[i]
    axes[i].bar(positions, df_plot[feature], color=['blue', 'orange', 'green', 'red', 'purple', 'brown'])
    axes[i].set_title(title, fontsize=13)
    axes[i].set_xticks(positions)
    axes[i].set_xticklabels(df_plot['bsss'], rotation=90)
    axes[i].set_xlabel("Center residues", fontsize=13)
    axes[i].set_ylabel(title, fontsize=13)

for j in range(len(features), len(axes)):
    fig.delaxes(axes[j])

plt.tight_layout()
plt.show()

Binding site sequence composition

Code
amino_acid_map = {
    'ALA': 'A', 'ARG': 'R', 'ASN': 'N', 'ASP': 'D', 'CYS': 'C',
    'GLN': 'Q', 'GLU': 'E', 'GLY': 'G', 'HIS': 'H', 'ILE': 'I',
    'LEU': 'L', 'LYS': 'K', 'MET': 'M', 'PHE': 'F', 'PRO': 'P',
    'SER': 'S', 'THR': 'T', 'TRP': 'W', 'TYR': 'Y', 'VAL': 'V'
}

from collections import Counter
from ast import literal_eval
from matplotlib.gridspec import GridSpec
import warnings
warnings.filterwarnings("ignore", message="Attempting to set identical low and high xlims")

def convert_to_single_letter(aa_list):
    if type(aa_list) == str:
        aa_list = literal_eval(aa_list)
    return [amino_acid_map[aa] for aa in aa_list]

def create_sequence_visualizations(df, max_letters_per_row=20):
    for idx, row in df.iterrows():
        bsss = row['bsss']
        AAss = row['AAss']
        single_letter_sequence = convert_to_single_letter(AAss)
        
        freq_counter = Counter(single_letter_sequence)
        total_aa = len(single_letter_sequence)
        frequencies = {aa: freq / total_aa for aa, freq in freq_counter.items()}
        
        cmap = plt.get_cmap('viridis')
        norm = plt.Normalize(0, max(frequencies.values()) if frequencies else 1)
        
        n_rows = (len(single_letter_sequence) + max_letters_per_row - 1) // max_letters_per_row
        fig = plt.figure(figsize=(max_letters_per_row * 0.6, n_rows * 1.2 + 0.5))
        
        gs = GridSpec(n_rows + 1, 1, height_ratios=[1] * n_rows + [0.1], hspace=0.3)
        
        for row_idx in range(n_rows):
            start_idx = row_idx * max_letters_per_row
            end_idx = min((row_idx + 1) * max_letters_per_row, len(single_letter_sequence))
            ax = fig.add_subplot(gs[row_idx, 0])
            ax.set_xlim(0, max_letters_per_row)
            ax.set_ylim(0, 1)
            ax.axis('off')
            
            for i, aa in enumerate(single_letter_sequence[start_idx:end_idx]):
                freq = frequencies[aa]
                color = cmap(norm(freq))
                ax.text(i + 0.5, 0.5, aa, ha='center', va='center', fontsize=24, color=color, fontweight='bold')
        
        cbar_ax = fig.add_subplot(gs[-1, 0])
        sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
        sm.set_array([])
        cbar = plt.colorbar(sm, cax=cbar_ax, orientation='horizontal')
        cbar.set_label('Frequency', fontsize=12)
        cbar.ax.tick_params(labelsize=12)
        
        plt.suptitle(f"Center residue {bsss}", fontsize=14)
        plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
        plt.show()
            
create_sequence_visualizations(df_plot)

Download

To download all the seeds and score files for this entry Click Here!

O15547
O43424