Spaces:
Running
Running
Commit
·
5cfae69
1
Parent(s):
c1ad2a1
bug fixing
Browse files
app.py
CHANGED
|
@@ -1,7 +1,17 @@
|
|
| 1 |
import os
|
| 2 |
import gradio as gr
|
| 3 |
import gradio.blocks
|
| 4 |
-
gradio.blocks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
import re
|
| 6 |
import pandas as pd
|
| 7 |
from io import StringIO
|
|
@@ -867,35 +877,74 @@ def process_input(
|
|
| 867 |
except Exception as e:
|
| 868 |
return f"Error generating 3D structures: {str(e)}", None, None, []
|
| 869 |
|
| 870 |
-
|
| 871 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 872 |
|
| 873 |
-
|
| 874 |
-
img_cyclic = annotate_cyclic_structure(mol, result['three_letter'])
|
| 875 |
|
| 876 |
# Create linear representation if requested
|
| 877 |
img_linear = None
|
| 878 |
if show_linear:
|
| 879 |
-
fig_linear = create_enhanced_linear_viz(
|
| 880 |
buf = BytesIO()
|
| 881 |
fig_linear.savefig(buf, format='png', bbox_inches='tight', dpi=300)
|
| 882 |
buf.seek(0)
|
| 883 |
img_linear = Image.open(buf)
|
| 884 |
plt.close(fig_linear)
|
| 885 |
-
|
| 886 |
-
# Prepare the summary text
|
| 887 |
summary = "Summary:\n"
|
| 888 |
-
summary += f"Sequence: {
|
| 889 |
-
summary += f"One-letter code: {
|
| 890 |
-
summary += f"Is Cyclic: {'Yes' if
|
|
|
|
|
|
|
|
|
|
| 891 |
|
| 892 |
if structure_files:
|
| 893 |
summary += "\n3D Structures Generated:\n"
|
| 894 |
for filepath in structure_files:
|
| 895 |
summary += f"- {os.path.basename(filepath)}\n"
|
| 896 |
|
| 897 |
-
|
| 898 |
-
return summary, img_cyclic, img_linear, structure_files if structure_files else []
|
| 899 |
|
| 900 |
except Exception as e:
|
| 901 |
return f"Error processing SMILES: {str(e)}", None, None, []
|
|
@@ -960,6 +1009,10 @@ iface = gr.Interface(
|
|
| 960 |
label="Show linear representation",
|
| 961 |
value=False
|
| 962 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
| 963 |
gr.Checkbox(
|
| 964 |
label="Generate 3D structure (sdf file format)",
|
| 965 |
value=False
|
|
@@ -1014,4 +1067,5 @@ iface = gr.Interface(
|
|
| 1014 |
)
|
| 1015 |
|
| 1016 |
if __name__ == "__main__":
|
|
|
|
| 1017 |
iface.launch(share=True)
|
|
|
|
| 1 |
import os
|
| 2 |
import gradio as gr
|
| 3 |
import gradio.blocks
|
| 4 |
+
from gradio.blocks import Blocks
|
| 5 |
+
|
| 6 |
+
original_get_api_info = Blocks.get_api_info
|
| 7 |
+
|
| 8 |
+
def safe_get_api_info(self):
|
| 9 |
+
try:
|
| 10 |
+
return original_get_api_info(self)
|
| 11 |
+
except Exception as e:
|
| 12 |
+
print("⚠️ Failed to generate API schema:", e)
|
| 13 |
+
return {}
|
| 14 |
+
|
| 15 |
import re
|
| 16 |
import pandas as pd
|
| 17 |
from io import StringIO
|
|
|
|
| 877 |
except Exception as e:
|
| 878 |
return f"Error generating 3D structures: {str(e)}", None, None, []
|
| 879 |
|
| 880 |
+
segments = analyzer.split_on_bonds(smiles)
|
| 881 |
+
|
| 882 |
+
sequence_parts = []
|
| 883 |
+
output_text = ""
|
| 884 |
+
|
| 885 |
+
# Only include segment analysis in output if requested
|
| 886 |
+
if show_segment_details:
|
| 887 |
+
output_text += "Segment Analysis:\n"
|
| 888 |
+
for i, segment in enumerate(segments):
|
| 889 |
+
output_text += f"\nSegment {i}:\n"
|
| 890 |
+
output_text += f"Content: {segment['content']}\n"
|
| 891 |
+
output_text += f"Bond before: {segment.get('bond_before', 'None')}\n"
|
| 892 |
+
output_text += f"Bond after: {segment.get('bond_after', 'None')}\n"
|
| 893 |
+
|
| 894 |
+
residue, mods = analyzer.identify_residue(segment)
|
| 895 |
+
if residue:
|
| 896 |
+
if mods:
|
| 897 |
+
sequence_parts.append(f"{residue}({','.join(mods)})")
|
| 898 |
+
else:
|
| 899 |
+
sequence_parts.append(residue)
|
| 900 |
+
output_text += f"Identified as: {residue}\n"
|
| 901 |
+
output_text += f"Modifications: {mods}\n"
|
| 902 |
+
else:
|
| 903 |
+
output_text += f"Warning: Could not identify residue in segment: {segment['content']}\n"
|
| 904 |
+
output_text += "\n"
|
| 905 |
+
else:
|
| 906 |
+
for segment in segments:
|
| 907 |
+
residue, mods = analyzer.identify_residue(segment)
|
| 908 |
+
if residue:
|
| 909 |
+
if mods:
|
| 910 |
+
sequence_parts.append(f"{residue}({','.join(mods)})")
|
| 911 |
+
else:
|
| 912 |
+
sequence_parts.append(residue)
|
| 913 |
+
|
| 914 |
+
is_cyclic, peptide_cycles, aromatic_cycles = analyzer.is_cyclic(smiles)
|
| 915 |
+
three_letter = '-'.join(sequence_parts)
|
| 916 |
+
one_letter = ''.join(analyzer.three_to_one.get(aa.split('(')[0], 'X') for aa in sequence_parts)
|
| 917 |
+
|
| 918 |
+
if is_cyclic:
|
| 919 |
+
three_letter = f"cyclo({three_letter})"
|
| 920 |
+
one_letter = f"cyclo({one_letter})"
|
| 921 |
|
| 922 |
+
img_cyclic = annotate_cyclic_structure(mol, three_letter)
|
|
|
|
| 923 |
|
| 924 |
# Create linear representation if requested
|
| 925 |
img_linear = None
|
| 926 |
if show_linear:
|
| 927 |
+
fig_linear = create_enhanced_linear_viz(three_letter, smiles)
|
| 928 |
buf = BytesIO()
|
| 929 |
fig_linear.savefig(buf, format='png', bbox_inches='tight', dpi=300)
|
| 930 |
buf.seek(0)
|
| 931 |
img_linear = Image.open(buf)
|
| 932 |
plt.close(fig_linear)
|
| 933 |
+
|
|
|
|
| 934 |
summary = "Summary:\n"
|
| 935 |
+
summary += f"Sequence: {three_letter}\n"
|
| 936 |
+
summary += f"One-letter code: {one_letter}\n"
|
| 937 |
+
summary += f"Is Cyclic: {'Yes' if is_cyclic else 'No'}\n"
|
| 938 |
+
#if is_cyclic:
|
| 939 |
+
#summary += f"Peptide Cycles: {', '.join(peptide_cycles)}\n"
|
| 940 |
+
#summary += f"Aromatic Cycles: {', '.join(aromatic_cycles)}\n"
|
| 941 |
|
| 942 |
if structure_files:
|
| 943 |
summary += "\n3D Structures Generated:\n"
|
| 944 |
for filepath in structure_files:
|
| 945 |
summary += f"- {os.path.basename(filepath)}\n"
|
| 946 |
|
| 947 |
+
return summary + output_text, img_cyclic, img_linear, structure_files if structure_files else []
|
|
|
|
| 948 |
|
| 949 |
except Exception as e:
|
| 950 |
return f"Error processing SMILES: {str(e)}", None, None, []
|
|
|
|
| 1009 |
label="Show linear representation",
|
| 1010 |
value=False
|
| 1011 |
),
|
| 1012 |
+
gr.Checkbox(
|
| 1013 |
+
label="Show show segmentation details",
|
| 1014 |
+
value=False
|
| 1015 |
+
),
|
| 1016 |
gr.Checkbox(
|
| 1017 |
label="Generate 3D structure (sdf file format)",
|
| 1018 |
value=False
|
|
|
|
| 1067 |
)
|
| 1068 |
|
| 1069 |
if __name__ == "__main__":
|
| 1070 |
+
Blocks.get_api_info = safe_get_api_info
|
| 1071 |
iface.launch(share=True)
|