import gradio as gr from igfold import IgFoldRunner import os import random import base64 import socket def read_mol(molpath): with open(molpath, "r") as fp: lines = fp.readlines() mol = "" for l in lines: mol += l return mol def molecule(input_pdb, h_seq, l_seq): mol = read_mol(input_pdb) byte_content = mol.encode('utf-8') base64_content = base64.b64encode(byte_content).decode('utf-8') x = ( """
""" ) return f""" """ def validate(seq): alphabet = set('ACDEFGHIKLMNPQRSTVWY') leftover = set(seq.upper()) - alphabet return not leftover def pred_seq(h_seq, l_seq): h_seq = h_seq.upper().replace(' ', '') l_seq = l_seq.upper().replace(' ', '') print("Logs","___"*10) print(h_seq) print(l_seq) hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) print(f"Hostname: {hostname}") print(f"IP Address: {ip_address}") print("___"*10) h_is_valid = validate(h_seq) l_is_valid = validate(l_seq) if h_is_valid and l_is_valid: sequences = { "H": h_seq, "L": l_seq } f_name = ''.join([random.choice("ACDEFGHIKLMNPQRSTVWY") for _ in range(15)]) pred_pdb = f"{f_name}.pdb" igfold = IgFoldRunner(num_models = 1) igfold.fold( pred_pdb, sequences=sequences, do_refine=False, do_renum=False ) html = molecule(pred_pdb, h_seq, l_seq) else: html = "ERROR! Not valid sequence
" return (html) with gr.Blocks() as demo: gr.Markdown('# Antibody Structure Prediction') gr.Markdown("## Examples") html = """
H-chain: QVQLKESGPGLVAPSQSLSITCTVSGFSLSSYGVSWVRQPPGKGLEWLGVIWGDGSTNYHPNLMSRLSISKDISKSQVLFKLNSLQTDDTATYYCVTLDYWGQGTSVTVSS
L-chain: DVVMTQTPLSLPVSLGDQASISCRSSQSLVHRNGNTYLHWYLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKISRVEAEDLGLYFCFQTTYVPNTFGGGTKLEIK
H-chain: EVQLLESGGGLVQPGGSLRLSCAASGFTFSLYWMGWVRQAPGKGLEWVSSISSSGGVTPYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKLGELGWFDPWGQGTLVTVSS
L-chain: DIQMTQSPSSLSASVGDRVTITCRASQGISSYLNWYQQKPGKAPKLLIYYASNLQNGVPSRFSGSGSGTDFTLTISSLQPEDFATYYCQQSYSTPLTFGGGTKVEIK
H-chain: EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS
L-chain: EIVLTQSPATLSLSPGERATLSCRASQSVSSYLAWYQQKPGQAPRLLIYDASNRATGIPARFSGSGSGTDFTLTISSLEPEDFAVYYCQQRSNWPITFGQGTKLEIK