Il progetto è stato sviluppato e testato con Python 3.10+.
Per installare tutti i pacchetti necessari, eseguire:
pip install scikit-learn pandas numpy seaborn matplotlib biopython- scikit-learn → Per l'addestramento dei modelli di Machine Learning (SVM, Naive Bayes, Rete Neurale)
- pandas → Per la gestione dei dataset CSV
- numpy → Per operazioni matematiche avanzate
- seaborn & matplotlib → Per la visualizzazione dei risultati (grafici e matrici di confusione)
- biopython → Per la gestione dei file FASTA
fusim_bench.fasta : contiene le sequenze che presentano gene fusion all_transcripts.fasta : contiene le sequenze che non presentano gene fusion genes_panel.txt : elenco di geni delle sequenze
Script: bwt_input_fasta.py
Utilizzo:
python bwt_input_fasta.py fusim_bench.fasta -o fusim_bench_bwt.csv📌 Output:
fusim_bench_bwt.csv→ Sequenze con gene fusion con BWT applicata
Script: dividiInBlocchi.py
Utilizzo:
python dividiInBlocchi.py all_transcripts.fasta -o all_transcripts_blocks.fasta📌 Output:
all_transcripts_blocks.fasta→ Sequenze lunghe divise in blocchi più corti per uniformarle a quelle con gene fusion il numero di blocchi scelto per ogni sequenza è stato scelto per ottenere un numero simile agli elementi di fusim_bench.fasta
Script: bwt_input_fasta.py
Utilizzo:
python bwt_input_fasta.py all_transcripts_blocks.fasta -o all_transcripts_blocks_bwt.csv📌 Output:
all_transcripts_blocks_bwt.csv→ BWT applicata ai blocchi
📌 Nota: I due CSV (fusim_bench_bwt.csv e all_transcripts_blocks_bwt.csv) vengono poi uniti manualmente in un unico file full_dataset.csv.
Nel file full_dataset.csv abbiamo anche una colonna "Label" che indica la tipologia di ogni sequenza (0 = no gene fusion, 1 = gene fusion)
Script: estrai_features.py
Utilizzo:
python estrai_features.py full_dataset.csv -o full_dataset_bmers.csv --min_freq k (specifica valore k)📌 Output:
full_dataset_bmers.csv→ File con i B-mers estratti, che compaiono almeno k volte in una sequenza
Script: crea_vettoriNumerici.py
Utilizzo:
python crea_vettoriNumerici.py full_dataset_bmers.csv -o full_dataset_vectors.csv📌 Output:
full_dataset_vectors.csv→ Dataset che organizza le sequenze sulle righe ed i b-mers sulle colonne, ogni cella contiene il numero di volte che un bmer j-esimo compare in una sequenza i-esima
Script: arrotondamento_periodici.py
Utilizzo:
python arrotondamento_periodici.py full_dataset_vectors.csv -o full_dataset_vectors_rounded.csv📌 Output:
full_dataset_vectors_rounded.csv→ Dataset con valori arrotondati
Script: eccd.py
Utilizzo:
python eccd.py full_dataset_vectors_rounded.csv -o full_dataset_vectors_reduced.csv📌 Output:
full_dataset_vectors_reduced.csv→ Dataset ridotto eliminando le feature meno informative
Script: train_svm.py
Utilizzo:
python train_svm.py full_dataset_vectors_reduced.csv📌 Output:
- Stampa accuracy, precision, recall e f1-score
- Genera matrice di confusione come immagine PNG
Script: train_naiveBayes.py
Utilizzo:
python train_naiveBayes.py full_dataset_vectors_reduced.csv📌 Output:
- Stampa accuracy, precision, recall e f1-score
- Genera matrice di confusione come immagine PNG
Script: train_reteNeurale.py
Utilizzo:
python train_reteNeurale.py full_dataset_vectors_reduced.csv📌 Output:
- Stampa accuracy, precision, recall e f1-score
- Genera matrice di confusione come immagine PNG
Script: train_randomForest.py
Utilizzo:
python train_randomForest.py full_dataset_vectors_reduced.csv📌 Output:
- Stampa accuracy, precision, recall e f1-score
- Genera matrice di confusione come immagine PNG
Dopo aver eseguito gli script di addestramento, è possibile confrontare i risultati ottenuti dai diversi algoritmi
Questo progetto consente di estrarre dalla BWT delle sequenze a disposizione i b-mers che vengono usati come dati per l'addestramento e il test di diversi algoritmi di machine learning. Le prestazioni, riguardanti la classificazione delle sequenze in due classi (0: no gene fusion, 1 gene fusion), degli algoritmi, vengono confrontate per visualizzare quale modello classifica con maggiore accuratezza.
📩 Contatti: v.tarantino7@studenti.unisa.it , bmazzeo3@studenti.unisa.it