MSc Bioinformatics dissertation, University of Edinburgh, 2025-26.
A computational pipeline testing the spatial association between transposable elements (TEs) and common, pathogenic and benign single-nucleotide variants (SNVs) in the human genome (GRCh38/hg38). Association is assessed by permutation-based overlap testing (regioneR) and by SNV-density comparison against intergenic and coding-sequence backgrounds, together with a CpG-deamination signature analysis.
b293325_bioinf/
├── README.md
├── R/ # helper functions sourced by the analyses
│ └── functions.R
├── bash_scripts/ # data retrieval (run first)
│ ├── get_dbsnps.sh
│ ├── get_snp_common.sh
│ ├── get_tes.sh
│ └── get_cpg.sh
├── analysis/ # R Markdown analyses
│ ├── cpg_alu_overlaps.Rmd
│ ├── te_snp_overlap.Rmd
│ └── te_snp_common_density.Rmd
├── data/ # inputs; populated by the scripts in bash_scripts/ (not tracked)
└── figures/ # outputs; written by knitting the analyses (not tracked)
R 4.5.1, Bioconductor 3.22. Each analysis ends with a call to sessionInfo(),
so the exact package versions are printed in the knitted output of every Rmd;
a consolidated copy is also given in Appendix A of the dissertation.
Key packages: GenomicRanges, regioneR, GenomicFeatures,
BSgenome.Hsapiens.UCSC.hg38(.masked), TxDb.Hsapiens.UCSC.hg38.knownGene, ggplot2, here.
-
Retrieve the input data (from a shell, in the project root):
bash bash_scripts/get_dbsnps.sh # clinical SNVs (dbSNP, via EDirect) bash bash_scripts/get_snp_common.sh # common SNVs (UCSC dbSnp155Common) bash bash_scripts/get_tes.sh # TE annotations (UCSC RepeatMasker) bash bash_scripts/get_cpg.sh # CpG islands (UCSC), for the positive control
These write their outputs into
data/. -
Run the analyses by knitting the R Markdown files (in this order):
File Produces analysis/cpg_alu_overlaps.RmdFigure 2 (positive control) analysis/te_snp_overlap.Rmd[Figures 4, 8, 9] analysis/te_snp_common_density.Rmd[Figures 3, 5, 6, 7] Figures are written to
figures/.R/functions.Ris sourced by the analyses and is not run directly.
- File paths are resolved with the
herepackage relative to the project root, so clone the repository and run from the top-level folder (or open it as the working directory). Do not run scripts from inside the subfolders. - The
data/andfigures/folders are intentionally empty in the repository; they are populated by step 1 and step 2 respectively. Raw inputs are public and re-downloadable, so they are regenerated rather than stored here.