Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -66,27 +66,44 @@ if uploaded_file is not None:
|
|
| 66 |
if st.button(f'Design Primers for {feature_type}'):
|
| 67 |
size_range = [tuple(map(int, r.split('-'))) for r in product_size_range.split(',')]
|
| 68 |
primers = design_primers_for_region(record.seq, start, end, num_to_return=5)
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
else:
|
| 92 |
-
|
|
|
|
| 66 |
if st.button(f'Design Primers for {feature_type}'):
|
| 67 |
size_range = [tuple(map(int, r.split('-'))) for r in product_size_range.split(',')]
|
| 68 |
primers = design_primers_for_region(record.seq, start, end, num_to_return=5)
|
| 69 |
+
|
| 70 |
+
# Initialize lists to hold primer details
|
| 71 |
+
sequences, tm_values, lengths, gc_percents = [], [], [], []
|
| 72 |
+
|
| 73 |
+
# Check if primer keys exist and add their details to the lists
|
| 74 |
+
for i in range(5): # Assuming we are looking for 5 primer pairs
|
| 75 |
+
left_key = f'PRIMER_LEFT_{i}_SEQUENCE'
|
| 76 |
+
right_key = f'PRIMER_RIGHT_{i}_SEQUENCE'
|
| 77 |
+
if left_key in primers and right_key in primers:
|
| 78 |
+
sequences.append(primers[left_key])
|
| 79 |
+
sequences.append(primers[right_key])
|
| 80 |
+
tm_values.append(primers[f'PRIMER_LEFT_{i}_TM'])
|
| 81 |
+
tm_values.append(primers[f'PRIMER_RIGHT_{i}_TM'])
|
| 82 |
+
lengths.append(primers[f'PRIMER_LEFT_{i}_SIZE'])
|
| 83 |
+
lengths.append(primers[f'PRIMER_RIGHT_{i}_SIZE'])
|
| 84 |
+
gc_percents.append(primers[f'PRIMER_LEFT_{i}_GC_PERCENT'])
|
| 85 |
+
gc_percents.append(primers[f'PRIMER_RIGHT_{i}_GC_PERCENT'])
|
| 86 |
+
|
| 87 |
+
# Check if any primers were found
|
| 88 |
+
if sequences:
|
| 89 |
+
# Construct the DataFrame using the collected primer details
|
| 90 |
+
primer_df = pd.DataFrame({
|
| 91 |
+
'Primer': ['Left Primer'] * len(sequences) // 2 + ['Right Primer'] * len(sequences) // 2,
|
| 92 |
+
'Sequence': sequences,
|
| 93 |
+
'Tm (°C)': tm_values,
|
| 94 |
+
'Length': lengths,
|
| 95 |
+
'GC%': gc_percents,
|
| 96 |
+
})
|
| 97 |
|
| 98 |
+
st.write('### Designed Primers')
|
| 99 |
+
st.dataframe(primer_df)
|
| 100 |
+
csv = primer_df.to_csv(index=False).encode('utf-8')
|
| 101 |
+
st.download_button(
|
| 102 |
+
"Download Primers as CSV",
|
| 103 |
+
csv,
|
| 104 |
+
"primers.csv",
|
| 105 |
+
"text/csv",
|
| 106 |
+
key='download-csv'
|
| 107 |
+
)
|
| 108 |
+
else:
|
| 109 |
+
st.error('No primers were found. Please adjust your parameters and try again.')
|