Spaces:
Runtime error
Runtime error
| # Training | |
| This folder contains the training pipeline for fine-tuning DNABERT-2 on ClinVar-derived GRCh38 examples. | |
| The original path is Google Colab, but this project also includes Mac-friendly local scripts for small research runs and smoke tests. | |
| ## Contents | |
| - `01_prepare_clinvar_dataset.ipynb`: Colab notebook for downloading ClinVar GRCh38 VCF data and preparing binary SNV/small-indel CSV splits with sequence columns. | |
| - `colab_dnabert2_clinvar_finetune.ipynb`: Colab notebook for fine-tuning DNABERT-2 from `train_with_sequences.csv`, `val_with_sequences.csv`, and `test_with_sequences.csv`. | |
| - `requirements-colab.txt`: Python packages for the notebook. | |
| - `requirements-mac.txt`: Python packages for local Mac training. | |
| - `scripts/prepare_clinvar_dataset.py`: converts ClinVar GRCh38 VCF records into sequence classification examples. | |
| - `scripts/train_dnabert2_classifier.py`: fine-tunes DNABERT-2 with Hugging Face Transformers. | |
| - `train_smoke_test.py`: runs a tiny DNABERT-2 local smoke test. | |
| - `train_local_dnabert2.py`: runs Mac-friendly local DNABERT-2 fine-tuning. | |
| - `utils/clinvar_parser.py`: manual gzip VCF parsing and variant filtering helpers. | |
| - `utils/label_utils.py`: ClinVar clinical-significance label mapping helpers. | |
| - `utils/sequence_fetcher.py`: UCSC API and optional local FASTA sequence extraction helpers. | |
| ## Data Requirements | |
| Use GRCh38 consistently: | |
| - ClinVar GRCh38 VCF: `https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz` | |
| - Sequence extraction uses the UCSC hg38 API by default. | |
| - Optional GRCh38 reference FASTA: provide a local or Google Drive path in Colab if using local FASTA sequence extraction. | |
| The fine-tuning notebook expects the sequence CSV files from the preparation notebook. | |
| ## Dataset Check | |
| Before local training, verify the prepared CSV files: | |
| ```bash | |
| python training/check_dataset.py | |
| ``` | |
| The checker expects `train_with_sequences.csv`, `val_with_sequences.csv`, and `test_with_sequences.csv` in `data/processed/`. It also falls back to `training/csv_files/` for sample files. | |
| ## Mac Local Setup | |
| For local Mac training setup, see: | |
| ```text | |
| training/setup_mac.md | |
| ``` | |
| Check the available PyTorch device with: | |
| ```bash | |
| python training/check_device.py | |
| ``` | |
| Run a tiny smoke test first: | |
| ```bash | |
| python training/train_smoke_test.py | |
| ``` | |
| Then run local DNABERT-2 fine-tuning: | |
| ```bash | |
| python training/train_local_dnabert2.py | |
| ``` | |
| By default, local training uses `training/csv_files_large_alt/` when the 5,000-row alternate-sequence CSVs exist. It uses all available rows, trains for 5 epochs, freezes the DNABERT-2 encoder, applies class weights, crops long sequences around variant index 512, and tunes the final classification threshold on the validation split. | |
| Local Mac evaluation is memory-safe by default: epoch evaluation is disabled, validation/test prediction runs in small batches, and final metrics use an evaluation subset of 300 rows per split. To evaluate all validation/test rows after training, pass `--eval_subset_size 0`. | |
| To train the classifier plus the last encoder layer on Mac, use: | |
| ```bash | |
| python training/train_local_dnabert2.py --unfreeze_last_n_layers 1 | |
| ``` | |
| To build a larger balanced ClinVar dataset before training, use: | |
| ```bash | |
| python training/prepare_larger_clinvar_dataset.py | |
| ``` | |
| Check the larger dataset before training: | |
| ```bash | |
| python training/check_large_dataset.py | |
| ``` | |
| Then train from the larger alternate-sequence CSVs explicitly: | |
| ```bash | |
| python training/train_local_dnabert2.py --train_csv training/csv_files_large_alt/train_with_alt_sequences.csv --val_csv training/csv_files_large_alt/val_with_alt_sequences.csv --test_csv training/csv_files_large_alt/test_with_alt_sequences.csv | |
| ``` | |
| ## Colab Flow | |
| 1. Open `01_prepare_clinvar_dataset.ipynb` in Google Colab. | |
| 2. Run dataset preparation and sequence extraction. | |
| 3. Save or download `train_with_sequences.csv`, `val_with_sequences.csv`, and `test_with_sequences.csv`. | |
| 4. Upload those CSV files into `training/csv_files/` or `data/processed/`. | |
| 5. Open `colab_dnabert2_clinvar_finetune.ipynb`. | |
| 6. Run DNABERT-2 fine-tuning. | |
| 7. Export the saved model directory. | |
| ## Safety Notice | |
| This pipeline creates research-only model artifacts. A trained model from this folder is not clinically validated and must not be used for diagnosis or treatment decisions. | |