Spaces:
Running
Running
Commit
·
809cdad
1
Parent(s):
a0d49a3
debug
Browse files
app.py
CHANGED
@@ -117,8 +117,7 @@ class PeptideAnalyzer:
|
|
117 |
'content': complex_part
|
118 |
})
|
119 |
|
120 |
-
#
|
121 |
-
print(f"Protected {pos['type']}: {complex_part[:20]}... as {placeholder}")
|
122 |
|
123 |
return preprocessed_smiles, protected_residues
|
124 |
def split_on_bonds(self, smiles, protected_residues=None):
|
@@ -574,16 +573,16 @@ class PeptideAnalyzer:
|
|
574 |
|
575 |
def analyze_structure(self, smiles):
|
576 |
"""Main analysis function with preprocessing for complex residues"""
|
577 |
-
print("\nAnalyzing structure:", smiles)
|
578 |
|
579 |
# Pre-process to identify complex residues first
|
580 |
preprocessed_smiles, protected_residues = self.preprocess_complex_residues(smiles)
|
581 |
-
|
582 |
if protected_residues:
|
583 |
print(f"Identified {len(protected_residues)} complex residues during pre-processing")
|
584 |
for i, residue in enumerate(protected_residues):
|
585 |
print(f"Complex residue {i+1}: {residue['type']}")
|
586 |
-
|
587 |
|
588 |
# Check if it's cyclic
|
589 |
is_cyclic, peptide_cycles, aromatic_cycles = self.is_cyclic(smiles)
|
@@ -591,22 +590,24 @@ class PeptideAnalyzer:
|
|
591 |
# Split into segments, respecting protected residues
|
592 |
segments = self.split_on_bonds(preprocessed_smiles, protected_residues)
|
593 |
|
594 |
-
print("\nSegment Analysis:")
|
595 |
sequence = []
|
596 |
for i, segment in enumerate(segments):
|
|
|
597 |
print(f"\nSegment {i}:")
|
598 |
print(f"Content: {segment.get('content', 'None')}")
|
599 |
print(f"Bond before: {segment.get('bond_before', 'None')}")
|
600 |
print(f"Bond after: {segment.get('bond_after', 'None')}")
|
601 |
-
|
602 |
residue, mods = self.identify_residue(segment)
|
603 |
if residue:
|
604 |
if mods:
|
605 |
sequence.append(f"{residue}({','.join(mods)})")
|
606 |
else:
|
607 |
sequence.append(residue)
|
608 |
-
|
609 |
-
print(f"
|
|
|
610 |
else:
|
611 |
print(f"Warning: Could not identify residue in segment: {segment.get('content', 'None')}")
|
612 |
|
@@ -619,13 +620,13 @@ class PeptideAnalyzer:
|
|
619 |
if is_cyclic:
|
620 |
three_letter = f"cyclo({three_letter})"
|
621 |
one_letter = f"cyclo({one_letter})"
|
622 |
-
|
623 |
print(f"\nFinal sequence: {three_letter}")
|
624 |
print(f"One-letter code: {one_letter}")
|
625 |
print(f"Is cyclic: {is_cyclic}")
|
626 |
print(f"Peptide cycles: {peptide_cycles}")
|
627 |
print(f"Aromatic cycles: {aromatic_cycles}")
|
628 |
-
|
629 |
return {
|
630 |
'three_letter': three_letter,
|
631 |
'one_letter': one_letter,
|
@@ -994,11 +995,12 @@ def process_input(
|
|
994 |
for filepath in structure_files:
|
995 |
summary += f"- {os.path.basename(filepath)}\n"
|
996 |
|
997 |
-
return summary, img_cyclic, img_linear, structure_files if structure_files else None
|
998 |
-
|
|
|
999 |
except Exception as e:
|
1000 |
-
return f"Error processing SMILES: {str(e)}", None, None, []
|
1001 |
-
|
1002 |
# Handle file input
|
1003 |
if file_obj is not None:
|
1004 |
try:
|
@@ -1055,6 +1057,7 @@ iface = gr.Interface(
|
|
1055 |
label="Or upload a text file with SMILES",
|
1056 |
file_types=[".txt"]
|
1057 |
),
|
|
|
1058 |
gr.Checkbox(
|
1059 |
label="Show linear representation",
|
1060 |
value=False
|
@@ -1071,6 +1074,7 @@ iface = gr.Interface(
|
|
1071 |
label="Use UFF optimization (may take long)",
|
1072 |
value=False
|
1073 |
)
|
|
|
1074 |
],
|
1075 |
outputs=[
|
1076 |
gr.Textbox(
|
@@ -1081,6 +1085,7 @@ iface = gr.Interface(
|
|
1081 |
label="2D Structure with Annotations",
|
1082 |
type="pil"
|
1083 |
),
|
|
|
1084 |
gr.Image(
|
1085 |
label="Linear Representation",
|
1086 |
type="pil"
|
@@ -1088,7 +1093,7 @@ iface = gr.Interface(
|
|
1088 |
gr.File(
|
1089 |
label="3D Structure Files",
|
1090 |
file_count="multiple"
|
1091 |
-
)
|
1092 |
],
|
1093 |
title="Peptide Structure Analyzer and Visualizer",
|
1094 |
description="""
|
|
|
117 |
'content': complex_part
|
118 |
})
|
119 |
|
120 |
+
#print(f"Protected {pos['type']}: {complex_part[:20]}... as {placeholder}")
|
|
|
121 |
|
122 |
return preprocessed_smiles, protected_residues
|
123 |
def split_on_bonds(self, smiles, protected_residues=None):
|
|
|
573 |
|
574 |
def analyze_structure(self, smiles):
|
575 |
"""Main analysis function with preprocessing for complex residues"""
|
576 |
+
#print("\nAnalyzing structure:", smiles)
|
577 |
|
578 |
# Pre-process to identify complex residues first
|
579 |
preprocessed_smiles, protected_residues = self.preprocess_complex_residues(smiles)
|
580 |
+
"""
|
581 |
if protected_residues:
|
582 |
print(f"Identified {len(protected_residues)} complex residues during pre-processing")
|
583 |
for i, residue in enumerate(protected_residues):
|
584 |
print(f"Complex residue {i+1}: {residue['type']}")
|
585 |
+
"""
|
586 |
|
587 |
# Check if it's cyclic
|
588 |
is_cyclic, peptide_cycles, aromatic_cycles = self.is_cyclic(smiles)
|
|
|
590 |
# Split into segments, respecting protected residues
|
591 |
segments = self.split_on_bonds(preprocessed_smiles, protected_residues)
|
592 |
|
593 |
+
#print("\nSegment Analysis:")
|
594 |
sequence = []
|
595 |
for i, segment in enumerate(segments):
|
596 |
+
"""
|
597 |
print(f"\nSegment {i}:")
|
598 |
print(f"Content: {segment.get('content', 'None')}")
|
599 |
print(f"Bond before: {segment.get('bond_before', 'None')}")
|
600 |
print(f"Bond after: {segment.get('bond_after', 'None')}")
|
601 |
+
"""
|
602 |
residue, mods = self.identify_residue(segment)
|
603 |
if residue:
|
604 |
if mods:
|
605 |
sequence.append(f"{residue}({','.join(mods)})")
|
606 |
else:
|
607 |
sequence.append(residue)
|
608 |
+
|
609 |
+
#print(f"Identified as: {residue}")
|
610 |
+
#print(f"Modifications: {mods}")
|
611 |
else:
|
612 |
print(f"Warning: Could not identify residue in segment: {segment.get('content', 'None')}")
|
613 |
|
|
|
620 |
if is_cyclic:
|
621 |
three_letter = f"cyclo({three_letter})"
|
622 |
one_letter = f"cyclo({one_letter})"
|
623 |
+
"""
|
624 |
print(f"\nFinal sequence: {three_letter}")
|
625 |
print(f"One-letter code: {one_letter}")
|
626 |
print(f"Is cyclic: {is_cyclic}")
|
627 |
print(f"Peptide cycles: {peptide_cycles}")
|
628 |
print(f"Aromatic cycles: {aromatic_cycles}")
|
629 |
+
"""
|
630 |
return {
|
631 |
'three_letter': three_letter,
|
632 |
'one_letter': one_letter,
|
|
|
995 |
for filepath in structure_files:
|
996 |
summary += f"- {os.path.basename(filepath)}\n"
|
997 |
|
998 |
+
#return summary, img_cyclic, img_linear, structure_files if structure_files else None
|
999 |
+
return summary, img_cyclic
|
1000 |
+
|
1001 |
except Exception as e:
|
1002 |
+
#return f"Error processing SMILES: {str(e)}", None, None, []
|
1003 |
+
return f"Error processing SMILES: {str(e)}", None
|
1004 |
# Handle file input
|
1005 |
if file_obj is not None:
|
1006 |
try:
|
|
|
1057 |
label="Or upload a text file with SMILES",
|
1058 |
file_types=[".txt"]
|
1059 |
),
|
1060 |
+
"""
|
1061 |
gr.Checkbox(
|
1062 |
label="Show linear representation",
|
1063 |
value=False
|
|
|
1074 |
label="Use UFF optimization (may take long)",
|
1075 |
value=False
|
1076 |
)
|
1077 |
+
"""
|
1078 |
],
|
1079 |
outputs=[
|
1080 |
gr.Textbox(
|
|
|
1085 |
label="2D Structure with Annotations",
|
1086 |
type="pil"
|
1087 |
),
|
1088 |
+
"""
|
1089 |
gr.Image(
|
1090 |
label="Linear Representation",
|
1091 |
type="pil"
|
|
|
1093 |
gr.File(
|
1094 |
label="3D Structure Files",
|
1095 |
file_count="multiple"
|
1096 |
+
)"""
|
1097 |
],
|
1098 |
title="Peptide Structure Analyzer and Visualizer",
|
1099 |
description="""
|