Accelernate commited on
Commit
437fb66
·
verified ·
1 Parent(s): 8397713

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -12
app.py CHANGED
@@ -16,7 +16,7 @@ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
16
 
17
  st.set_page_config(layout='wide')
18
  st.sidebar.title('🔮 GenPro2')
19
- st.sidebar.write('GenPro2 is an end-to-end protein sequence generator, structure predictor, and analysis that uses ESMFold and the ESM-2 language model | beta v2.12')
20
 
21
  def generate_sequence_from_words(words, length):
22
  seed = ' '.join(words).encode('utf-8')
@@ -25,14 +25,33 @@ def generate_sequence_from_words(words, length):
25
  return ''.join(random.choice(amino_acids) for _ in range(length))
26
 
27
  def render_mol(pdb):
28
- pdbview = py3Dmol.view(width=800, height=500)
29
- pdbview.addModel(pdb, 'pdb')
30
- pdbview.setStyle({'cartoon': {'color': 'spectrum'}})
31
- pdbview.setBackgroundColor('white')
32
- pdbview.zoomTo()
33
- pdbview.zoom(2, 800)
34
- pdbview.spin(True)
35
- showmol(pdbview, height=500, width=800)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  def perform_blast_analysis(sequence):
38
  st.subheader('Protein Analysis')
@@ -40,7 +59,7 @@ def perform_blast_analysis(sequence):
40
  progress_bar = st.progress(0)
41
  for i in range(100):
42
  progress_bar.progress(i + 1)
43
- time.sleep(0.4) # Analysis time
44
 
45
  try:
46
  record = SeqRecord(Seq(sequence), id='random_protein')
@@ -61,7 +80,7 @@ def perform_blast_analysis(sequence):
61
  identity_percentage = (hsp.identities / hsp.align_length) * 100
62
 
63
  st.write(f"**Top Match:** {protein_name}")
64
- st.write(f"**Organism:** {organism}")
65
  st.write(f"**Sequence Identity Match:** {identity_percentage:.2f}%")
66
 
67
  # Fetch protein function (if available)
@@ -209,7 +228,7 @@ if st.session_state.structure_info:
209
 
210
  1. Click the 'analyze protein' button to search the [BLAST](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastp&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome) protein database and see if your protein matches any known sequences. The sequence identity will show how close your sequence matches. *Note this can take several minutes
211
  2. Download your protein data and visit the [Protein Data Bank (PDB)](https://www.rcsb.org/) to match your protein structure against known protein structures.
212
- 3. If you think you've discovered a new and useful protein for humans message us!
213
 
214
 
215
  **Remember, this folding is based on randomly generated sequences. Interpret the results with caution.
 
16
 
17
  st.set_page_config(layout='wide')
18
  st.sidebar.title('🔮 GenPro2')
19
+ st.sidebar.write('GenPro2 is an end-to-end protein sequence generator, structure predictor, and analysis that uses [ESMFold](https://esmatlas.com/explore?at=1%2C1%2C21.999999344348925) and the ESM-2 language model | beta v2.12')
20
 
21
  def generate_sequence_from_words(words, length):
22
  seed = ' '.join(words).encode('utf-8')
 
25
  return ''.join(random.choice(amino_acids) for _ in range(length))
26
 
27
  def render_mol(pdb):
28
+ viewer = py3Dmol.view(width='100%', height='400px')
29
+ viewer.addModel(pdb, 'pdb')
30
+ viewer.setStyle({'cartoon': {'color': 'spectrum'}})
31
+ viewer.setBackgroundColor('white')
32
+ viewer.zoomTo()
33
+ viewer.zoom(0.8) # Slightly zoomed out view
34
+ viewer.spin(True)
35
+ viewer.render()
36
+
37
+ # Responsive design for mobile
38
+ st.markdown("""
39
+ <style>
40
+ .stmol-container {
41
+ width: 100% !important;
42
+ height: 400px !important;
43
+ max-width: 800px;
44
+ margin: 0 auto;
45
+ }
46
+ @media (max-width: 600px) {
47
+ .stmol-container {
48
+ height: 300px !important;
49
+ }
50
+ }
51
+ </style>
52
+ """, unsafe_allow_html=True)
53
+
54
+ showmol(viewer, height=400, width=None)
55
 
56
  def perform_blast_analysis(sequence):
57
  st.subheader('Protein Analysis')
 
59
  progress_bar = st.progress(0)
60
  for i in range(100):
61
  progress_bar.progress(i + 1)
62
+ time.sleep(0.9) # Analysis time
63
 
64
  try:
65
  record = SeqRecord(Seq(sequence), id='random_protein')
 
80
  identity_percentage = (hsp.identities / hsp.align_length) * 100
81
 
82
  st.write(f"**Top Match:** {protein_name}")
83
+ st.write(f"**UniProt ID:** {organism}")
84
  st.write(f"**Sequence Identity Match:** {identity_percentage:.2f}%")
85
 
86
  # Fetch protein function (if available)
 
228
 
229
  1. Click the 'analyze protein' button to search the [BLAST](https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastp&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome) protein database and see if your protein matches any known sequences. The sequence identity will show how close your sequence matches. *Note this can take several minutes
230
  2. Download your protein data and visit the [Protein Data Bank (PDB)](https://www.rcsb.org/) to match your protein structure against known protein structures.
231
+ 3. If you think you've discovered a unique and useful protein share it with the world on social media!
232
 
233
 
234
  **Remember, this folding is based on randomly generated sequences. Interpret the results with caution.