add pdbl
Browse files
app.py
CHANGED
@@ -7,7 +7,7 @@ from shiny import App, render, ui, reactive
|
|
7 |
import pandas as pd
|
8 |
import warnings
|
9 |
import re
|
10 |
-
from UniprotKB_P_Sequence_RCSB_API_test import
|
11 |
import plotly.graph_objects as go
|
12 |
from shinywidgets import output_widget, render_widget
|
13 |
import requests
|
@@ -395,7 +395,31 @@ class PDBSearchAssistant:
|
|
395 |
|
396 |
if not pdb_path or not os.path.exists(pdb_path):
|
397 |
print(f"Failed to download PDB file for {pdb_id}")
|
398 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
399 |
|
400 |
# Parse structure
|
401 |
parser = PDB.PDBParser(QUIET=True)
|
@@ -488,27 +512,6 @@ class PDBSearchAssistant:
|
|
488 |
print(f"Error processing query: {str(e)}")
|
489 |
return {"type": "structure", "results": []}
|
490 |
|
491 |
-
def pdbsummary(name):
|
492 |
-
|
493 |
-
search_engine = ProteinSearchEngine()
|
494 |
-
|
495 |
-
query = ProteinQuery(
|
496 |
-
name,
|
497 |
-
max_resolution= 5.0
|
498 |
-
)
|
499 |
-
|
500 |
-
results = search_engine.search(query)
|
501 |
-
|
502 |
-
answer = ""
|
503 |
-
for i, structure in enumerate(results, 1):
|
504 |
-
answer += f"\n{i}. PDB ID : {structure.pdb_id}\n"
|
505 |
-
answer += f"\nResolution : {structure.resolution:.2f} A \n"
|
506 |
-
answer += f"Method : {structure.method}\n Title : {structure.title}\n"
|
507 |
-
answer += f"Release Date : {structure.release_date}\n Sequence length: {len(structure.sequence)} aa\n"
|
508 |
-
answer += f" Sequence:\n {structure.sequence}\n"
|
509 |
-
|
510 |
-
return answer
|
511 |
-
|
512 |
def render_html(pdb_id):
|
513 |
if pdb_id is None:
|
514 |
return ""
|
@@ -1012,7 +1015,7 @@ app_ui = ui.page_fluid(
|
|
1012 |
ui.tags.ul(
|
1013 |
ui.tags.li("Human hemoglobin C resolution better than 2.5ร
"),
|
1014 |
ui.tags.li("Find structures containing sequence with similarity 90% MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSELDKAIGRNTNGVITKDEAEKLFNQDVDAAVRGILRNAKLKPVYDSLDAVRRAALINMVFQMGETGVAGFTNSLRMLQQKRWDEAAVNLAKSRWYNQTPNRAKRVITTFRTGTWDAYKNL"),
|
1015 |
-
ui.tags.li("Sequence of PDB ID 8ET6")
|
1016 |
)
|
1017 |
)
|
1018 |
)
|
|
|
7 |
import pandas as pd
|
8 |
import warnings
|
9 |
import re
|
10 |
+
from UniprotKB_P_Sequence_RCSB_API_test import ProteinSearchEngine
|
11 |
import plotly.graph_objects as go
|
12 |
from shinywidgets import output_widget, render_widget
|
13 |
import requests
|
|
|
395 |
|
396 |
if not pdb_path or not os.path.exists(pdb_path):
|
397 |
print(f"Failed to download PDB file for {pdb_id}")
|
398 |
+
|
399 |
+
structure_url = f"https://data.rcsb.org/rest/v1/core/entry/{pdb_id}"
|
400 |
+
response = requests.get(structure_url)
|
401 |
+
structure_data = response.json() if response.status_code == 200 else {}
|
402 |
+
|
403 |
+
|
404 |
+
sequence_url = f"https://data.rcsb.org/rest/v1/core/polymer_entity/{pdb_id}/1"
|
405 |
+
seq_response = requests.get(sequence_url)
|
406 |
+
seq_data = seq_response.json() if response.status_code == 200 else {}
|
407 |
+
sequence = seq_data.get('entity_poly', {}).get('pdbx_seq_one_letter_code', 'N/A')
|
408 |
+
|
409 |
+
sequences = []
|
410 |
+
|
411 |
+
chain_info = {
|
412 |
+
'chain_id': "A", # chain.id, ์์ ์ค์ api 3๊ฐ์จ์ ๊ฐ์ ธ์ค๊ธฐ๋ ๊ฐ๋ฅ
|
413 |
+
'entity_id': '1', # Default entity ID
|
414 |
+
'description': structure_data.get('struct', {}).get('title', 'N/A'),
|
415 |
+
'sequence': sequence,
|
416 |
+
'length': len(sequence),
|
417 |
+
'resolution': structure_data.get('rcsb_entry_info', {}).get('resolution_combined', [0.0])[0],
|
418 |
+
'method': structure_data.get('exptl', [{}])[0].get('method', 'Unknown'),
|
419 |
+
'release_date': structure_data.get('rcsb_accession_info', {}).get('initial_release_date', 'N/A')
|
420 |
+
}
|
421 |
+
sequences.append(chain_info)
|
422 |
+
return sequences
|
423 |
|
424 |
# Parse structure
|
425 |
parser = PDB.PDBParser(QUIET=True)
|
|
|
512 |
print(f"Error processing query: {str(e)}")
|
513 |
return {"type": "structure", "results": []}
|
514 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
def render_html(pdb_id):
|
516 |
if pdb_id is None:
|
517 |
return ""
|
|
|
1015 |
ui.tags.ul(
|
1016 |
ui.tags.li("Human hemoglobin C resolution better than 2.5ร
"),
|
1017 |
ui.tags.li("Find structures containing sequence with similarity 90% MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSELDKAIGRNTNGVITKDEAEKLFNQDVDAAVRGILRNAKLKPVYDSLDAVRRAALINMVFQMGETGVAGFTNSLRMLQQKRWDEAAVNLAKSRWYNQTPNRAKRVITTFRTGTWDAYKNL"),
|
1018 |
+
ui.tags.li("Sequence of PDB ID 8ET6"),
|
1019 |
)
|
1020 |
)
|
1021 |
)
|