nooshinbah's picture
Create app.py
eb2312a verified
raw
history blame
1.42 kB
import gradio as gr
from Bio import PDB
import requests
import os
import pandas as pd
# Function to download and parse the PDB file
def fetch_and_parse_pdb(url):
# Download the PDB file
response = requests.get(url)
if response.status_code != 200:
return "Failed to download the PDB file. Please check the URL."
# Save the file locally
pdb_filename = url.split("/")[-1]
with open(pdb_filename, 'wb') as f:
f.write(response.content)
# Parse the PDB file
parser = PDB.PDBParser()
structure = parser.get_structure(pdb_filename, pdb_filename)
# Prepare the header information for output
headers = structure.header
header_items = []
for key, value in headers.items():
if isinstance(value, list):
for item in value:
header_items.append((key, item))
else:
header_items.append((key, value))
# Convert to DataFrame for better formatting
df = pd.DataFrame(header_items, columns=['Header', 'Content'])
# Clean up the downloaded file
os.remove(pdb_filename)
return df
# Create Gradio interface
iface = gr.Interface(
fn=fetch_and_parse_pdb,
inputs="text",
outputs=gr.Dataframe(interactive=True),
title="PDB Metadata Explorer",
description="Input the URL of a Protein Data Bank (PDB) file and retrieve its metadata"
)
# Launch the interface
iface.launch()