Name Mode Size
.github 040000
R 040000
data-raw 040000
data 040000
inst 040000
man 040000
tests 040000
vignettes 040000
.Rbuildignore 100644 0 kb
.gitignore 100644 0 kb
DESCRIPTION 100644 1 kb
FEDUP.Rproj 100644 0 kb
LICENSE 100644 1 kb
NAMESPACE 100644 0 kb
README.md 100644 31 kb
README.md
FEDUP ================ `FEDUP` is an R package for gene enrichment and depletion analysis on user-defined pathways using a Fisher’s exact test. ## Getting started ### System prerequisites R version &gt; 3.5.0 R packages: - **CRAN**: openxlsx, tibble, data.table, ggplot2, ggthemes, forcats, and RColorBrewer - **Bioconductor**: RCy3 ### Installation Install FEDUP via devtools ``` r library(devtools) #install_github("rosscm/FEDUP") devtools::load_all() ``` Load libraries ``` r library(openxlsx) library(tibble) library(data.table) library(ggplot2) library(ggthemes) library(forcats) library(RColorBrewer) library(RCy3) ``` ## Quick run ### Data input Load example test genes, background genes, and pathways > To note, the test genes comprise solely of the **olfactory signaling** > pathway. As such, we would expect to see strong *enrichment* for > olfactory-associated pathways and *depletion* for pathways not > associated with olfactory signaling. ``` r data(testGene) data(backgroundGene) data(pathwaysGMT) ``` Take a look at the data structure ``` r str(testGene) #> chr [1:396] "OR11A1" "OR8A1" "OR8I2" "OR52N1" "OR52N5" "OR52N4" "OR52N2" ... str(backgroundGene) #> chr [1:15965] "ELOVL1" "ACOT7" "ACSL1" "ACSL5" "ACSL4" "ELOVL6" "ACSL3" ... str(pathwaysGMT) #> List of 8080 #> $ STEARATE BIOSYNTHESIS I (ANIMALS)%HUMANCYC%PWY-5972 : chr [1:13] "ELOVL1" "ACOT7" "ACSL1" "ACSL5" ... #> $ SUPERPATHWAY OF INOSITOL PHOSPHATE COMPOUNDS%HUMANCYC%PWY-6371 : chr [1:67] "PI4K2B" "MTMR14" "PTEN" "INPPL1" ... #> $ PUTRESCINE DEGRADATION III%HUMANCYC%PWY-0 : chr [1:10] "ALDH3B1" "SAT2" "SAT1" "ALDH3A2" ... #> $ TRYPTOPHAN DEGRADATION III (EUKARYOTIC)%HUMANCYC%TRYPTOPHAN-DEGRADATION-1 : chr [1:11] "KYNU" "AFMID" "ACAA1" "KMO" ... #> $ MEVALONATE PATHWAY I%HUMANCYC%PWY-922 : chr [1:12] "IDI1" "MVK" "ACAA1" "HMGCS1" ... #> $ D-<I>MYO< I>-INOSITOL-5-PHOSPHATE METABOLISM%HUMANCYC%PWY-6367 : chr [1:19] "PLCE1" "PLCG2" "PIP4K2A" "PIP4K2C" ... #> $ PURINE NUCLEOTIDES DEGRADATION II (AEROBIC)%HUMANCYC%PWY-6353 : chr [1:11] "NT5C3A" "NT5C3B" "NT5E" "GDA" ... #> $ PHOSPHATIDYLGLYCEROL BIOSYNTHESIS II (NON-PLASTIDIC)%HUMANCYC%PWY4FS-8 : chr [1:18] "GPD2" "LPCAT3" "GPAT2" "CDS2" ... #> $ FATTY ACID &ALPHA;-OXIDATION II%HUMANCYC%PWY66-387 : chr [1:10] "ACSBG1" "ACSBG2" "SLC27A2" "ACSL1" ... #> $ TRNA CHARGING%HUMANCYC%TRNA-CHARGING-PWY : chr [1:37] "CARS" "AARS2" "VARS" "TARSL2" ... #> $ SUPERPATHWAY OF D-<I>MYO< I>-INOSITOL (1,4,5)-TRISPHOSPHATE METABOLISM%HUMANCYC%PWY-6358 : chr [1:20] "INPP5J" "INPP5K" "IPMK" "OCRL" ... #> $ TRIACYLGLYCEROL DEGRADATION%HUMANCYC%LIPAS-PWY : chr [1:12] "MGLL" "PNLIPRP3" "PNLIP" "PNPLA2" ... #> $ CHOLESTEROL BIOSYNTHESIS I%HUMANCYC%PWY66-341 : chr [1:13] "NSDHL" "CYP51A1" "MSMO1" "HSD17B7" ... #> $ NORADRENALINE AND ADRENALINE DEGRADATION%HUMANCYC%PWY-6342 : chr [1:10] "COMT" "PNMT" "ADH4" "LRTOMT" ... #> $ PHOSPHOLIPASES%HUMANCYC%LIPASYN-PWY : chr [1:36] "PLA2G16" "PLCG2" "PLA2G10" "PLCG1" ... #> $ D-<I>MYO< I>-INOSITOL (1,4,5)-TRISPHOSPHATE DEGRADATION%HUMANCYC%PWY-6363 : chr [1:13] "INPP5J" "INPP5K" "OCRL" "INPP1" ... #> $ 3-PHOSPHOINOSITIDE DEGRADATION%HUMANCYC%PWY-6368 : chr [1:21] "INPP5J" "INPP5K" "SACM1L" "OCRL" ... #> $ PENTOSE PHOSPHATE PATHWAY%HUMANCYC%PENTOSE-P-PWY : chr [1:10] "RPIA" "TKTL2" "TKTL1" "G6PD" ... #> $ D-<I>MYO< I>-INOSITOL (1,4,5)-TRISPHOSPHATE BIOSYNTHESIS%HUMANCYC%PWY-6351 : chr [1:24] "PLCE1" "PLCG2" "PIP4K2A" "PIP5K1A" ... #> $ GLUTATHIONE-MEDIATED DETOXIFICATION I%HUMANCYC%PWY-4061 : chr [1:23] "GSTM4" "GSTK1" "GSTM3" "GSTM2" ... #> $ FATTY ACID &BETA;-OXIDATION I%HUMANCYC%FAO-PWY : chr [1:18] "ACSL1" "ACSL5" "HADHB" "ACSL4" ... #> $ CDP-DIACYLGLYCEROL BIOSYNTHESIS I%HUMANCYC%PWY-5667 : chr [1:17] "GPD2" "LPCAT3" "GPAT2" "CDS2" ... #> $ COLANIC ACID BUILDING BLOCKS BIOSYNTHESIS%HUMANCYC%COLANSYN-PWY : chr [1:13] "MPI" "GALE" "GPI" "TSTA3" ... #> $ GLUCONEOGENESIS I%HUMANCYC%GLUCONEO-PWY : chr [1:22] "FBP2" "GAPDH" "ALDOB" "ALDOA" ... #> $ GLYCOLYSIS I%HUMANCYC%GLYCOLYSIS : chr [1:22] "FBP2" "PKLR" "PFKL" "PKM" ... #> $ 3-PHOSPHOINOSITIDE BIOSYNTHESIS%HUMANCYC%PWY-6352 : chr [1:26] "PIP5K1A" "PIP5K1B" "PIP5K1C" "CDIPT" ... #> $ SUPERPATHWAY OF GERANYLGERANYLDIPHOSPHATE BIOSYNTHESIS I (VIA MEVALONATE)%HUMANCYC%PWY-5910 : chr [1:14] "IDI1" "MVK" "HMGCS1" "IDI2" ... #> $ NAD SALVAGE PATHWAY II%HUMANCYC%NAD-BIOSYNTHESIS-II : chr [1:12] "NMNAT1" "NMRK2" "NMRK1" "NT5C3B" ... #> $ CHOLESTEROL BIOSYNTHESIS III (VIA DESMOSTEROL)%HUMANCYC%PWY66-4 : chr [1:13] "NSDHL" "CYP51A1" "MSMO1" "HSD17B7" ... #> $ D-<I>MYO< I>-INOSITOL (1,3,4)-TRISPHOSPHATE BIOSYNTHESIS%HUMANCYC%PWY-6364 : chr [1:15] "INPP5J" "INPP5K" "IPMK" "OCRL" ... #> $ NAD BIOSYNTHESIS II (FROM TRYPTOPHAN)%HUMANCYC%NADSYN-PWY : chr [1:10] "KYNU" "AFMID" "KMO" "NMNAT1" ... #> $ PURINE NUCLEOTIDES <I>DE NOVO< I> BIOSYNTHESIS II%HUMANCYC%PWY-841 : chr [1:11] "ADSSL1" "GMPS" "ADSS" "PPAT" ... #> $ TRIACYLGLYCEROL BIOSYNTHESIS%HUMANCYC%TRIGLSYN-PWY : chr [1:22] "LPCAT3" "GPAT2" "DGAT2" "MOGAT3" ... #> $ PYRIMIDINE RIBONUCLEOTIDES <I>DE NOVO< I> BIOSYNTHESIS%HUMANCYC%PWY0-162 : chr [1:14] "UMPS" "CANT1" "NME2" "CTPS2" ... #> $ SALVAGE PATHWAYS OF PYRIMIDINE RIBONUCLEOTIDES%HUMANCYC%PWY0-163 : chr [1:15] "UPP2" "UPP1" "CDA" "AICDA" ... #> $ SUPERPATHWAY OF CHOLESTEROL BIOSYNTHESIS%HUMANCYC%PWY66-5 : chr [1:27] "HADHB" "NSDHL" "CYP51A1" "MSMO1" ... #> $ &GAMMA;-GLUTAMYL CYCLE%HUMANCYC%PWY-4041 : chr [1:12] "GGT2" "GGCT" "GCLC" "DPP8" ... #> $ PYRIMIDINE RIBONUCLEOTIDES INTERCONVERSION%HUMANCYC%PWY-5687 : chr [1:12] "NME5" "NME1" "NME6" "NME7" ... #> $ 1D-<I>MYO< I>-INOSITOL HEXAKISPHOSPHATE BIOSYNTHESIS II (MAMMALIAN)%HUMANCYC%PWY-6362 : chr [1:15] "INPP5J" "INPP5K" "ITPK1" "IPMK" ... #> $ CHOLESTEROL BIOSYNTHESIS II (VIA 24,25-DIHYDROLANOSTEROL)%HUMANCYC%PWY66-3 : chr [1:13] "NSDHL" "CYP51A1" "MSMO1" "HSD17B7" ... #> $ ALPHA6BETA4INTEGRIN%IOB%ALPHA6BETA4INTEGRIN : chr [1:68] "LAMB1" "PTPN11" "PTK2" "MTOR" ... #> $ ANDROGENRECEPTOR%IOB%ANDROGENRECEPTOR : chr [1:136] "PAK6" "SRY" "SPDEF" "SVIL" ... #> $ BDNF%IOB%BDNF : chr [1:47] "IGF2BP1" "AKT1" "PTK2B" "MAPK1" ... #> $ CCR1%IOB%CCR1 : chr [1:30] "CCL14" "SRC" "CCL3L3" "PXN" ... #> $ CCR7%IOB%CCR7 : chr [1:22] "MAPK9" "MAPK8" "RPS6KB1" "CFL1" ... #> $ CCR9%IOB%CCR9 : chr [1:19] "MADCAM1" "CD226" "ITGB7" "EZR" ... #> $ CD40%IOB%CD40 : chr [1:26] "PIK3R1" "IKBKB" "MAPK9" "MAPK8" ... #> $ CXCR4%IOB%CXCR4 : chr [1:95] "VAV2" "ZAP70" "DOK1" "CREB1" ... #> $ EGFR1%IOB%EGFR1 : chr [1:464] "ATF1" "ITSN2" "USP6NL" "RPL30" ... #> $ EPO%IOB%EPO : chr [1:52] "GSK3B" "GSK3A" "IRS2" "CRKL" ... #> $ FAS%IOB%FAS : chr [1:115] "PDCD6" "PARK2" "IGF1R" "TIAL1" ... #> $ FLK2 FLT3%IOB%FLK2 FLT3 : chr [1:23] "SHC1" "STAT3" "GAB1" "PTPN11" ... #> $ G-CSF%IOB%G-CSF : chr [1:45] "MAPK3" "JAK1" "LYN" "STAT5A" ... #> $ GDNF%IOB%GDNF : chr [1:37] "TH" "DOK4" "RPS6KB1" "DOK5" ... #> $ GM-CSF%IOB%GM-CSF : chr [1:81] "CSF2RA" "PRDX3" "MAPK9" "GANAB" ... #> $ HEDGEHOG%IOB%HEDGEHOG : chr [1:39] "SMAD1" "CREBBP" "PTCH1" "PTCH2" ... #> $ ID%IOB%ID : chr [1:27] "RB1" "ELK1" "ELK3" "ELK4" ... #> $ IFN-ALPHA%IOB%IFN-ALPHA : chr [1:37] "MTOR" "VAV1" "TNFRSF10D" "NFKBIA" ... #> $ IFN-GAMMA%IOB%IFN-GAMMA : chr [1:41] "IFNGR1" "PRKCE" "STAT2" "RPS6" ... #> $ KITRECEPTOR%IOB%KITRECEPTOR : chr [1:91] "SOS1" "RAF1" "CRK" "GRB7" ... #> $ LEPTIN%IOB%LEPTIN : chr [1:50] "ATF2" "GSK3B" "GSK3A" "ITGB5" ... #> $ M-CSF%IOB%M-CSF : chr [1:62] "CSF1" "ITGB3" "INPPL1" "SLA2" ... #> $ NGF%IOB%NGF : chr [1:21] "CREB1" "IRAK1" "SP1" "DNAJA3" ... #> $ NOTCH%IOB%NOTCH : chr [1:78] "PSEN1" "ASCL1" "DLL1" "RELA" ... #> $ TGF_BETA_RECEPTOR%IOB%TGF_BETA_RECEPTOR : chr [1:191] "NEDD4L" "PIK3R2" "FOXO4" "PIK3R1" ... #> $ THROMBOPOIETIN%IOB%THROMBOPOIETIN : chr [1:11] "GAB1" "MPL" "MAPK1" "JAK2" ... #> $ TIE1 TEK%IOB%TIE1 TEK : chr [1:23] "BMX" "MAPK14" "ELK1" "FOXO1" ... #> $ TNFALPHA%IOB%TNFALPHA : chr [1:215] "RPL4" "RB1" "RPL30" "SMARCB1" ... #> $ TNFSF1%IOB%TNFSF1 : chr [1:17] "LTBR" "LTB" "JUN" "TNFRSF19" ... #> $ TNFSF3%IOB%TNFSF3 : chr [1:14] "JUN" "TRAF2" "TNFRSF1B" "RELA" ... #> $ TNFSF8%IOB%TNFSF8 : chr [1:20] "TRAF5" "REL" "TNFRSF8" "AKT1" ... #> $ TRAIL%IOB%TRAIL : chr [1:55] "TRADD" "CASP7" "CASP8" "AIFM1" ... #> $ WNT%IOB%WNT : chr [1:117] "DIXDC1" "FZD10" "FRAT1" "FRAT2" ... #> $ PID_IL2_PI3K_PATHWAY%MSIGDB_C2%PID_IL2_PI3K_PATHWAY : chr [1:34] "PTPN11" "GAB2" "NFKB1" "MTOR" ... #> $ NABA_BASEMENT_MEMBRANES%MSIGDB_C2%NABA_BASEMENT_MEMBRANES : chr [1:40] "LAMC2" "LAMC1" "NID1" "NID2" ... #> $ PID_E2F_PATHWAY%MSIGDB_C2%PID_E2F_PATHWAY : chr [1:74] "RB1" "CDKN1A" "CDKN1B" "TRRAP" ... #> $ PID_P53_DOWNSTREAM_PATHWAY%MSIGDB_C2%PID_P53_DOWNSTREAM_PATHWAY : chr [1:137] "BCL2" "BCL2L1" "FOXA1" "CCNK" ... #> $ PID_FANCONI_PATHWAY%MSIGDB_C2%PID_FANCONI_PATHWAY : chr [1:47] "BLM" "WDR48" "FAAP24" "BRCA2" ... #> $ BIOCARTA_MEF2D_PATHWAY%MSIGDB_C2%BIOCARTA_MEF2D_PATHWAY : chr [1:18] "PPP3CA" "PPP3CB" "PPP3CC" "CAPNS1" ... #> $ PID_TGFBR_PATHWAY%MSIGDB_C2%PID_TGFBR_PATHWAY : chr [1:55] "DAXX" "PDPK1" "AXIN1" "RHOA" ... #> $ PID_SYNDECAN_4_PATHWAY%MSIGDB_C2%PID_SYNDECAN_4_PATHWAY : chr [1:32] "RHOA" "ITGB1" "SDC4" "TNFRSF13B" ... #> $ PID_LPA4_PATHWAY%MSIGDB_C2%PID_LPA4_PATHWAY : chr [1:15] "PRKCE" "ADCY4" "ADCY3" "ADCY2" ... #> $ PID_NECTIN_PATHWAY%MSIGDB_C2%PID_NECTIN_PATHWAY : chr [1:30] "RAPGEF1" "TLN1" "PVRL3" "CRK" ... #> $ PID_AURORA_B_PATHWAY%MSIGDB_C2%PID_AURORA_B_PATHWAY : chr [1:39] "KIF2C" "TACC1" "VIM" "RHOA" ... #> $ PID_ARF6_TRAFFICKING_PATHWAY%MSIGDB_C2%PID_ARF6_TRAFFICKING_PATHWAY : chr [1:49] "IL2RA" "CTNNB1" "CTNND1" "CLTC" ... #> $ BIOCARTA_TGFB_PATHWAY%MSIGDB_C2%BIOCARTA_TGFB_PATHWAY : chr [1:19] "TGFBR1" "APC" "TGFBR2" "TAB1" ... #> $ PID_A6B1_A6B4_INTEGRIN_PATHWAY%MSIGDB_C2%PID_A6B1_A6B4_INTEGRIN_PATHWAY : chr [1:46] "ITGB4" "LAMC2" "YWHAB" "LAMC1" ... #> $ PID_EPHB_FWD_PATHWAY%MSIGDB_C2%PID_EPHB_FWD_PATHWAY : chr [1:40] "CRK" "PIK3CA" "HRAS" "GRB2" ... #> $ PID_MYC_PATHWAY%MSIGDB_C2%PID_MYC_PATHWAY : chr [1:25] "CDKN2A" "AXIN1" "PML" "TRRAP" ... #> $ BIOCARTA_PLCE_PATHWAY%MSIGDB_C2%BIOCARTA_PLCE_PATHWAY : chr [1:12] "ADCY1" "RAP2B" "PRKAR1B" "PRKAR2B" ... #> $ PID_HIF1_TFPATHWAY%MSIGDB_C2%PID_HIF1_TFPATHWAY : chr [1:66] "SERPINE1" "EP300" "SMAD4" "SMAD3" ... #> $ PID_NFKAPPAB_ATYPICAL_PATHWAY%MSIGDB_C2%PID_NFKAPPAB_ATYPICAL_PATHWAY : chr [1:17] "NFKB1" "PIK3CA" "LCK" "SSPO" ... #> $ BIOCARTA_EPHA4_PATHWAY%MSIGDB_C2%BIOCARTA_EPHA4_PATHWAY : chr [1:10] "EPHA4" "FYN" "L1CAM" "ITGA1" ... #> $ PID_ERBB_NETWORK_PATHWAY%MSIGDB_C2%PID_ERBB_NETWORK_PATHWAY : chr [1:15] "BTC" "ERBB3" "ERBB2" "NRG1" ... #> $ PID_ENDOTHELIN_PATHWAY%MSIGDB_C2%PID_ENDOTHELIN_PATHWAY : chr [1:63] "RHOA" "HRAS" "PRKCE" "ADCY4" ... #> $ BIOCARTA_FREE_PATHWAY%MSIGDB_C2%BIOCARTA_FREE_PATHWAY : chr [1:10] "TNF" "NFKB1" "CXCL8" "RELA" ... #> $ BIOCARTA_CYTOKINE_PATHWAY%MSIGDB_C2%BIOCARTA_CYTOKINE_PATHWAY : chr [1:21] "TNF" "IL6" "IL5" "IL2" ... #> $ BIOCARTA_STRESS_PATHWAY%MSIGDB_C2%BIOCARTA_STRESS_PATHWAY : chr [1:25] "TNF" "NFKB1" "LTA" "ATF1" ... #> $ NABA_ECM_REGULATORS%MSIGDB_C2%NABA_ECM_REGULATORS : chr [1:237] "TIMP2" "TIMP3" "TIMP1" "TIMP4" ... #> [list output truncated] ``` Run FEDUP on sample data ``` r fedup_res <- runFedup(testGene, backgroundGene, pathwaysGMT) ``` View of output results table sorted by p-value ``` r print(fedup_res) #> pathway #> 1: OLFACTORY SIGNALING PATHWAY%REACTOME DATABASE ID RELEASE 74%381753 #> 2: SENSORY PERCEPTION OF SMELL%GOBP%GO:0007608 #> 3: SENSORY PERCEPTION OF CHEMICAL STIMULUS%GOBP%GO:0007606 #> 4: SENSORY PERCEPTION%GOBP%GO:0007600 #> 5: GPCRS, CLASS A RHODOPSIN-LIKE%WIKIPATHWAYS_20201110%WP455%HOMO SAPIENS #> --- #> 8076: KERATAN SULFATE METABOLIC PROCESS%GOBP%GO:0042339 #> 8077: CELLULAR EXTRAVASATION%GOBP%GO:0045123 #> 8078: MACROPHAGE ACTIVATION%GOBP%GO:0042116 #> 8079: APOPTOTIC PROCESS INVOLVED IN DEVELOPMENT%GOBP%GO:1902742 #> 8080: POSITIVE REGULATION OF PROTEIN IMPORT%GOBP%GO:1904591 #> size real_total real_pathway real_pathway_frac expected_total #> 1: 396 396 396 100.00000 15965 #> 2: 85 396 74 18.68687 15965 #> 3: 142 396 84 21.21212 15965 #> 4: 356 396 85 21.46465 15965 #> 5: 257 396 51 12.87879 15965 #> --- #> 8076: 32 396 0 0.00000 15965 #> 8077: 34 396 0 0.00000 15965 #> 8078: 35 396 0 0.00000 15965 #> 8079: 14 396 0 0.00000 15965 #> 8080: 30 396 0 0.00000 15965 #> expected_pathway expected_pathway_frac enrichment #> 1: 396 2.48042593 enriched #> 2: 85 0.53241466 enriched #> 3: 142 0.88944566 enriched #> 4: 356 2.22987786 enriched #> 5: 257 1.60977137 enriched #> --- #> 8076: 32 0.20043846 depleted #> 8077: 34 0.21296586 depleted #> 8078: 35 0.21922956 depleted #> 8079: 14 0.08769183 depleted #> 8080: 30 0.18791106 depleted #> real_pathway_gene pvalue fdr #> 1: OR11A1,OR8A1,OR8I2,OR52N1,OR52N5,OR52N4,... 0.000000e+00 0.000000e+00 #> 2: OR8A1,OR8I2,OR5D18,OR5D16,OR5D14,OR5D13,... 4.433425e-72 1.791104e-68 #> 3: OR8A1,OR8I2,OR5D18,OR5D16,OR5D14,OR5D13,... 3.293839e-71 8.871406e-68 #> 4: OR8A1,OR8I2,OR5D18,OR5D16,OR5D14,OR5D13,... 2.245400e-46 4.535708e-43 #> 5: OR11A1,OR6B1,OR6A2,OR2D2,OR2C1,OR2B6,... 5.717512e-26 9.239499e-23 #> --- #> 8076: 1.000000e+00 1.000000e+00 #> 8077: 1.000000e+00 1.000000e+00 #> 8078: 1.000000e+00 1.000000e+00 #> 8079: 1.000000e+00 1.000000e+00 #> 8080: 1.000000e+00 1.000000e+00 ``` ### Visualization Plot top pathway enrichment/depletion results ``` r fedup_enr <- head(fedup_res[with(fedup_res, which(enrichment == "enriched")),], 10) fedup_dep <- head(fedup_res[with(fedup_res, which(enrichment == "depleted")),], 10) fedup_plot <- rbind(fedup_enr, fedup_dep) fedup_plot$log10fdr <- -log10(fedup_plot$fdr + 1e-10) # log10-transform FDR for plotting fedup_plot$pathway <- gsub("\\%.*", "", fedup_plot$pathway) # clean pathway names plotDotPlot(df = fedup_plot, x_var = "log10fdr", y_var = "pathway", x_lab = "-log10(FDR)", fill_var = "enrichment", fill_lab = "Enrichment", size_var = "real_pathway_frac", size_lab = "Gene fraction") ``` ![](man/figures/README-plot_FEDUP-1.png)<!-- --> ## Versioning For the versions available, see the [tags on this repo](https://github.com/rosscm/FEDUP/tags). ## Shoutouts :sparkles:[**2020**](https://media.giphy.com/media/z9AUvhAEiXOqA/giphy.gif):sparkles: