Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -25,7 +25,6 @@ def extract_features_from_genbank(genbank_content, feature_types=['CDS', 'tRNA',
|
|
| 25 |
|
| 26 |
def design_primers_for_region(sequence, product_size_range, num_to_return=10):
|
| 27 |
"""Design primers for a specific sequence."""
|
| 28 |
-
# Parse the product size range
|
| 29 |
size_min, size_max = map(int, product_size_range.split('-'))
|
| 30 |
return primer3.bindings.designPrimers(
|
| 31 |
{
|
|
@@ -59,15 +58,13 @@ if uploaded_file is not None:
|
|
| 59 |
st.text(str(feature_sequence))
|
| 60 |
|
| 61 |
product_size_range = st.text_input("Enter desired PCR product size range (e.g., 150-500):", value="150-500")
|
| 62 |
-
|
| 63 |
-
# Let users specify the minimum number of primer pairs to return, ensuring it's at least 5
|
| 64 |
min_num_primers = st.number_input("Enter minimum number of primer pairs to return:", min_value=5, value=5, step=1)
|
| 65 |
|
| 66 |
if st.button(f'Design Primers for selected {feature_type}'):
|
| 67 |
primers = design_primers_for_region(feature_sequence, product_size_range, num_to_return=min_num_primers)
|
| 68 |
|
| 69 |
primer_data = []
|
| 70 |
-
for i in range(min_num_primers):
|
| 71 |
left_sequence = primers.get(f'PRIMER_LEFT_{i}_SEQUENCE', 'N/A')
|
| 72 |
right_sequence = primers.get(f'PRIMER_RIGHT_{i}_SEQUENCE', 'N/A')
|
| 73 |
if left_sequence != 'N/A' and right_sequence != 'N/A':
|
|
@@ -77,8 +74,8 @@ if uploaded_file is not None:
|
|
| 77 |
'Right Sequence': right_sequence,
|
| 78 |
'Left TM (°C)': primers.get(f'PRIMER_LEFT_{i}_TM', 'N/A'),
|
| 79 |
'Right TM (°C)': primers.get(f'PRIMER_RIGHT_{i}_TM', 'N/A'),
|
| 80 |
-
'Left Length':
|
| 81 |
-
'Right Length':
|
| 82 |
'PCR Product Size (bp)': primers.get(f'PRIMER_PAIR_{i}_PRODUCT_SIZE', 'N/A')
|
| 83 |
}
|
| 84 |
primer_data.append(primer_info)
|
|
|
|
| 25 |
|
| 26 |
def design_primers_for_region(sequence, product_size_range, num_to_return=10):
|
| 27 |
"""Design primers for a specific sequence."""
|
|
|
|
| 28 |
size_min, size_max = map(int, product_size_range.split('-'))
|
| 29 |
return primer3.bindings.designPrimers(
|
| 30 |
{
|
|
|
|
| 58 |
st.text(str(feature_sequence))
|
| 59 |
|
| 60 |
product_size_range = st.text_input("Enter desired PCR product size range (e.g., 150-500):", value="150-500")
|
|
|
|
|
|
|
| 61 |
min_num_primers = st.number_input("Enter minimum number of primer pairs to return:", min_value=5, value=5, step=1)
|
| 62 |
|
| 63 |
if st.button(f'Design Primers for selected {feature_type}'):
|
| 64 |
primers = design_primers_for_region(feature_sequence, product_size_range, num_to_return=min_num_primers)
|
| 65 |
|
| 66 |
primer_data = []
|
| 67 |
+
for i in range(min_num_primers):
|
| 68 |
left_sequence = primers.get(f'PRIMER_LEFT_{i}_SEQUENCE', 'N/A')
|
| 69 |
right_sequence = primers.get(f'PRIMER_RIGHT_{i}_SEQUENCE', 'N/A')
|
| 70 |
if left_sequence != 'N/A' and right_sequence != 'N/A':
|
|
|
|
| 74 |
'Right Sequence': right_sequence,
|
| 75 |
'Left TM (°C)': primers.get(f'PRIMER_LEFT_{i}_TM', 'N/A'),
|
| 76 |
'Right TM (°C)': primers.get(f'PRIMER_RIGHT_{i}_TM', 'N/A'),
|
| 77 |
+
'Left Length': len(left_sequence), # Get the length of the left primer
|
| 78 |
+
'Right Length': len(right_sequence), # Get the length of the right primer
|
| 79 |
'PCR Product Size (bp)': primers.get(f'PRIMER_PAIR_{i}_PRODUCT_SIZE', 'N/A')
|
| 80 |
}
|
| 81 |
primer_data.append(primer_info)
|