We aimed to address our rising vulnerability to fungal pathogens through the development of the Fung-AI pipeline: an AI/ML-driven approach for antifungal discovery. A generative adversarial network (GAN) was trained to generate novel candidate antifungal peptide sequences. Next, in silico antifungal and hemolytic classifiers were built to further prioritize AI-generated peptides for experimental validation. From a pool of ~10,000 candidates, thirteen peptides were selected for testing over two-stages of experimentation. Five peptides were found to display mild antifungal activity against the wheat pathogen, Fusarium graminearum, with minimal inhibitory concentrations (MICs) ranging from 250 µg/mL to 500 µg/mL. Four of the five peptides also showed activity against the human pathogen, Candida albicans (MIC: 500 µg/mL). Two of our AI-generated antifungal peptides additionally demonstrated low cytotoxicity in HepG2 human liver carcinoma cells (LC50 > 704.2 µg/mL) indicating that they may be useful as scaffolds for future optimization for therapeutic applications. None of our peptides were found to considerably inhibit the emerging pathogen C. auris, suggesting the need for pathogen-specific down-selection of candidate peptides. Overall, we present a proof-of-principle, generative-AI-based approach for the rapid design of de novo antifungal peptides.
FungAI was run on python 3.11.5. It is recommended to use a virtual environment for package version management.
Package requirements are found in requirements_fungai.txt and can be installed in the virtual environment using pip install -r requirements_fungai.txt.
To successfully run the sequence_validation_wasserstein.ipynb notebook and load in the provided UMAP and HDBSCAN clustering models, a separate virtual environment should be created with requirements_umap.txt. Use this environment to run the notebook.
When installing packages, comment out tensorflow-intel package in requirements files if not using Windows
OS used for project:
- GAN: Linux
- Classifier: Linux and Windows
- UMAP/HDBScan: Windows (may not replicate exactly on Mac/Linux due to randomness of os used in UMAP)
- Other downselection processes: Mac and Linux
Troubleshooting potential installation issues:
- Error installing intel-openmap
- Possible solution: Comment out intel-openmap and brew install libomp if on Mac
The classifiers were trained using the following commands (run from top level directory):
python src/antifungal_classifier/antifungal_tcn_classifier.py --training_data datasets/data_combined_train.csv --testing_data datasets/data_combined_test.csv --window_size 1 --max_len 35 --batch_size 128 --epochs 40
python src/antifungal_classifier/antifungal_tcn_classifier.py --inference_data results/wasserstein_only_antifungal_and_non_hemolytic.csv --window_size 1 --max_len 35 --batch_size 128 --epochs 40 --load_model results/models/first_test_tcn_model.h5
python src/antifungal_classifier/antifungal_1dcnn_bilstm_classifier.py --training_data datasets/data_combined_train.csv --testing_data datasets/data_combined_test.csv --batch_size 16 --epochs 20 --save_output results/models/bilstm_results.csv --save_model results/models/blosum_test_1_model.h5 --load_model results/models/blosum_test_1_model.h5 --max_len 35 --min_len 10 --embed_type blosum
python src/antifungal_classifier/antifungal_1dcnn_bilstm_classifier.py --inference_data results/wasserstein_only_antifungal_and_non_hemolytic.csv --batch_size 16 --epochs 20 --save_output results/models/bilstm_results.csv --load_model results/models/blosum_test_1_model.h5 --max_len 35 --min_len 10 --embed_type blosum
The classifier was trained using the following commands (run from top level directory):
Train:
python src/hemolytic_classifier/hemolytic_classifier.py --train
Inference:
python src/hemolytic_classifier/hemolytic_classifier.py --inference_data results/wasserstein_only_antifungal_and_non_hemolytic.csv --save_output results/hemolytic_inference.csv --load_model results/models/hemolytic_model.h5
Note a classifier model must be trained and saved before training the GAN.
The GAN was trained using the following command (run from top level directory):
python src/fungai_gan/fungai_CNNGAN.py --training_data_file 'datasets/data_combined_train.csv' --RL_evaluation --embedding_dim 200 --max_len 35 --trained_classifier_model "results/models/first_test_1dcnn_bilstm_model.h5" --save_directory "results/models" --autoencoder_training_schedule_file "default" --window_size 1 > results/models/output_cnn_gan.txt
-
Using pre-trained autoencoder (or training GAN after training autoencoder):
python src/fungai_gan/fungai_CNNGAN.py --training_data_file 'datasets/data_combined_train.csv' --RL_evaluation --embedding_dim 200 --max_len 35 --trained_classifier_model "results/models/blosum_test_1_model.h5" --save_directory "results/models" --autoencoder_training_schedule_file "default" --pretrained_autoencoder "pretrained_FungAI_autoencoder_model128__weightsV3.h5" --window_size 1 > results/models/output_cnn_gan.txt
The GAN was inferenced using the following command (run from top level directory):
python src/fungai_gan/fungai_CNNGAN.py --inference --decoder_file_name 'results/models/FungAI_decoder_model128__weightsV3.h5' --RL_evaluation --mutation_rate_evaluation 0.1 --num_generated 10000 --analysis_batch_size 256 --max_len 35 --window_size 1 --save_directory 'results/models' > results/models/generation_run.txt