
Sortie de l'algorithme pour la première séquence de `unknown.fasta`
Projet du TP2 du cours IFT3295
Ce projet implémente PLAST, une version simplifiée de l’algorithme BLAST sans gaps, permettant de détecter rapidement des régions similaires entre une séquence nucléotidique en entrée et une banque de séquences au format FASTA. L’objectif est de reproduire les grandes étapes de BLAST en utilisant une heuristique basée sur les k-mers, l’extension gloutonne des HSPs et un système de scoring statistique.
Le programme identifie les meilleurs HSP (High Scoring Pairs) pour chaque séquence de la base, calcule leurs statistiques (score, bitscore, e-value), applique un filtrage de significativité, et retourne uniquement les meilleurs alignements significatifs.
Le programme implémente intégralement les étapes suivantes :
À partir d’une graine (par défaut 11111111111), le programme extrait tous les mots de longueur k présents dans la séquence d’entrée ainsi que leurs positions.
Pour chaque séquence du fichier FASTA, tous les k-mers recherchés sont localisés à l’aide d’une recherche exacte.
Chaque HSP est étendu selon une heuristique gloutonne :
- match : +5
- mismatch : -4
- arrêt si la chute de score dépasse le seuil E
Tous les HSPs se chevauchant pour une même paire de séquences sont fusionnés selon leurs coordonnées.
Calcul selon les formules :
avec
Pour chaque séquence, seul le meilleur HSP significatif est conservé, puis les résultats sont triés.
Exemple :
>I|gat|Mesostigma_viride
# Best HSP score:78.00, bitscore:24.00, evalue: 7.67e-02
13 CGCATACGCTTGATAAGCGTA 33
23 AGTATACGCCTGATAAGCGTA 43
----------------------------------------
Total : 1
python src/plast.py -i SEQUENCE -db tRNAs.fasta [-E 4] [-ss 1e-3] [-seed '11111111111']
Arguments :
-i: séquence nucléotidique à rechercher-db: fichier FASTA-E: seuil de chute du score (défaut : 4)-ss: seuil de significativité (défaut : 1e-3)-seed: graine
.
├── data/
│ ├── tRNAs.fasta
│ └── unknown.fasta
│
├── public/
│ (ressources publiques)
│
├── results/
│ ├── Chara_vulgaris.txt
│ ├── Malus_domestica.txt
│ ├── Nephroselmis_olivacea.txt
│ ├── Phoenix_dactylifera.txt
│ └── test.txt
│
├── src/
│ ├── plast.py
│ └── utils.py
│
├── LICENSE
│
├── rapport.aux
├── rapport.log
├── rapport.pdf # Rapport écrit pour les questions du TP
├── rapport.synctex.gz
├── rapport.tex
│
├── README.md # Documentation du projet
├── requirements.txt # Dépendances Python
├── run.ps1 # Script PowerShell d'exécution
└── run.sh # Script Bash d'exécution
Le projet inclut :
- l’analyse de
unknown.fasta - la détermination de l’acide aminé / anticodon
- une comparaison avec BLASTN
- une étude sur l’effet des graines
- un bonus PatternHunter
- Josué Mongan
GitHub : Josh012006
- David Stanescu
GitHub : DavidStanescu13