|
| 1 | +# PROBESt Web Application |
| 2 | + |
| 3 | +A web-based interface for the PROBESt probe generation and optimization tool. |
| 4 | + |
| 5 | +## Features |
| 6 | + |
| 7 | +- **User-friendly web interface** for all PROBESt parameters |
| 8 | +- **File upload** for input FASTA, BLAST databases, and contig tables |
| 9 | +- **Real-time processing** with progress indicators |
| 10 | +- **Results visualization** showing top 5 best probes |
| 11 | +- **Download results** as a ZIP file containing all output files |
| 12 | + |
| 13 | +## Installation |
| 14 | + |
| 15 | +1. Install Flask and required dependencies: |
| 16 | +```bash |
| 17 | +pip install flask werkzeug |
| 18 | +``` |
| 19 | + |
| 20 | +2. Ensure all PROBESt dependencies are installed (see main README.md) |
| 21 | + |
| 22 | +3. Make sure `primer3_core` and `blastn` are available in your PATH |
| 23 | + |
| 24 | +## Running the Application |
| 25 | + |
| 26 | +From the project root directory: |
| 27 | + |
| 28 | +```bash |
| 29 | +cd app |
| 30 | +python app.py |
| 31 | +``` |
| 32 | + |
| 33 | +The application will be available at `http://localhost:5000` |
| 34 | + |
| 35 | +## Usage |
| 36 | + |
| 37 | +### Required Inputs |
| 38 | + |
| 39 | +1. **Input FASTA File**: Input FASTA file for probe generation (.fna recommended) |
| 40 | + - Can be a single FASTA file (.fa, .fasta, .fna) or an archive (.zip, .tar.gz) containing FASTA files |
| 41 | + |
| 42 | +2. **True Base Archive**: Archive containing FASTA files for primer adjustment |
| 43 | + - Must be a .zip or .tar.gz archive |
| 44 | + - Archive should contain one or more FASTA files (.fa, .fasta, .fna, optionally gzipped) |
| 45 | + - The archive will be automatically preprocessed using `prep_db.sh` to create a BLAST database |
| 46 | + |
| 47 | +3. **False Base Archive(s)**: Archive(s) containing FASTA files for non-specific testing |
| 48 | + - Must be .zip or .tar.gz archives |
| 49 | + - Can upload multiple archives |
| 50 | + - Each archive will be automatically preprocessed using `prep_db.sh` to create BLAST databases |
| 51 | + |
| 52 | +**Note**: The contig table is automatically generated from the true base archive during preprocessing. |
| 53 | + |
| 54 | +### Optional Parameters |
| 55 | + |
| 56 | +The web interface provides access to all optional parameters: |
| 57 | + |
| 58 | +- **Basic Parameters**: Threads, Algorithm type |
| 59 | +- **Evolutionary Algorithm**: Iterations, mutation rates, set sizes |
| 60 | +- **Primer3 Parameters**: Primer size ranges, product size |
| 61 | +- **BLAST Parameters**: Word size, scoring parameters |
| 62 | +- **Probe Check Parameters**: Mismatch thresholds, identity requirements |
| 63 | + |
| 64 | +### Results |
| 65 | + |
| 66 | +After processing: |
| 67 | + |
| 68 | +1. **Top 5 Probes** are displayed on screen with: |
| 69 | + - Probe name |
| 70 | + - Hit count (number of matches) |
| 71 | + - Sequence length |
| 72 | + - Full sequence |
| 73 | + |
| 74 | +2. **Download Results** button provides a ZIP file containing: |
| 75 | + - `output.fa`: Final probe sequences |
| 76 | + - `stats.csv`: Iteration statistics |
| 77 | + - All intermediate files from the pipeline |
| 78 | + |
| 79 | +## File Structure |
| 80 | + |
| 81 | +``` |
| 82 | +app/ |
| 83 | +├── app.py # Flask application |
| 84 | +├── templates/ |
| 85 | +│ └── index.html # Main web interface |
| 86 | +├── static/ |
| 87 | +│ ├── style.css # Styling |
| 88 | +│ └── script.js # Client-side JavaScript |
| 89 | +├── uploads/ # Temporary file uploads (created automatically) |
| 90 | +└── results/ # Processing results (created automatically) |
| 91 | +``` |
| 92 | + |
| 93 | +## Notes |
| 94 | + |
| 95 | +- Uploaded files are stored temporarily and cleaned up after processing |
| 96 | +- Processing may take several minutes depending on input size and parameters |
| 97 | +- The application uses session-based file management for security |
| 98 | + |
| 99 | + |
0 commit comments