Last updated: 2020-08-05

Checks: 6 1

Knit directory: HiCiPSC/

This reproducible R Markdown analysis was created with workflowr (version 1.4.0). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20190311) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Using absolute paths to the files within your workflowr project makes it difficult for you and others to run your code on a different machine. Change the absolute path(s) below to the suggested relative path(s) to make your code more reproducible.

absolute relative
/Users/ittaieres/HiCiPSC .

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility. The version displayed above was the version of the Git repository at the time these results were generated.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .DS_Store
    Ignored:    .Rhistory
    Ignored:    analysis/.DS_Store
    Ignored:    analysis/.Rhistory
    Ignored:    analysis/figure/
    Ignored:    code/.DS_Store
    Ignored:    data/.DS_Store
    Ignored:    data/TADs/.DS_Store
    Ignored:    data/TADs/Human_inter_30_KR_contact_domains/.DS_Store
    Ignored:    data/TADs/scripts/.DS_Store
    Ignored:    docs/.DS_Store
    Ignored:    docs/figure/.DS_Store
    Ignored:    output/.DS_Store

Untracked files:
    Untracked:  Rplot.jpeg
    Untracked:  Rplot001.jpeg
    Untracked:  Rplot002.jpeg
    Untracked:  Rplot003.jpeg
    Untracked:  Rplot004.jpeg
    Untracked:  Rplot005.jpeg
    Untracked:  Rplot006.jpeg
    Untracked:  Rplot007.jpeg
    Untracked:  Rplot008.jpeg
    Untracked:  Rplot009.jpeg
    Untracked:  Rplot010.jpeg
    Untracked:  Rplot011.jpeg
    Untracked:  Rplot012.jpeg
    Untracked:  Rplot013.jpeg
    Untracked:  Rplot014.jpeg
    Untracked:  Rplot015.jpeg
    Untracked:  Rplot016.jpeg
    Untracked:  Rplot017.jpeg
    Untracked:  Rplot018.jpeg
    Untracked:  Rplot019.jpeg
    Untracked:  Rplot020.jpeg
    Untracked:  Rplot021.jpeg
    Untracked:  Rplot022.jpeg
    Untracked:  Rplot023.jpeg
    Untracked:  Rplot024.jpeg
    Untracked:  Rplot025.jpeg
    Untracked:  Rplot026.jpeg
    Untracked:  Rplot027.jpeg
    Untracked:  Rplot028.jpeg
    Untracked:  Rplot029.jpeg
    Untracked:  Rplot030.jpeg
    Untracked:  Rplot031.jpeg
    Untracked:  Rplot032.jpeg
    Untracked:  Rplot033.jpeg
    Untracked:  Rplot034.jpeg
    Untracked:  Rplot035.jpeg
    Untracked:  Rplot036.jpeg
    Untracked:  Rplot037.jpeg
    Untracked:  Rplot038.jpeg
    Untracked:  Rplot039.jpeg
    Untracked:  Rplot040.jpeg
    Untracked:  Rplot041.jpeg
    Untracked:  Rplot042.jpeg
    Untracked:  Rplot043.jpeg
    Untracked:  Rplot044.jpeg
    Untracked:  Rplot045.jpeg
    Untracked:  Rplot046.jpeg
    Untracked:  Rplot047.jpeg
    Untracked:  Rplot048.jpeg
    Untracked:  Rplot049.jpeg
    Untracked:  Rplot050.jpeg
    Untracked:  Rplot051.jpeg
    Untracked:  Rplot052.jpeg
    Untracked:  Rplot053.jpeg
    Untracked:  Rplot054.jpeg
    Untracked:  Rplot055.jpeg
    Untracked:  Rplot056.jpeg
    Untracked:  Rplot057.jpeg
    Untracked:  Rplot058.jpeg
    Untracked:  Rplot059.jpeg
    Untracked:  Rplot060.jpeg
    Untracked:  Rplot061.jpeg
    Untracked:  Rplot062.jpeg
    Untracked:  Rplot063.jpeg
    Untracked:  Rplot064.jpeg
    Untracked:  Rplot065.jpeg
    Untracked:  Rplot066.jpeg
    Untracked:  Rplot067.jpeg
    Untracked:  Rplot068.jpeg
    Untracked:  Rplot069.jpeg
    Untracked:  Rplot070.jpeg
    Untracked:  Rplot071.jpeg
    Untracked:  Rplot072.jpeg
    Untracked:  Rplot073.jpeg
    Untracked:  Rplot074.jpeg
    Untracked:  Rplot075.jpeg
    Untracked:  Rplot076.jpeg
    Untracked:  Rplot077.jpeg
    Untracked:  Rplot078.jpeg
    Untracked:  Rplot079.jpeg
    Untracked:  Rplot080.jpeg
    Untracked:  Rplot081.jpeg
    Untracked:  Rplot082.jpeg
    Untracked:  Rplot083.jpeg
    Untracked:  Rplot084.jpeg
    Untracked:  Rplot085.jpeg
    Untracked:  Rplot086.jpeg
    Untracked:  Rplot087.jpeg
    Untracked:  Rplot088.jpeg
    Untracked:  Rplot089.jpeg
    Untracked:  Rplot090.jpeg
    Untracked:  Rplot091.jpeg
    Untracked:  Rplot092.jpeg
    Untracked:  Rplot093.jpeg
    Untracked:  Rplot094.jpeg
    Untracked:  Rplot095.jpeg
    Untracked:  Rplot096.jpeg
    Untracked:  Rplot097.jpeg
    Untracked:  Rplot098.jpeg
    Untracked:  Rplot099.jpeg
    Untracked:  Rplot100.jpeg
    Untracked:  Rplot101.jpeg
    Untracked:  Rplot102.jpeg
    Untracked:  Rplot103.jpeg
    Untracked:  Rplot104.jpeg
    Untracked:  Rplot105.jpeg
    Untracked:  Rplot106.jpeg
    Untracked:  Rplot107.jpeg
    Untracked:  Rplot108.jpeg
    Untracked:  Rplot109.jpeg
    Untracked:  Rplot110.jpeg
    Untracked:  Rplot111.jpeg
    Untracked:  Rplot112.jpeg
    Untracked:  Rplot113.jpeg
    Untracked:  Rplot114.jpeg
    Untracked:  Rplot115.jpeg
    Untracked:  Rplot116.jpeg
    Untracked:  Rplot117.jpeg
    Untracked:  Rplot118.jpeg
    Untracked:  Rplot119.jpeg
    Untracked:  Rplot120.jpeg
    Untracked:  Rplot121.jpeg
    Untracked:  Rplot122.jpeg
    Untracked:  Rplot123.jpeg
    Untracked:  Rplot124.jpeg
    Untracked:  Rplot125.jpeg
    Untracked:  Rplot126.jpeg
    Untracked:  Rplot127.jpeg
    Untracked:  Rplot128.jpeg
    Untracked:  Rplot129.jpeg
    Untracked:  Rplot130.jpeg
    Untracked:  Rplot131.jpeg
    Untracked:  Rplot132.jpeg
    Untracked:  Rplot133.jpeg
    Untracked:  Rplot134.jpeg
    Untracked:  Rplot135.jpeg
    Untracked:  Rplot136.jpeg
    Untracked:  Rplot137.jpeg
    Untracked:  Rplot138.jpeg
    Untracked:  Rplot139.jpeg
    Untracked:  Rplot140.jpeg
    Untracked:  Rplot141.jpeg
    Untracked:  Rplot142.jpeg
    Untracked:  Rplot143.jpeg
    Untracked:  Rplot144.jpeg
    Untracked:  Rplot145.jpeg
    Untracked:  Rplot146.jpeg
    Untracked:  Rplot147.jpeg
    Untracked:  Rplot148.jpeg
    Untracked:  Rplot149.jpeg
    Untracked:  Rplot150.jpeg
    Untracked:  Rplot151.jpeg
    Untracked:  Rplot152.jpeg
    Untracked:  Rplot153.jpeg
    Untracked:  Rplot154.jpeg
    Untracked:  Rplot155.jpeg
    Untracked:  Rplot156.jpeg
    Untracked:  Rplot157.jpeg
    Untracked:  Rplot158.jpeg
    Untracked:  Rplot159.jpeg
    Untracked:  Rplot160.jpeg
    Untracked:  Rplot161.jpeg
    Untracked:  Rplot162.jpeg
    Untracked:  Rplot163.jpeg
    Untracked:  Rplot164.jpeg
    Untracked:  Rplot165.jpeg
    Untracked:  Rplot166.jpeg
    Untracked:  Rplot167.jpeg
    Untracked:  Rplot168.jpeg
    Untracked:  Rplot169.jpeg
    Untracked:  Rplot170.jpeg
    Untracked:  Rplot171.jpeg
    Untracked:  Rplot172.jpeg
    Untracked:  Rplot173.jpeg
    Untracked:  Rplot174.jpeg
    Untracked:  Rplot175.jpeg
    Untracked:  Rplot176.jpeg
    Untracked:  Rplot177.jpeg
    Untracked:  Rplot178.jpeg
    Untracked:  Rplot179.jpeg
    Untracked:  Rplot180.jpeg
    Untracked:  Rplot181.jpeg
    Untracked:  Rplot182.jpeg
    Untracked:  Rplot183.jpeg
    Untracked:  Rplot184.jpeg
    Untracked:  Rplot185.jpeg
    Untracked:  Rplot186.jpeg
    Untracked:  Rplot187.jpeg
    Untracked:  Rplot188.jpeg
    Untracked:  Rplot189.jpeg
    Untracked:  Rplot190.jpeg
    Untracked:  Rplot191.jpeg
    Untracked:  Rplot192.jpeg
    Untracked:  Rplot193.jpeg
    Untracked:  Rplot194.jpeg
    Untracked:  Rplot195.jpeg
    Untracked:  Rplot196.jpeg
    Untracked:  Rplot197.jpeg
    Untracked:  Rplot198.jpeg
    Untracked:  Rplot199.jpeg
    Untracked:  Rplot200.jpeg
    Untracked:  Rplot201.jpeg
    Untracked:  Rplot202.jpeg
    Untracked:  Rplot203.jpeg
    Untracked:  Rplot204.jpeg
    Untracked:  Rplot205.jpeg
    Untracked:  Rplot206.jpeg
    Untracked:  Rplot207.jpeg
    Untracked:  Rplot208.jpeg
    Untracked:  Rplot209.jpeg
    Untracked:  Rplot210.jpeg
    Untracked:  Rplot211.jpeg
    Untracked:  Rplot212.jpeg
    Untracked:  Rplot213.jpeg
    Untracked:  Rplot214.jpeg
    Untracked:  Rplot215.jpeg
    Untracked:  Rplot216.jpeg
    Untracked:  Rplot217.jpeg
    Untracked:  Rplot218.jpeg
    Untracked:  Rplot219.jpeg
    Untracked:  Rplot220.jpeg
    Untracked:  Rplot221.jpeg
    Untracked:  Rplot222.jpeg
    Untracked:  Rplot223.jpeg
    Untracked:  Rplot224.jpeg
    Untracked:  Rplot225.jpeg
    Untracked:  Rplot226.jpeg
    Untracked:  Rplot227.jpeg
    Untracked:  Rplot228.jpeg
    Untracked:  Rplot229.jpeg
    Untracked:  Rplot230.jpeg
    Untracked:  Rplot231.jpeg
    Untracked:  Rplot232.jpeg
    Untracked:  Rplot233.jpeg
    Untracked:  Rplot234.jpeg
    Untracked:  Rplot235.jpeg
    Untracked:  Rplot236.jpeg
    Untracked:  Rplot237.jpeg
    Untracked:  Rplot238.jpeg
    Untracked:  Rplot239.jpeg
    Untracked:  Rplot240.jpeg
    Untracked:  Rplot241.jpeg
    Untracked:  Rplot242.jpeg
    Untracked:  Rplot243.jpeg
    Untracked:  Rplot244.jpeg
    Untracked:  Rplot245.jpeg
    Untracked:  Rplot246.jpeg
    Untracked:  Rplot247.jpeg
    Untracked:  Rplot248.jpeg
    Untracked:  Rplot249.jpeg
    Untracked:  Rplot250.jpeg
    Untracked:  Rplot251.jpeg
    Untracked:  Rplot252.jpeg
    Untracked:  Rplot253.jpeg
    Untracked:  Rplot254.jpeg
    Untracked:  Rplot255.jpeg
    Untracked:  Rplot256.jpeg
    Untracked:  Rplot257.jpeg
    Untracked:  Rplot258.jpeg
    Untracked:  Rplot259.jpeg
    Untracked:  Rplot260.jpeg
    Untracked:  Rplot261.jpeg
    Untracked:  Rplot262.jpeg
    Untracked:  Rplot263.jpeg
    Untracked:  Rplot264.jpeg
    Untracked:  Rplot265.jpeg
    Untracked:  Rplot266.jpeg
    Untracked:  Rplot267.jpeg
    Untracked:  Rplot268.jpeg
    Untracked:  Rplot269.jpeg
    Untracked:  Rplot270.jpeg
    Untracked:  Rplot271.jpeg
    Untracked:  Rplot272.jpeg
    Untracked:  Rplot273.jpeg
    Untracked:  Rplot274.jpeg
    Untracked:  Rplot275.jpeg
    Untracked:  Rplot276.jpeg
    Untracked:  Rplot277.jpeg
    Untracked:  Rplot278.jpeg
    Untracked:  Rplot279.jpeg
    Untracked:  Rplot280.jpeg
    Untracked:  Rplot281.jpeg
    Untracked:  Rplot282.jpeg
    Untracked:  Rplot283.jpeg
    Untracked:  Rplot284.jpeg
    Untracked:  Rplot285.jpeg
    Untracked:  Rplot286.jpeg
    Untracked:  Rplot287.jpeg
    Untracked:  Rplot288.jpeg
    Untracked:  Rplot289.jpeg
    Untracked:  Rplot290.jpeg
    Untracked:  Rplot291.jpeg
    Untracked:  Rplot292.jpeg
    Untracked:  Rplot293.jpeg
    Untracked:  Rplot294.jpeg
    Untracked:  Rplot295.jpeg
    Untracked:  Rplot296.jpeg
    Untracked:  Rplot297.jpeg
    Untracked:  Rplot298.jpeg
    Untracked:  Rplot299.jpeg
    Untracked:  Rplot300.jpeg
    Untracked:  Rplot301.jpeg
    Untracked:  Rplot302.jpeg
    Untracked:  Rplot303.jpeg
    Untracked:  Rplot304.jpeg
    Untracked:  S2A.jpeg
    Untracked:  S2B.jpeg
    Untracked:  code/mediation_test.R
    Untracked:  data/Chimp_orthoexon_extended_info.txt
    Untracked:  data/Human_orthoexon_extended_info.txt
    Untracked:  data/Meta_data.txt
    Untracked:  data/TADs/Arrowhead_individuals/
    Untracked:  data/TADs/CH.10kb.closest.panTro5
    Untracked:  data/TADs/CTCF.overlap.computer.sh
    Untracked:  data/TADs/CTCF/
    Untracked:  data/TADs/HC.10kb.closest.hg38
    Untracked:  data/TADs/Human_inter_30_KR_contact_domains_PT6/
    Untracked:  data/TADs/Rao/
    Untracked:  data/TADs/TopDom/
    Untracked:  data/TADs/deprecated/
    Untracked:  data/TADs/mega.bounds.intersect.c.sh
    Untracked:  data/TADs/mega.bounds.intersect.merge.sh
    Untracked:  data/TADs/mega.bounds.rao.sh
    Untracked:  data/TADs/mega.domains.bedtoolsc.sh
    Untracked:  data/TADs/mega.domains.rao.sh
    Untracked:  data/TADs/overlaps/
    Untracked:  data/TADs/overlaps_rao_style/
    Untracked:  data/TADs/rao.chimp.subsample.tester.sh
    Untracked:  data/chimp_lengths.txt
    Untracked:  data/counts_iPSC.txt
    Untracked:  data/epigenetic_enrichments/
    Untracked:  data/final.10kb.homer.df
    Untracked:  data/final.juicer.10kb.KR
    Untracked:  data/final.juicer.10kb.VC
    Untracked:  data/hic_gene_overlap/
    Untracked:  data/human_lengths.txt
    Untracked:  data/old_mediation_permutations/
    Untracked:  output/DC_regions.txt
    Untracked:  output/IEE.RPKM.RDS
    Untracked:  output/IEE_voom_object.RDS
    Untracked:  output/data.4.filtered.lm.QC
    Untracked:  output/data.4.fixed.init.LM
    Untracked:  output/data.4.fixed.init.QC
    Untracked:  output/data.4.init.LM
    Untracked:  output/data.4.init.QC
    Untracked:  output/data.4.lm.QC
    Untracked:  output/full.data.10.init.LM
    Untracked:  output/full.data.10.init.QC
    Untracked:  output/full.data.10.lm.QC
    Untracked:  output/full.data.annotations.RDS
    Untracked:  output/gene.hic.filt.KR.RDS
    Untracked:  output/gene.hic.filt.RDS
    Untracked:  output/gene.hic.filt.VC.RDS
    Untracked:  output/homer_mediation.rda
    Untracked:  output/juicer.IEE.RPKM.RDS
    Untracked:  output/juicer.IEE_voom_object.RDS
    Untracked:  output/juicer.filt.KR
    Untracked:  output/juicer.filt.KR.final
    Untracked:  output/juicer.filt.KR.lm
    Untracked:  output/juicer.filt.VC
    Untracked:  output/juicer.filt.VC.final
    Untracked:  output/juicer.filt.VC.lm
    Untracked:  output/juicer_mediation.rda
    Untracked:  output/mc_de.rds
    Untracked:  output/mc_de_homer.rds
    Untracked:  output/mc_de_juicer.rds
    Untracked:  output/mc_node.rds
    Untracked:  output/mc_node_homer.rds
    Untracked:  output/mc_node_juicer.rds
    Untracked:  ~/

Unstaged changes:
    Deleted:    analysis/alt_mediation.Rmd
    Modified:   analysis/enrichment.Rmd

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the R Markdown and HTML files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view them.

File Version Author Date Message
html ae99285 Ittai Eres 2020-08-05 Build site.
Rmd 37c244e Ittai Eres 2020-08-05 Update formatting for headers
html ae66f6e Ittai Eres 2019-06-27 Build site.
Rmd a15345d Ittai Eres 2019-06-27 Update index and corresponding figure references to match final version of paper.
html 5fda2d6 Ittai Eres 2019-06-25 Build site.
html 2ec8067 Ittai Eres 2019-05-09 Build site.
html b69c73d Ittai Eres 2019-05-05 Build site.
Rmd 2419813 Ittai Eres 2019-05-05 Update all files.
html ff886b1 Ittai Eres 2019-04-30 Build site.
html b7d82fc Ittai Eres 2019-04-30 Build site.
Rmd 8380e8b Ittai Eres 2019-04-30 Add variety of juicer analyses into website files.

Preparing the gene expression data

Here I read in a dataframe of counts summarized at the gene-level, then do some pre-processing and normalization to obtain a voom object to later run linear modeling analyses on. This is identical code to what was done in the case with HOMER, since this gene expression analysis is completely orthogonal to the Hi-C normalization and significance calling schemes employed.

#Read in counts data, create DGEList object out of them and convert to log counts per million (CPM). Also read in metadata.
setwd("/Users/ittaieres/HiCiPSC")
counts <- fread("data/counts_iPSC.txt", header=TRUE, data.table=FALSE, stringsAsFactors = FALSE, na.strings=c("NA",""))
colnames(counts) <- c("genes", "C-3649", "G-3624", "H-3651", "D-40300", "F-28834", "B-28126", "E-28815", "A-21792")
rownames(counts) <- counts$genes
counts <- counts[,-1]
dge <- DGEList(counts, genes=rownames(counts))

#Now, convert counts into RPKM to account for gene length differences between species. First load in and re-organize metadata, then the gene lengths for both species, and then the function to convert counts to RPKM.
meta_data <- fread("data/Meta_data.txt", sep="\t",stringsAsFactors = FALSE,header=T,na.strings=c("NA",""))
meta_data$fullID <- c("C-3649", "H-3651", "B-28126", "D-40300", "G-3624", "A-21792", "E-28815", "F-28834")
ord <- data.frame(fullID=colnames(counts)) #Pull order of samples from expression object
left_join(ord, meta_data, by="fullID") -> group_ref #left join meta data to this to make sure sample IDs correct
Warning: Column `fullID` joining factor and character vector, coercing into
character vector
#Read in human and chimp gene lengths for the RPKM function:
human_lengths<- fread("data/human_lengths.txt", sep="\t",stringsAsFactors = FALSE,header=T,na.strings=c("NA",""))
chimp_lengths<- fread("data/chimp_lengths.txt", sep="\t",stringsAsFactors = FALSE,header=T,na.strings=c("NA",""))

#The function for RPKM conversion.
vRPKM <- function(expr.obj,chimp_lengths,human_lengths,meta4) {
  if (is.null(expr.obj$E)) {
    meta4%>%filter(SP=="C" & fullID %in% colnames(counts))->chimp_meta
    meta4%>%filter(SP=="H" & fullID %in% colnames(counts))->human_meta
    
    #using RPKM function:
    #Put genes in correct order:
    expr.obj$genes %>%select(Geneid=genes)%>%
      left_join(.,chimp_lengths,by="Geneid")%>%select(Geneid,ch.length)->chlength
    
    expr.obj$genes %>%select(Geneid=genes)%>%
      left_join(.,human_lengths,by="Geneid")%>%select(Geneid,hu.length)->hulength
    
    #Chimp RPKM
    expr.obj$genes$Length<-(chlength$ch.length)
    RPKMc=rpkm(expr.obj,normalized.lib.sizes=TRUE, log=TRUE)
    RPKMc[,colnames(RPKMc) %in% chimp_meta$fullID]->rpkm_chimp
    
    #Human RPKM
    expr.obj$genes$Length<-hulength$hu.length
    RPKMh=rpkm(expr.obj,normalized.lib.sizes=TRUE, log=TRUE)
    RPKMh[,colnames(RPKMh) %in% human_meta$fullID]->rpkm_human
    
    
    cbind(rpkm_chimp,rpkm_human)->allrpkm
    expr.obj$E <- allrpkm
    return(expr.obj)
    
  }
  else {
    #Pull out gene order from voom object and add in gene lengths from feature counts file
    #Put genes in correct order:
    expr.obj$genes %>%select(Geneid=genes)%>%
      left_join(.,chimp_lengths,by="Geneid")%>%select(Geneid,ch.length)->chlength
    
    expr.obj$genes %>%select(Geneid=genes)%>%
      left_join(.,human_lengths,by="Geneid")%>%select(Geneid,hu.length)->hulength
    
    
    #Filter meta data to be able to separate human and chimp
    meta4%>%filter(SP=="C")->chimp_meta
    meta4%>%filter(SP=="H")->human_meta
    
    #Pull out the expression data in cpm to convert to RPKM
    expr.obj$E->forRPKM
    
    forRPKM[,colnames(forRPKM) %in% chimp_meta$fullID]->rpkm_chimp
    forRPKM[,colnames(forRPKM) %in% human_meta$fullID]->rpkm_human
    
    #Make log2 in KB:
    row.names(chlength)=chlength$Geneid
    chlength %>% select(-Geneid)->chlength
    as.matrix(chlength)->chlength
    
    row.names(hulength)=hulength$Geneid
    hulength %>% select(-Geneid)->hulength
    as.matrix(hulength)->hulength
    
    log2(hulength/1000)->l2hulength
    log2(chlength/1000)->l2chlength
    
    
    #Subtract out log2 kb:
    sweep(rpkm_chimp, 1,l2chlength,"-")->chimp_rpkm
    sweep(rpkm_human, 1,l2hulength,"-")->human_rpkm
    
    colnames(forRPKM)->column_order
    
    cbind(chimp_rpkm,human_rpkm)->vRPKMS
    #Put RPKMS back into the VOOM object:
    expr.obj$E <- (vRPKMS[,colnames(vRPKMS) %in% column_order])
    return(expr.obj)
  }
}

dge <- vRPKM(dge, chimp_lengths, human_lengths, group_ref) #Normalize via log2 RPKM.

#A typical low-expression filtering step: use default prior count adding (0.25), and filtering out anything that has fewer than half the individuals within each species having logCPM less than 1.5 (so want 2 humans AND 2 chimps with log2CPM >= 1.5)
lcpms <- cpm(dge$counts, log=TRUE) #Obtain log2CPM!
good.chimps <- which(rowSums(lcpms[,1:4]>=1.5)>=2) #Obtain good chimp indices
good.humans <- which(rowSums(lcpms[,5:8]>=1.5)>=2) #Obtain good human indices
filt <- good.humans[which(good.humans %in% good.chimps)] #Subsets us down to a solid 11,292 genes--will go for a similar percentage with RPKM cutoff vals! (25.6% of total)

#Repeat filtering step, this time on RPKMs. 0.4 was chosen as a cutoff as it obtains close to the same results as 1.5 lcpm (in terms of percentage of genes retained)
good.chimps <- which(rowSums(dge$E[,1:4]>=0.4)>=2) #Obtain good chimp indices.
good.humans <- which(rowSums(dge$E[,5:8]>=0.4)>=2) #Obtain good human indices.
RPKM_filt <- good.humans[which(good.humans %in% good.chimps)] #Still leaves us with 11,946 genes (27.1% of total)

#Do the actual filtering.
dge_filt <- dge[RPKM_filt,]
dge_filt$E <- dge$E[RPKM_filt,]
dge_filt$counts <- dge$counts[RPKM_filt,]
dge_final <- calcNormFactors(dge_filt, method="TMM") #Calculate normalization factors with trimmed mean of M-values (TMM).
dge_norm <- calcNormFactors(dge, method="TMM") #Calculate normalization factors with TMM on dge before filtering out lowly expressed genes, for normalization visualization.

#Quick visualization of the filtering I've just performed:
col <- brewer.pal(8, "Paired")
par(mfrow=c(1,2))
plot(density(dge$E[,1]), col=col[1], lwd=2, ylim=c(0,0.35), las=2, 
     main="", xlab="")
title(main="A. Raw data", xlab="Log-RPKM")
abline(v=1, lty=3)
for (i in 2:8){
 den <- density(dge$E[,i])
 lines(den$x, den$y, col=col[i], lwd=2)
}
legend("topright", colnames(dge$E[,1:8]), text.col=col, bty="n")

plot(density(dge_final$E[,1]), col=col[1], lwd=2, ylim=c(0,0.35), las=2, 
     main="", xlab="")
title(main="B. Filtered data", xlab="Log-RPKM")
abline(v=1, lty=3)
for (i in 2:8){
   den <- density(dge_final$E[,i])
   lines(den$x, den$y, col=col[i], lwd=2)
}
legend("topright", colnames(dge_final[,1:8]), text.col=col, bty="n")

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
#Quick visualization of the normalization on the whole set of genes.
col <- brewer.pal(8, "Paired")
raw <- as.data.frame(dge$E[,1:8])
normed <- as.data.frame(dge_norm$E[,1:8])
par(mfrow=c(1,2))
boxplot(raw, las=2, col=col, main="")
title(main="Unnormalized data",ylab="Log-RPKM")
boxplot(normed, las=2, col=col, main="")
title(main="Normalized data",ylab="Log-RPKM")

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
#Now, observe normalization on the filtered set of genes.
col <- brewer.pal(8, "Paired")
raw <- as.data.frame(dge_filt$E[,1:8])
normed <- as.data.frame(dge_final$E[,1:8])
par(mfrow=c(1,2))
boxplot(raw, las=2, col=col, main="")
title(main="Unnormalized data",ylab="Log-RPKM")
boxplot(normed, las=2, col=col, main="")
title(main="Normalized data",ylab="Log-RPKM")

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
#Now, do some quick MDS plotting to make sure this expression data separates out species properly.
species <- c("C", "C", "C", "C", "H", "H", "H", "H")
color <- c(rep("red", 4), rep("blue", 4))
par(mfrow=c(1,1))
plotMDS(dge_final$E[,1:8], labels=species, col=color, main="MDS Plot") #Shows separation of the species along the logFC dimension representing the majority of the variance--orthogonal check to PCA, and looks great!

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
###Now, apply voom to get quality weights.
meta.exp.data <- data.frame("SP"=c("C", "C", "C", "C", "H", "H", "H", "H"), "SX"=c("M","M" ,"F","F","F", "M","M","F"))
SP <- factor(meta.exp.data$SP,levels = c("H","C"))
SX <- factor(meta.exp.data$SX, levels=c("M", "F"))
exp.design <- model.matrix(~0+SP+SX)#(~1+meta.exp.data$SP+meta.exp.data$SX)
colnames(exp.design) <- c("Human", "Chimp", "Sex")
weighted.data <- voom(dge_final, exp.design, plot=TRUE, normalize.method = "cyclicloess")

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
##Obtain rest of LM results, with particular eye to DE table!
vfit <- lmFit(weighted.data, exp.design)
efit <- eBayes(vfit)

mycon <- makeContrasts(HvC = Human-Chimp, levels = exp.design)
diff_species <- contrasts.fit(efit, mycon)
finalfit <- eBayes(diff_species)
detable <- topTable(finalfit, coef = 1, adjust.method = "BH", number = Inf, sort.by="none")
plotSA(efit, main="Final model: Mean−variance trend")

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
#Get lists of the DE and non-DE genes so I can run separate analyses on them at any point.
DEgenes <- detable$genes[which(detable$adj.P.Val<=0.05)]
nonDEgenes <- detable$genes[-which(detable$adj.P.Val<=0.05)]

#Rearrange RPKM and weight columns in voom object to be similar to the rest of my setup throughout in other dataframes.
weighted.data$E <- weighted.data$E[,c(8, 6, 1, 4, 7, 5, 2, 3)]
weighted.data$weights <- weighted.data$weights[,c(8, 6, 1, 4, 7, 5, 2, 3)]
RPKM <- weighted.data$E
rownames(RPKM) <- NULL #Just to match what I had before on midway2, about to write this out.
saveRDS(RPKM, file="output/juicer.IEE.RPKM.RDS") #Should be identical to non-juicer one, but just in case.
saveRDS(weighted.data, file="output/juicer.IEE_voom_object.RDS") #write this object out, can then be read in with readRDS.

Overlap Between Juicer Data and Orthogonal Gene Expression Data

In this section I find the overlap between the 2 final filtered set of Hi-C Juicer significant hits and genes picked up on by an orthogonal RNA-seq experiment in the same set of cell lines. I utilize an in-house curated set of orthologous genes between humans and chimpanzees. Given that the resolution of the data is 10kb, I choose a simple and conservative approach and use a 1-nucleotide interval at the start of each gene as a proxy for the promoter. I then take a conservative pass and only use genes that had direct overlap with a bin from the Hi-C significant hits data, with more motivation explained below.

#Now, read in filtered data from linear_modeling_QC.Rmd.
data.KR <- fread("output/juicer.filt.KR.final", header=TRUE, data.table=FALSE, stringsAsFactors = FALSE, showProgress=FALSE)
data.VC <- fread("output/juicer.filt.VC.final", header=TRUE, data.table=FALSE, stringsAsFactors = FALSE, showProgress = FALSE)
#Quick VC df fix to make function work right (some col names have changed due to paper visualization):
data.VC$H1 <- gsub("Chr. ", "chr", data.VC$H1)
data.VC$H2 <- gsub("Chr. ", "chr", data.VC$H2)
data.VC$Hchr <- gsub("Chr. ", "chr", data.VC$Hchr)

meta.data <- data.frame("SP"=c("H", "H", "C", "C", "H", "H", "C", "C"), "SX"=c("F", "M", "M", "F", "M", "F", "M", "F"), "Batch"=c(1, 1, 1, 1, 2, 2, 2, 2))

#####GENE Hi-C Hit overlap: Already have hgenes and cgenes properly formatted and in the necessary folder from the HOMER version of this analysis. See HOMER version of gene_expression analysis for more details on how I obtained orthologous genes.
#Now, what I will need to do is prep bed files from the 2 sets of filtered data for each bin, in order to run bedtools-closest on them with the human and chimp gene data. This is for getting each bin's proximity to TSS by overlapping with the dfs I was just referring to (humgenes and chimpgenes). In the end this set of bedfiles is fairly useless, because really it would be preferable to get rid of duplicates so that I can merely group_by on a given bin afterwards and left_join as necessary. So somewhat deprecated, but I keep it here still:
hbin1KR <- data.frame(chr=data.KR$Hchr, start=as.numeric(gsub("chr.*-", "", data.KR$H1)), end=as.numeric(gsub("chr.*-", "", data.KR$H1))+10000)
hbin2KR <- data.frame(chr=data.KR$Hchr, start=as.numeric(gsub("chr.*-", "", data.KR$H2)), end=as.numeric(gsub("chr.*-", "", data.KR$H2))+10000)
cbin1KR <- data.frame(chr=data.KR$Cchr, start=as.numeric(gsub("chr.*-", "", data.KR$C1)), end=as.numeric(gsub("chr.*-", "", data.KR$C1))+10000)
cbin2KR <- data.frame(chr=data.KR$Cchr, start=as.numeric(gsub("chr.*-", "", data.KR$C2)), end=as.numeric(gsub("chr.*-", "", data.KR$C2))+10000)
hbin1VC <- data.frame(chr=data.VC$Hchr, start=as.numeric(gsub("chr.*-", "", data.VC$H1)), end=as.numeric(gsub("chr.*-", "", data.VC$H1))+10000)
hbin2VC <- data.frame(chr=data.VC$Hchr, start=as.numeric(gsub("chr.*-", "", data.VC$H2)), end=as.numeric(gsub("chr.*-", "", data.VC$H2))+10000)
cbin1VC <- data.frame(chr=data.VC$Cchr, start=as.numeric(gsub("chr.*-", "", data.VC$C1)), end=as.numeric(gsub("chr.*-", "", data.VC$C1))+10000)
cbin2VC <- data.frame(chr=data.VC$Cchr, start=as.numeric(gsub("chr.*-", "", data.VC$C2)), end=as.numeric(gsub("chr.*-", "", data.VC$C2))+10000)


#In most analyses, it will make more sense to have a single bed file for both sets of bins, and remove all duplicates. I create that here:
hbinsKR <- rbind(hbin1KR[!duplicated(hbin1KR),], hbin2KR[!duplicated(hbin2KR),])
hbinsKR <- hbinsKR[!duplicated(hbinsKR),]
cbinsKR <- rbind(cbin1KR[!duplicated(cbin1KR),], cbin2KR[!duplicated(cbin2KR),])
cbinsKR <- cbinsKR[!duplicated(cbinsKR),]
hbinsVC <- rbind(hbin1VC[!duplicated(hbin1VC),], hbin2VC[!duplicated(hbin2VC),])
hbinsVC <- hbinsVC[!duplicated(hbinsVC),]
cbinsVC <- rbind(cbin1VC[!duplicated(cbin1VC),], cbin2VC[!duplicated(cbin2VC),])
cbinsVC <- cbinsVC[!duplicated(cbinsVC),]

#Now, write all of these files out for analysis with bedtools.
options(scipen=999) #Don't want any scientific notation in these BED files, will mess up some bedtools analyses at times
write.table(hbin1KR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbin1KR.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(hbin2KR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbin2KR.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(cbin1KR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbin1KR.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(cbin2KR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbin2KR.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(hbinsKR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbinsKR.bed", quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE)
write.table(cbinsKR, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbinsKR.bed", quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE)

write.table(hbin1VC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbin1VC.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(hbin2VC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbin2VC.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(cbin1VC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbin1VC.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(cbin2VC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbin2VC.bed", quote = FALSE, sep="\t", row.names = FALSE, col.names=FALSE)
write.table(hbinsVC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/hbinsVC.bed", quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE)
write.table(cbinsVC, "data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/unsorted/cbinsVC.bed", quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE)
options(scipen=0)

#Read in new, simpler bedtools closest files for genes. This is after running two commands, after sorting the files w/ sort -k1,1 -k2,2n in.bed > out.bed:
#bedtools closest -D a -a cgenes.sorted.bed -b cbins.sorted.bed > cgene.hic.overlap
#bedtools closest -D a -a hgenes.sorted.bed -b hbins.sorted.bed > hgene.hic.overlap
hgene.hic.KR <- fread("data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/hgene.hic.KR.overlap", header=FALSE, stringsAsFactors = FALSE, data.table=FALSE)
cgene.hic.KR <- fread("data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/cgene.hic.KR.overlap", header=FALSE, stringsAsFactors = FALSE, data.table=FALSE)

hgene.hic.VC <- fread("data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/hgene.hic.VC.overlap", header=FALSE, stringsAsFactors = FALSE, data.table=FALSE)
cgene.hic.VC <- fread("data/hic_gene_overlap/juicer/juicer_10kb_filt_overlaps/cgene.hic.VC.overlap", header=FALSE, stringsAsFactors = FALSE, data.table=FALSE)

#Visualize the overlap of genes with bins and see how many genes we get back! Left out here b/c not super necessary, but code is collapsed here:
# hum.genelap <- data.frame(overlap=seq(0, 100000, 1000), perc.genes = NA, tot.genes=NA)
# for(row in 1:nrow(hum.genelap)){
#   hum.genelap$perc.genes[row] <- sum(abs(hgene.hic$V10)<=hum.genelap$overlap[row])/length(hgene.hic$V10)
#   hum.genelap$tot.genes[row] <- sum(abs(hgene.hic$V10)<=hum.genelap$overlap[row])
# }
# 
# c.genelap <- data.frame(overlap=seq(0, 100000, 1000), perc.genes=NA, tot.genes=NA)
# for(row in 1:nrow(c.genelap)){
#   c.genelap$perc.genes[row] <- sum(abs(cgene.hic$V10)<=c.genelap$overlap[row])/length(cgene.hic$V10)
#   c.genelap$tot.genes[row] <- sum(abs(cgene.hic$V10)<=c.genelap$overlap[row])
# }
# c.genelap$type <- "chimp"
# hum.genelap$type <- "human"

#Examine what the potential gains are here if we are more lenient about the overlap/closeness to a TSS...
#ggoverlap <- rbind(hum.genelap, c.genelap)
#ggplot(data=ggoverlap) + geom_line(aes(x=overlap, y=perc.genes*100, color=type)) + ggtitle("Percent of Total Genes Picked Up | Min. Distance from TSS") + xlab("Distance from TSS") + ylab("Percentage of genes in ortho exon trios file (~44k)") + scale_color_discrete(guide=guide_legend(title="Species")) + coord_cartesian(xlim=c(0, 30000)) + scale_x_continuous(breaks=seq(0, 30000, 5000))
#ggplot(data=ggoverlap) + geom_line(aes(x=overlap, y=tot.genes, color=type)) + ggtitle("Total # Genes Picked Up | Min. Distance from TSS") + xlab("Distance from TSS") + ylab("Total # of Genes Picked up On (of ~44k)") + scale_color_discrete(guide=guide_legend(title="Species")) + coord_cartesian(xlim=c(0, 30000)) + scale_x_continuous(breaks=seq(0, 30000, 5000))


#Start with a conservative pass--only take those genes that had an actual overlap with a bin, not ones that were merely close to one. Allowing some leeway to include genes that are within 1kb, 2kb, 3kb etc. of a Hi-C bin adds an average of ~800 genes per 1kb. We can also examine the distribution manually to motivate this decision:
quantile(abs(hgene.hic.KR$V10), probs=seq(0, 1, 0.025))
       0%      2.5%        5%      7.5%       10%     12.5%       15% 
      0.0       0.0       0.0       0.0       1.0       1.0     111.2 
    17.5%       20%     22.5%       25%     27.5%       30%     32.5% 
   2801.8    5837.6    9170.0   12712.0   16555.3   20657.4   25122.3 
      35%     37.5%       40%     42.5%       45%     47.5%       50% 
  30415.8   35854.0   41976.0   48686.7   56315.6   64775.6   74086.0 
    52.5%       55%     57.5%       60%     62.5%       65%     67.5% 
  84493.0   96003.4  109333.4  124395.4  141705.5  161762.6  185550.4 
      70%     72.5%       75%     77.5%       80%     82.5%       85% 
 213137.8  245623.6  284011.0  326249.0  378968.0  446350.3  531628.2 
    87.5%       90%     92.5%       95%     97.5%      100% 
 644495.0  813443.4 1066258.7 1411418.6 2117706.0 8009993.0 
quantile(abs(cgene.hic.KR$V10), probs=seq(0, 1, 0.025))
       0%      2.5%        5%      7.5%       10%     12.5%       15% 
      0.0       0.0       0.0       0.0       1.0       1.0      35.8 
    17.5%       20%     22.5%       25%     27.5%       30%     32.5% 
   2576.0    5543.2    9001.0   12613.0   16346.1   20659.2   25304.9 
      35%     37.5%       40%     42.5%       45%     47.5%       50% 
  30415.0   36090.5   42336.4   49350.3   57203.8   65644.9   74758.0 
    52.5%       55%     57.5%       60%     62.5%       65%     67.5% 
  85634.5   97537.4  110882.8  125779.8  143152.5  163577.6  187829.8 
      70%     72.5%       75%     77.5%       80%     82.5%       85% 
 216384.2  248610.8  288103.0  330921.3  384602.4  448229.0  536251.6 
    87.5%       90%     92.5%       95%     97.5%      100% 
 645908.0  806354.8 1046000.8 1398275.0 2071010.3 7529283.0 
quantile(abs(hgene.hic.VC$V10), probs=seq(0, 1, 0.025))
       0%      2.5%        5%      7.5%       10%     12.5%       15% 
      0.0       0.0       0.0       0.0       0.0     748.5    2939.6 
    17.5%       20%     22.5%       25%     27.5%       30%     32.5% 
   5319.8    8011.8   10835.5   13955.0   16964.2   20339.0   24054.6 
      35%     37.5%       40%     42.5%       45%     47.5%       50% 
  28368.6   33051.5   38083.0   43953.0   50389.2   57444.3   64971.0 
    52.5%       55%     57.5%       60%     62.5%       65%     67.5% 
  73526.5   83118.4   94055.9  106232.2  119220.5  135994.6  153922.6 
      70%     72.5%       75%     77.5%       80%     82.5%       85% 
 175048.2  199192.6  228645.0  261707.1  302957.2  351916.0  413198.4 
    87.5%       90%     92.5%       95%     97.5%      100% 
 501881.5  641720.2  865347.1 1205121.8 1836870.5 6456300.0 
quantile(abs(cgene.hic.VC$V10), probs=seq(0, 1, 0.025))
       0%      2.5%        5%      7.5%       10%     12.5%       15% 
      0.0       0.0       0.0       0.0       0.0     512.5    2649.0 
    17.5%       20%     22.5%       25%     27.5%       30%     32.5% 
   5010.2    7760.8   10585.5   13538.0   16670.4   20081.6   24187.6 
      35%     37.5%       40%     42.5%       45%     47.5%       50% 
  28398.8   33210.5   38408.6   44155.4   50593.8   57687.0   65471.0 
    52.5%       55%     57.5%       60%     62.5%       65%     67.5% 
  73931.1   83568.4   94835.9  107072.8  120344.5  136233.2  154759.7 
      70%     72.5%       75%     77.5%       80%     82.5%       85% 
 176847.0  202064.3  230537.0  264555.9  303717.0  353338.0  415156.6 
    87.5%       90%     92.5%       95%     97.5%      100% 
 501151.5  629124.0  840981.2 1183185.6 1767476.4 6500471.0 
#So it looks as though we pick up on approximately 10% of 44k genes (~4.4k)

#Note I looked at proportion of overlap with DE and with non-DE genes just for curiosity, and roughly 66% of the DE genes have overlap with a Hi-C bin while roughly 70% of the non-DE genes do. Since this result isn't particularly interesting I have collapsed that analysis here.
#Also are interested in seeing how this differs for DE and non-DE genes.
sum(hgene.hic.KR$V10==0&(hgene.hic.KR$V4 %in% DEgenes)) #263 genes
[1] 235
sum(hgene.hic.KR$V10==0&(hgene.hic.KR$V4 %in% nonDEgenes)) #1011 genes
[1] 1039
sum(hgene.hic.KR$V10==0&(!hgene.hic.KR$V4 %in% DEgenes)&(!hgene.hic.KR$V4 %in% nonDEgenes)) #Checking which genes have direct overlap with bins, but were not picked up on in our RNAseq data. 2717
[1] 2717
sum(hgene.hic.VC$V10==0&(hgene.hic.VC$V4 %in% DEgenes)) #334 genes
[1] 299
sum(hgene.hic.VC$V10==0&(hgene.hic.VC$V4 %in% nonDEgenes)) #1296 genes
[1] 1331
sum(hgene.hic.VC$V10==0&(!hgene.hic.VC$V4 %in% DEgenes)&(!hgene.hic.VC$V4 %in% nonDEgenes)) #Checking which genes have direct overlap with bins, but were not picked up on in our RNAseq data. 3441
[1] 3441

Linear Modeling Annotation

In this next section I simply add information obtained from linear modeling on the Hi-C interaction frequencies to the appropriate genes having overlap with Hi-C bins. Because one Hi-C bin frequently shows up many times in the data, this means I must choose some kind of summary for Hi-C contact frequencies and linear modeling annotations for each gene. I toy with a variety of these summaries here, including choosing the minimum FDR contact, the maximum beta contact, the upstream contact, or summarizing all a bin’s contacts with the weighted Z-combine method or median FDR values.

hgene.hic.overlap.KR <- filter(hgene.hic.KR, V10==0) #Still leaves a solid ~4k genes.
cgene.hic.overlap.KR <- filter(cgene.hic.KR, V10==0) #Still leaves a solid ~4k genes.

hgene.hic.overlap.VC <- filter(hgene.hic.VC, V10==0) #Still leaves a solid ~5k genes.
cgene.hic.overlap.VC <- filter(cgene.hic.VC, V10==0) #Still leaves a solid ~5k genes.

#Add a column to both dfs indicating where along a bin the gene in question is found (from 0-10k):
hgene.hic.overlap.KR$bin_pos <- abs(hgene.hic.overlap.KR$V8-hgene.hic.overlap.KR$V2)
cgene.hic.overlap.KR$bin_pos <- abs(cgene.hic.overlap.KR$V8-cgene.hic.overlap.KR$V2)

hgene.hic.overlap.VC$bin_pos <- abs(hgene.hic.overlap.VC$V8-hgene.hic.overlap.VC$V2)
cgene.hic.overlap.VC$bin_pos <- abs(cgene.hic.overlap.VC$V8-cgene.hic.overlap.VC$V2)

#Rearrange columns and create another column of the bin ID.
hgene.hic.overlap.KR <- hgene.hic.overlap.KR[,c(4, 7:9, 6, 11, 1:2)]
hgene.hic.overlap.KR$HID <- paste(hgene.hic.overlap.KR$V7, hgene.hic.overlap.KR$V8, sep="-")
cgene.hic.overlap.KR <- cgene.hic.overlap.KR[,c(4, 7:9, 6, 11, 1:2)]
cgene.hic.overlap.KR$CID <- paste(cgene.hic.overlap.KR$V7, cgene.hic.overlap.KR$V8, sep="-")
colnames(hgene.hic.overlap.KR) <- c("genes", "HiC_chr", "H1start", "H1end", "Hstrand", "bin_pos", "genechr", "genepos", "HID")
colnames(cgene.hic.overlap.KR) <- c("genes", "HiC_chr", "C1start", "C1end", "Cstrand", "bin_pos", "genechr", "genepos", "CID")

hgene.hic.overlap.VC <- hgene.hic.overlap.VC[,c(4, 7:9, 6, 11, 1:2)]
hgene.hic.overlap.VC$HID <- paste(hgene.hic.overlap.VC$V7, hgene.hic.overlap.VC$V8, sep="-")
cgene.hic.overlap.VC <- cgene.hic.overlap.VC[,c(4, 7:9, 6, 11, 1:2)]
cgene.hic.overlap.VC$CID <- paste(cgene.hic.overlap.VC$V7, cgene.hic.overlap.VC$V8, sep="-")
colnames(hgene.hic.overlap.VC) <- c("genes", "HiC_chr", "H1start", "H1end", "Hstrand", "bin_pos", "genechr", "genepos", "HID")
colnames(cgene.hic.overlap.VC) <- c("genes", "HiC_chr", "C1start", "C1end", "Cstrand", "bin_pos", "genechr", "genepos", "CID")


#Before extracting some data from the data.KR and data.VC dfs, need to reformat their H1, H2, C1, and C2 columns to include chromosome (this was how homer data already was formatted so didn't have to think about it there)
data.KR$H1 <- paste(data.KR$Hchr, data.KR$H1, sep="-")
data.KR$H2 <- paste(data.KR$Hchr, data.KR$H2, sep="-")
data.VC$H1 <- paste(data.VC$Hchr, data.VC$H1, sep="-")
data.VC$H2 <- paste(data.VC$Hchr, data.VC$H2, sep="-")
data.KR$C1 <- paste(data.KR$Cchr, data.KR$C1, sep="-")
data.KR$C2 <- paste(data.KR$Cchr, data.KR$C2, sep="-")
data.VC$C1 <- paste(data.VC$Cchr, data.VC$C1, sep="-")
data.VC$C2 <- paste(data.VC$Cchr, data.VC$C2, sep="-")


hbindf.KR <- select(data.KR, "H1", "H2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "Hdist")
names(hbindf.KR) <- c("HID", "HID2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "distance") #I have confirmed that all the HID2s are higher numbered coordinates than the HID1s, the only instance in which this isn't the case is when the two bins are identical (this should have been filtered out long before now).

hbindf.VC <- select(data.VC, "H1", "H2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "Hdist")
names(hbindf.VC) <- c("HID", "HID2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "distance")

#This step is unnecessary in this paradigm as there are no hits like this, but keep it in here for the premise's sake:
hbindf.KR <- hbindf.KR[(which(hbindf.KR$distance!=0)),] #Removes pairs where the same bin represents both mates. These instances occur exclusively when liftOver of the genomic coordinates from one species to another, and the subsequent rounding to the nearest 10kb, results in a contact between adjacent bins in one species being mapped as a contact between the same bin in the other species. Because there are less than 50 instances of this total in the dataset I simply remove it here without further worry.
hbindf.VC <- hbindf.VC[(which(hbindf.VC$distance!=0)),]

#For explanations about the motivations and intents behind code in the rest of this chunk, please see the same file for the HOMER analysis.
group_by(hbindf.KR, HID) %>% summarise(DS_bin=HID2[which.min(distance)], DS_FDR=sp_BH_pval[which.min(distance)], DS_dist=distance[which.min(distance)]) -> hbin1.downstream.KR
group_by(hbindf.KR, HID2) %>% summarise(US_bin=HID[which.min(distance)], US_FDR=sp_BH_pval[which.min(distance)], US_dist=distance[which.min(distance)]) -> hbin2.upstream.KR
colnames(hbin2.upstream.KR) <- c("HID", "US_bin", "US_FDR", "US_dist")
Hstreams.KR <- full_join(hbin1.downstream.KR, hbin2.upstream.KR, by="HID")
hbindf.KR.flip <- hbindf.KR[,c(2, 1, 3:7)]
colnames(hbindf.KR.flip)[1:2] <- c("HID", "HID2")
hbindf.KR_x2 <- rbind(hbindf.KR[,1:7], hbindf.KR.flip)
as.data.frame(group_by(hbindf.KR_x2, HID) %>% summarise(min_FDR_bin=HID2[which.min(sp_BH_pval)], min_FDR=min(sp_BH_pval), min_FDR_pval=sp_pval[which.min(sp_BH_pval)], min_FDR_B=sp_beta[which.min(sp_BH_pval)], median_FDR=median(sp_BH_pval),  weighted_Z.ALLvar=pnorm((sum((1/ALLvar)*((qnorm(1-sp_pval))))/sqrt(sum((1/ALLvar)^2))), lower.tail=FALSE), weighted_Z.s2post=pnorm(sum((1/(SE^2))*qnorm(1-sp_pval))/sqrt(sum(1/SE^2)), lower.tail=FALSE), fisher=-2*sum(log(sp_pval)), numcontacts=n(), max_B_bin=HID2[which.max(abs(sp_beta))], max_B_FDR=sp_BH_pval[which.max(abs(sp_beta))], max_B=sp_beta[which.max(abs(sp_beta))])) -> hbin.KR.info
full_join(hbin.KR.info, Hstreams.KR, by="HID") -> hbin.KR.full.info
left_join(hgene.hic.overlap.KR, hbin.KR.full.info, by="HID") -> humgenes.KR.full
colnames(humgenes.KR.full)[1:5] <- c("genes", "Hchr", "Hstart", "Hend", "Hstrand") #Fix column names for what was just created

group_by(hbindf.VC, HID) %>% summarise(DS_bin=HID2[which.min(distance)], DS_FDR=sp_BH_pval[which.min(distance)], DS_dist=distance[which.min(distance)]) -> hbin1.downstream.VC
group_by(hbindf.VC, HID2) %>% summarise(US_bin=HID[which.min(distance)], US_FDR=sp_BH_pval[which.min(distance)], US_dist=distance[which.min(distance)]) -> hbin2.upstream.VC
colnames(hbin2.upstream.VC) <- c("HID", "US_bin", "US_FDR", "US_dist")
Hstreams.VC <- full_join(hbin1.downstream.VC, hbin2.upstream.VC, by="HID")
hbindf.VC.flip <- hbindf.VC[,c(2, 1, 3:7)]
colnames(hbindf.VC.flip)[1:2] <- c("HID", "HID2")
hbindf.VC_x2 <- rbind(hbindf.VC[,1:7], hbindf.VC.flip)
as.data.frame(group_by(hbindf.VC_x2, HID) %>% summarise(min_FDR_bin=HID2[which.min(sp_BH_pval)], min_FDR=min(sp_BH_pval), min_FDR_pval=sp_pval[which.min(sp_BH_pval)], min_FDR_B=sp_beta[which.min(sp_BH_pval)], median_FDR=median(sp_BH_pval),  weighted_Z.ALLvar=pnorm((sum((1/ALLvar)*((qnorm(1-sp_pval))))/sqrt(sum((1/ALLvar)^2))), lower.tail=FALSE), weighted_Z.s2post=pnorm(sum((1/(SE^2))*qnorm(1-sp_pval))/sqrt(sum(1/SE^2)), lower.tail=FALSE), fisher=-2*sum(log(sp_pval)), numcontacts=n(), max_B_bin=HID2[which.max(abs(sp_beta))], max_B_FDR=sp_BH_pval[which.max(abs(sp_beta))], max_B=sp_beta[which.max(abs(sp_beta))])) -> hbin.VC.info
full_join(hbin.VC.info, Hstreams.VC, by="HID") -> hbin.VC.full.info
left_join(hgene.hic.overlap.VC, hbin.VC.full.info, by="HID") -> humgenes.VC.full
colnames(humgenes.VC.full)[1:5] <- c("genes", "Hchr", "Hstart", "Hend", "Hstrand") #Fix column names for what was just created

###Do chimps in both as well, to maximize overlaps:
###KR
cbin.KR <- select(data.KR, "C1", "C2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "Cdist")
names(cbin.KR) <- c("CID", "CID2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "distance")
cbin.KR <- cbin.KR[(which(cbin.KR$dist!=0)),]
group_by(cbin.KR, CID) %>% summarise(DS_bin=CID2[which.min(distance)], DS_FDR=sp_BH_pval[which.min(distance)], DS_dist=distance[which.min(distance)]) -> cbin1.downstream.KR
group_by(cbin.KR, CID2) %>% summarise(US_bin=CID[which.min(distance)], US_FDR=sp_BH_pval[which.min(distance)], US_dist=distance[which.min(distance)]) -> cbin2.upstream.KR
colnames(cbin2.upstream.KR) <- c("CID", "US_bin", "US_FDR", "US_dist")
Cstreams.KR <- full_join(cbin1.downstream.KR, cbin2.upstream.KR, by="CID")
cbin.KR.flip <- cbin.KR[,c(2, 1, 3:7)]
colnames(cbin.KR.flip)[1:2] <- c("CID", "CID2")
cbin.KR_x2 <- rbind(cbin.KR[,1:7], cbin.KR.flip)
group_by(cbin.KR_x2, CID) %>% summarise(min_FDR_bin=CID2[which.min(sp_BH_pval)], min_FDR=min(sp_BH_pval), min_FDR_B=sp_beta[which.min(sp_BH_pval)], median_FDR=median(sp_BH_pval), weighted_Z.ALLvar=pnorm((sum((1/ALLvar)*((qnorm(1-sp_pval))))/sqrt(sum((1/ALLvar)^2))), lower.tail=FALSE), weighted_Z.s2post=pnorm(sum((1/(SE^2))*qnorm(1-sp_pval))/sqrt(sum(1/SE^2)), lower.tail=FALSE), fisher=-2*sum(log(sp_pval)), numcontacts=n(), max_B_bin=CID2[which.max(abs(sp_beta))], max_B_FDR=sp_BH_pval[which.max(abs(sp_beta))], max_B=sp_beta[which.max(abs(sp_beta))]) -> cbin.info.KR
full_join(cbin.info.KR, Cstreams.KR, by="CID") -> cbin.full.info.KR
left_join(cgene.hic.overlap.KR, cbin.full.info.KR, by="CID") -> chimpgenes.hic.KR
colnames(chimpgenes.hic.KR)[1:5] <- c("genes", "Hchr", "Hstart", "Hend", "Hstrand") #Fix column names for what was just created

###VC
cbin.VC <- select(data.VC, "C1", "C2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "Cdist")
names(cbin.VC) <- c("CID", "CID2", "ALLvar", "SE", "sp_beta", "sp_pval", "sp_BH_pval", "distance")
cbin.VC <- cbin.VC[(which(cbin.VC$dist!=0)),]
group_by(cbin.VC, CID) %>% summarise(DS_bin=CID2[which.min(distance)], DS_FDR=sp_BH_pval[which.min(distance)], DS_dist=distance[which.min(distance)]) -> cbin1.downstream.VC
group_by(cbin.VC, CID2) %>% summarise(US_bin=CID[which.min(distance)], US_FDR=sp_BH_pval[which.min(distance)], US_dist=distance[which.min(distance)]) -> cbin2.upstream.VC
colnames(cbin2.upstream.VC) <- c("CID", "US_bin", "US_FDR", "US_dist")
Cstreams.VC <- full_join(cbin1.downstream.VC, cbin2.upstream.VC, by="CID")
cbin.VC.flip <- cbin.VC[,c(2, 1, 3:7)]
colnames(cbin.VC.flip)[1:2] <- c("CID", "CID2")
cbin.VC_x2 <- rbind(cbin.VC[,1:7], cbin.VC.flip)
group_by(cbin.VC_x2, CID) %>% summarise(min_FDR_bin=CID2[which.min(sp_BH_pval)], min_FDR=min(sp_BH_pval), min_FDR_B=sp_beta[which.min(sp_BH_pval)], median_FDR=median(sp_BH_pval), weighted_Z.ALLvar=pnorm((sum((1/ALLvar)*((qnorm(1-sp_pval))))/sqrt(sum((1/ALLvar)^2))), lower.tail=FALSE), weighted_Z.s2post=pnorm(sum((1/(SE^2))*qnorm(1-sp_pval))/sqrt(sum(1/SE^2)), lower.tail=FALSE), fisher=-2*sum(log(sp_pval)), numcontacts=n(), max_B_bin=CID2[which.max(abs(sp_beta))], max_B_FDR=sp_BH_pval[which.max(abs(sp_beta))], max_B=sp_beta[which.max(abs(sp_beta))]) -> cbin.info.VC
full_join(cbin.info.VC, Cstreams.VC, by="CID") -> cbin.full.info.VC
left_join(cgene.hic.overlap.VC, cbin.full.info.VC, by="CID") -> chimpgenes.hic.VC
colnames(chimpgenes.hic.VC)[1:5] <- c("genes", "Hchr", "Hstart", "Hend", "Hstrand") #Fix column names for what was just created

#Now, combine chimpgenes.hic.full and humgenes.hic.full before a final left_join on detable:
full_join(humgenes.VC.full, chimpgenes.hic.VC, by="genes", suffix=c(".H", ".C")) -> genes.hic.VC
full_join(humgenes.KR.full, chimpgenes.hic.KR, by="genes", suffix=c(".H", ".C")) -> genes.hic.KR


###Final join of human and chimp values for both:
left_join(detable, genes.hic.VC, by="genes") -> gene.hic.VC
left_join(detable, genes.hic.KR, by="genes") -> gene.hic.KR

#Clean this dataframe up, removing rows where there is absolutely no Hi-C information for the gene.
filt.VC <- rowSums(is.na(gene.hic.VC)) #51 NA values are found when there is absolutely no Hi-C information.
filt.KR <- rowSums(is.na(gene.hic.KR)) #same.
filt.VC <- which(filt.VC==51)
filt.KR <- which(filt.KR==51)
gene.hic.VC <- gene.hic.VC[-filt.VC,]
gene.hic.KR <- gene.hic.KR[-filt.KR,]
saveRDS(gene.hic.KR, "output/gene.hic.filt.KR.RDS")
saveRDS(gene.hic.VC, "output/gene.hic.filt.VC.RDS")

Differential Expression-Differential Hi-C Enrichment Analyses

Now I look for enrichment of DHi-C in DE genes using a variety of different metrics to call DHi-C. I now look to see if genes that are differentially expressed are also differential in Hi-C contacts (DHi-C). That is to say, are differentially expressed genes enriched in their overlapping bins for Hi-C contacts that are also differential between the species? To do this I utilize p-values from my prior linear modeling as well as previous RNA-seq analysis. I construct a function to calculate proportions of DE and DHi-C genes, as well as a function to plot this out in a variety of different ways.

####Enrichment analyses!
#A function for calculating proportion of DE genes that are DHi-C under a variety of different paradigms. Accounts for when no genes are DHi-C and when all genes are DHi-C. Returns the proportion of DE genes that are also DHi-C, as well as the expected proportion based on conditional probability alone.
prop.calculator <- function(de.vec, hic.vec, i, k){
  my.result <- data.frame(prop=NA, exp.prop=NA, chisq.p=NA, Dneither=NA, DE=NA, DHiC=NA, Dboth=NA)
  bad.indices <- which(is.na(hic.vec)) #First obtain indices where Hi-C info is missing, if there are any, then remove from both vectors.
  if(length(bad.indices>0)){
  de.vec <- de.vec[-bad.indices]
  hic.vec <- hic.vec[-bad.indices]}
  de.vec <- ifelse(de.vec<=i, 1, 0)
  hic.vec <- ifelse(hic.vec<=k, 1, 0)
  if(sum(hic.vec, na.rm=TRUE)==0){#The case where no genes show up as DHi-C.
    my.result[1,] <- c(0, 0, 0, sum(de.vec==0, na.rm=TRUE), sum(de.vec==1, na.rm=TRUE), 0, 0) #Since no genes are DHi-C, the proportion is 0 and our expectation is 0, set p-val=0 since it's irrelevant.
  }
  else if(sum(hic.vec)==length(hic.vec)){ #The case where every gene shows up as DHi-C
    my.result[1,] <- c(1, 1, 0, 0, 0, sum(hic.vec==1&de.vec==0, na.rm = TRUE), sum(de.vec==1&hic.vec==1, na.rm=TRUE)) #If every gene is DHi-C, the observed proportion of DE genes DHi-C is 1, and the expected proportion of DE genes also DHi-C would also be 1 (all DE genes are DHi-C, since all genes are). Again set p-val to 0 since irrelevant comparison.
  }
  else{#The typical case, where we get an actual table
    mytable <- table(as.data.frame(cbind(de.vec, hic.vec)))
    my.result[1,1] <- mytable[2,2]/sum(mytable[2,]) #The observed proportion of DE genes that are also DHi-C. # that are both/total # DE
    my.result[1,2] <- (((sum(mytable[2,])/sum(mytable))*((sum(mytable[,2])/sum(mytable))))*sum(mytable))/sum(mytable[2,]) #The expected proportion: (p(DE) * p(DHiC)) * total # genes / # DE genes
    my.result[1,3] <- chisq.test(mytable)$p.value
    my.result[1,4] <- mytable[1,1]
    my.result[1,5] <- mytable[2,1]
    my.result[1,6] <- mytable[1,2]
    my.result[1,7] <- mytable[2,2]
  }
  return(my.result)
}

#This is a function that computes observed and expected proportions of DE and DHiC enrichments,  and spits out a variety of different visualizations for them. As input it takes a dataframe, the names of its DHiC and DE p-value columns, and a name to represent the type of Hi-C contact summary for the gene that ends up on the x-axis of all the plots.
enrichment.plotter <- function(df, HiC_col, DE_col, xlab, xmax=0.3, i=c(0.01, 0.025, 0.05, 0.075, 0.1), k=seq(0.01, 1, 0.01)){
  enrich.table <- data.frame(DEFDR = c(rep(i[1], 100), rep(i[2], 100), rep(i[3], 100), rep(i[4], 100), rep(i[5], 100)), DHICFDR=rep(k, 5), prop.obs=NA, prop.exp=NA, chisq.p=NA, Dneither=NA, DE=NA, DHiC=NA, Dboth=NA)
  for(de.FDR in i){
    for(hic.FDR in k){
      enrich.table[which(enrich.table$DEFDR==de.FDR&enrich.table$DHICFDR==hic.FDR), 3:9] <- prop.calculator(df[,DE_col], df[,HiC_col], de.FDR, hic.FDR)
    }
  }
  des.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=prop.obs, group=as.factor(DEFDR), color=as.factor(DEFDR))) +geom_line()+ geom_line(aes(y=prop.exp), linetype="dashed", size=0.5) + ggtitle("Enrichment of DC in DE Genes") + xlab(xlab) + ylab("Proportion of DE genes that are DC") + guides(color=guide_legend(title="FDR for DE Genes"))
  dhics.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=Dboth/(Dboth+DHiC), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_line() + geom_line(aes(y=(((((DE+Dboth)/(Dneither+DE+DHiC+Dboth))*((DHiC+Dboth)/(Dneither+DE+DHiC+Dboth)))*(Dneither+DE+DHiC+Dboth))/(DHiC+Dboth))), linetype="dashed") + ylab("Proportion of DC genes that are DE") +xlab(xlab) + ggtitle("Enrichment of DE in DC Genes") + coord_cartesian(xlim=c(0, xmax)) + guides(color=guide_legend(title="DE FDR"))
  joint.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=Dboth/(Dneither+DE+DHiC+Dboth), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_line() + ylab("Proportion of ALL Genes both DE & DHi-C") + xlab(xlab) + geom_line(aes(y=((DE+Dboth)/(Dneither+DE+DHiC+Dboth))*((DHiC+Dboth)/(Dneither+DE+DHiC+Dboth))), linetype="dashed") + ggtitle("Enrichment of Joint DE & DHi-C in All Genes")
  chisq.p <- ggplot(data=enrich.table, aes(x=DHICFDR, y=-log10(chisq.p), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_point() + geom_hline(yintercept=-log10(0.05), color="red") + ggtitle("Chi-squared Test P-values for Enrichment of DC in DE Genes") + xlab(xlab) + ylab("-log10(chi-squared p-values)") + coord_cartesian(xlim=c(0, xmax)) + guides(color=guide_legend(title="DE FDR"))
  print(des.enriched)
  print(dhics.enriched)
  print(joint.enriched)
  print(chisq.p)
  print(enrich.table[which(enrich.table$DEFDR==0.025),]) #Added to figure out comparison for the paper.
}

#Visualization of enrichment of DE/DC in one another. For most of these, using the gene.hic.filt df is sufficient as their Hi-C FDR numbers are the same. For the upstream genes it's a little more complicated because gene.hic.filt doesn't incorporate strand information on the genes, so use the specific US dfs for that, with the USFDR column.
enrichment.plotter(gene.hic.VC, "min_FDR.H", "adj.P.Val", "Minimum FDR of VC Hi-C Contacts Overlapping Gene", xmax=1)
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR prop.obs   prop.exp     chisq.p Dneither  DE DHiC Dboth
101 0.025    0.01    0.020 0.01779141 1.000000000     1405 196   25     4
102 0.025    0.02    0.045 0.03558282 0.572897327     1381 191   49     9
103 0.025    0.03    0.070 0.06319018 0.789119683     1341 186   89    14
104 0.025    0.04    0.080 0.07546012 0.907171783     1323 184  107    16
105 0.025    0.05    0.095 0.09386503 1.000000000     1296 181  134    19
106 0.025    0.06    0.115 0.11288344 1.000000000     1269 177  161    23
107 0.025    0.07    0.140 0.13312883 0.845957833     1241 172  189    28
108 0.025    0.08    0.165 0.15337423 0.702184068     1213 167  217    33
109 0.025    0.09    0.190 0.16993865 0.480195424     1191 162  239    38
110 0.025    0.10    0.205 0.18834356 0.584598428     1164 159  266    41
111 0.025    0.11    0.210 0.19754601 0.705817097     1150 158  280    42
112 0.025    0.12    0.240 0.20736196 0.261685727     1140 152  290    48
113 0.025    0.13    0.260 0.21533742 0.121454368     1131 148  299    52
114 0.025    0.14    0.275 0.22944785 0.122119104     1111 145  319    55
115 0.025    0.15    0.285 0.23742331 0.109705391     1100 143  330    57
116 0.025    0.16    0.310 0.24969325 0.043748558     1085 138  345    62
117 0.025    0.17    0.330 0.26503067 0.032589830     1064 134  366    66
118 0.025    0.18    0.345 0.27852761 0.031184315     1045 131  385    69
119 0.025    0.19    0.365 0.28711656 0.011875824     1035 127  395    73
120 0.025    0.20    0.380 0.29631902 0.007268675     1023 124  407    76
121 0.025    0.21    0.380 0.30245399 0.013628675     1013 124  417    76
122 0.025    0.22    0.380 0.31411043 0.039206989      994 124  436    76
123 0.025    0.23    0.405 0.32638037 0.014240464      979 119  451    81
124 0.025    0.24    0.415 0.34049080 0.021768586      958 117  472    83
125 0.025    0.25    0.420 0.34846626 0.028704091      946 116  484    84
126 0.025    0.26    0.425 0.36196319 0.057174173      925 115  505    85
127 0.025    0.27    0.440 0.36932515 0.032938065      916 112  514    88
128 0.025    0.28    0.450 0.37914110 0.033391020      902 110  528    90
129 0.025    0.29    0.460 0.38895706 0.033767432      888 108  542    92
130 0.025    0.30    0.475 0.40306748 0.032578922      868 105  562    95
131 0.025    0.31    0.485 0.41411043 0.036050770      852 103  578    97
132 0.025    0.32    0.490 0.42760736 0.067569499      831 102  599    98
133 0.025    0.33    0.495 0.44478528 0.147133471      804 101  626    99
134 0.025    0.34    0.500 0.45092025 0.157533070      795 100  635   100
135 0.025    0.35    0.510 0.46380368 0.185838639      776  98  654   102
136 0.025    0.36    0.520 0.47361963 0.184533517      762  96  668   104
137 0.025    0.37    0.525 0.48036810 0.202926038      752  95  678   105
138 0.025    0.38    0.535 0.48895706 0.188439927      740  93  690   107
139 0.025    0.39    0.535 0.50245399 0.364234990      718  93  712   107
140 0.025    0.40    0.540 0.51288344 0.457115337      702  92  728   108
141 0.025    0.41    0.550 0.51840491 0.379295853      695  90  735   110
142 0.025    0.42    0.565 0.52822086 0.299830652      682  87  748   113
143 0.025    0.43    0.575 0.53190184 0.219272327      678  85  752   115
144 0.025    0.44    0.590 0.53803681 0.134131986      671  82  759   118
145 0.025    0.45    0.600 0.54969325 0.146828106      654  80  776   120
146 0.025    0.46    0.605 0.55889571 0.184849313      640  79  790   121
147 0.025    0.47    0.610 0.57177914 0.275726286      620  78  810   122
148 0.025    0.48    0.620 0.57852761 0.233395796      611  76  819   124
149 0.025    0.49    0.620 0.59141104 0.422942689      590  76  840   124
150 0.025    0.50    0.630 0.60245399 0.439686449      574  74  856   126
151 0.025    0.51    0.635 0.61226994 0.530721470      559  73  871   127
152 0.025    0.52    0.640 0.61963190 0.578407394      548  72  882   128
153 0.025    0.53    0.655 0.62699387 0.425837350      539  69  891   131
154 0.025    0.54    0.665 0.63619632 0.409075796      526  67  904   133
155 0.025    0.55    0.680 0.64355828 0.284616408      517  64  913   136
156 0.025    0.56    0.700 0.65398773 0.167251299      504  60  926   140
157 0.025    0.57    0.700 0.66196319 0.256677086      491  60  939   140
158 0.025    0.58    0.715 0.67177914 0.190410091      478  57  952   143
159 0.025    0.59    0.720 0.68036810 0.229270801      465  56  965   144
160 0.025    0.60    0.720 0.68466258 0.285950334      458  56  972   144
161 0.025    0.61    0.725 0.69202454 0.318901469      447  55  983   145
162 0.025    0.62    0.740 0.69938650 0.209465132      438  52  992   148
163 0.025    0.63    0.750 0.70858896 0.196047167      425  50 1005   150
164 0.025    0.64    0.755 0.71963190 0.269232821      408  49 1022   151
165 0.025    0.65    0.770 0.72638037 0.163733087      400  46 1030   154
166 0.025    0.66    0.775 0.73619632 0.213569338      385  45 1045   155
167 0.025    0.67    0.780 0.74478528 0.257229890      372  44 1058   156
168 0.025    0.68    0.780 0.75030675 0.342828567      363  44 1067   156
169 0.025    0.69    0.785 0.76012270 0.428799898      348  43 1082   157
170 0.025    0.70    0.785 0.76503067 0.533865096      340  43 1090   157
171 0.025    0.71    0.790 0.77300613 0.601372349      328  42 1102   158
172 0.025    0.72    0.795 0.77730061 0.581232387      322  41 1108   159
173 0.025    0.73    0.795 0.78159509 0.690253305      315  41 1115   159
174 0.025    0.74    0.810 0.78650307 0.439131395      310  38 1120   162
175 0.025    0.75    0.810 0.79570552 0.658715418      295  38 1135   162
176 0.025    0.76    0.825 0.80061350 0.408180594      290  35 1140   165
177 0.025    0.77    0.835 0.81165644 0.420867538      274  33 1156   167
178 0.025    0.78    0.850 0.81533742 0.210749352      271  30 1159   170
179 0.025    0.79    0.850 0.82331288 0.338313613      258  30 1172   170
180 0.025    0.80    0.860 0.83312883 0.323694782      244  28 1186   172
181 0.025    0.81    0.865 0.84049080 0.364099263      233  27 1197   173
182 0.025    0.82    0.875 0.85030675 0.347611740      219  25 1211   175
183 0.025    0.83    0.890 0.85828221 0.205902238      209  22 1221   178
184 0.025    0.84    0.895 0.86441718 0.215508013      200  21 1230   179
185 0.025    0.85    0.900 0.87239264 0.255880294      188  20 1242   180
186 0.025    0.86    0.920 0.88343558 0.108985363      174  16 1256   184
187 0.025    0.87    0.925 0.89141104 0.131364623      162  15 1268   185
188 0.025    0.88    0.930 0.90245399 0.202463161      145  14 1285   186
189 0.025    0.89    0.935 0.91840491 0.436906929      120  13 1310   187
190 0.025    0.90    0.940 0.92883436 0.610818332      104  12 1326   188
191 0.025    0.91    0.955 0.93926380 0.402743212       90   9 1340   191
192 0.025    0.92    0.965 0.94478528 0.241572480       83   7 1347   193
193 0.025    0.93    0.980 0.95153374 0.067902504       75   4 1355   196
194 0.025    0.94    0.985 0.95766871 0.062589817       66   3 1364   197
195 0.025    0.95    0.990 0.96809816 0.095529255       50   2 1380   198
196 0.025    0.96    0.995 0.97177914 0.058864046       45   1 1385   199
197 0.025    0.97    0.995 0.97791411 0.133995196       35   1 1395   199
198 0.025    0.98    0.995 0.98711656 0.471047426       20   1 1410   199
199 0.025    0.99    0.995 0.99018405 0.722823657       15   1 1415   199
200 0.025    1.00    1.000 1.00000000 0.000000000        0   0 1430   200
enrichment.plotter(gene.hic.KR, "min_FDR.H", "adj.P.Val", "Minimum FDR of KR Hi-C Contacts Overlapping Gene, Chimp", xmax=1)
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
Warning: Removed 5 rows containing missing values (geom_path).
Warning: Removed 5 rows containing missing values (geom_path).

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR   prop.obs    prop.exp   chisq.p Dneither  DE DHiC Dboth
101 0.025    0.01 0.00000000 0.000000000 0.0000000     1120 154    0     0
102 0.025    0.02 0.00000000 0.003139717 1.0000000     1116 154    4     0
103 0.025    0.03 0.00000000 0.009419152 0.3976953     1108 154   12     0
104 0.025    0.04 0.03246753 0.033751962 1.0000000     1082 149   38     5
105 0.025    0.05 0.05844156 0.063579278 0.9183031     1048 145   72     9
106 0.025    0.06 0.09740260 0.098116170 1.0000000     1010 139  110    15
107 0.025    0.07 0.14285714 0.119309262 0.4071553      990 132  130    22
108 0.025    0.08 0.14935065 0.142072214 0.8785229      962 131  158    23
109 0.025    0.09 0.16233766 0.173469388 0.7828475      924 129  196    25
110 0.025    0.10 0.19480519 0.203296703 0.8630574      891 124  229    30
111 0.025    0.11 0.20779221 0.229199372 0.5674219      860 122  260    32
112 0.025    0.12 0.25324675 0.256671900 0.9956871      832 115  288    39
113 0.025    0.13 0.28571429 0.279434851 0.9287234      808 110  312    44
114 0.025    0.14 0.33116883 0.296703297 0.3657160      793 103  327    51
115 0.025    0.15 0.34415584 0.306907378 0.3291895      782 101  338    53
116 0.025    0.16 0.36363636 0.322605965 0.2847310      765  98  355    56
117 0.025    0.17 0.38311688 0.343014129 0.3041534      742  95  378    59
118 0.025    0.18 0.40909091 0.357927786 0.1858653      727  91  393    63
119 0.025    0.19 0.42207792 0.380690738 0.2985086      700  89  420    65
120 0.025    0.20 0.44155844 0.395604396 0.2476931      684  86  436    68
121 0.025    0.21 0.47402597 0.414442700 0.1301291      665  81  455    73
122 0.025    0.22 0.48051948 0.430926217 0.2154553      645  80  475    74
123 0.025    0.23 0.49350649 0.441130298 0.1903307      634  78  486    76
124 0.025    0.24 0.49350649 0.445839874 0.2368939      628  78  492    76
125 0.025    0.25 0.50000000 0.465463108 0.4063940      604  77  516    77
126 0.025    0.26 0.53246753 0.484301413 0.2341898      585  72  535    82
127 0.025    0.27 0.53246753 0.489795918 0.2965675      578  72  542    82
128 0.025    0.28 0.55194805 0.501569859 0.2121739      566  69  554    85
129 0.025    0.29 0.55844156 0.510204082 0.2335807      556  68  564    86
130 0.025    0.30 0.56493506 0.521193093 0.2833148      543  67  577    87
131 0.025    0.31 0.56493506 0.532182104 0.4338186      529  67  591    87
132 0.025    0.32 0.57142857 0.540031397 0.4547242      520  66  600    88
133 0.025    0.33 0.58441558 0.550235479 0.4105120      509  64  611    90
134 0.025    0.34 0.58441558 0.554160126 0.4720350      504  64  616    90
135 0.025    0.35 0.58441558 0.559654631 0.5662427      497  64  623    90
136 0.025    0.36 0.59740260 0.575353218 0.6146340      479  62  641    92
137 0.025    0.37 0.60389610 0.585557300 0.6851261      467  61  653    93
138 0.025    0.38 0.60389610 0.596546311 0.9118592      453  61  667    93
139 0.025    0.39 0.61038961 0.604395604 0.9407234      444  60  676    94
140 0.025    0.40 0.62337662 0.616954474 0.9311060      430  58  690    96
141 0.025    0.41 0.63636364 0.627158556 0.8704528      419  56  701    98
142 0.025    0.42 0.65584416 0.635792779 0.6439357      411  53  709   101
143 0.025    0.43 0.66233766 0.644427002 0.6851487      401  52  719   102
144 0.025    0.44 0.66233766 0.656985871 0.9531993      385  52  735   102
145 0.025    0.45 0.67532468 0.671899529 0.9959877      368  50  752   104
146 0.025    0.46 0.69480519 0.679748823 0.7376207      361  47  759   107
147 0.025    0.47 0.71428571 0.685243328 0.4622518      357  44  763   110
148 0.025    0.48 0.72727273 0.691522763 0.3516342      351  42  769   112
149 0.025    0.49 0.72727273 0.696232339 0.4237710      345  42  775   112
150 0.025    0.50 0.72727273 0.699372057 0.4766950      341  42  779   112
151 0.025    0.51 0.74025974 0.705651491 0.3624187      335  40  785   114
152 0.025    0.52 0.74025974 0.711930926 0.4635295      327  40  793   114
153 0.025    0.53 0.74025974 0.716640502 0.5496016      321  40  799   114
154 0.025    0.54 0.77272727 0.729199372 0.2302373      310  35  810   119
155 0.025    0.55 0.77272727 0.731554160 0.2573285      307  35  813   119
156 0.025    0.56 0.77272727 0.732339089 0.2668634      306  35  814   119
157 0.025    0.57 0.77272727 0.737833595 0.3409159      299  35  821   119
158 0.025    0.58 0.77272727 0.744113030 0.4416371      291  35  829   119
159 0.025    0.59 0.77922078 0.750392465 0.4340206      284  34  836   120
160 0.025    0.60 0.78571429 0.758241758 0.4539223      275  33  845   121
161 0.025    0.61 0.79220779 0.766091052 0.4745762      266  32  854   122
162 0.025    0.62 0.79870130 0.771585557 0.4517403      260  31  860   123
163 0.025    0.63 0.80519481 0.779434851 0.4723591      251  30  869   124
164 0.025    0.64 0.81818182 0.785714286 0.3459172      245  28  875   126
165 0.025    0.65 0.81818182 0.790423862 0.4254069      239  28  881   126
166 0.025    0.66 0.82467532 0.795918367 0.4021718      233  27  887   127
167 0.025    0.67 0.82467532 0.799843014 0.4752136      228  27  892   127
168 0.025    0.68 0.82467532 0.803767661 0.5561493      223  27  897   127
169 0.025    0.69 0.82467532 0.810047096 0.7009619      215  27  905   127
170 0.025    0.70 0.83116883 0.816326531 0.6918514      208  26  912   128
171 0.025    0.71 0.83766234 0.824960754 0.7419211      198  25  922   129
172 0.025    0.72 0.83766234 0.838304553 1.0000000      181  25  939   129
173 0.025    0.73 0.83766234 0.840659341 1.0000000      178  25  942   129
174 0.025    0.74 0.85714286 0.848508634 0.8423539      171  22  949   132
175 0.025    0.75 0.85714286 0.851648352 0.9332976      167  22  953   132
176 0.025    0.76 0.86363636 0.854003140 0.8108077      165  21  955   133
177 0.025    0.77 0.87012987 0.858712716 0.7562121      160  20  960   134
178 0.025    0.78 0.88311688 0.866562009 0.6044720      152  18  968   136
179 0.025    0.79 0.88311688 0.870486656 0.7114716      147  18  973   136
180 0.025    0.80 0.88961039 0.879905808 0.7926030      136  17  984   137
181 0.025    0.81 0.90259740 0.888540031 0.6493524      127  15  993   139
182 0.025    0.82 0.90259740 0.890894819 0.7196186      124  15  996   139
183 0.025    0.83 0.91558442 0.896389325 0.4885422      119  13 1001   141
184 0.025    0.84 0.92207792 0.900313972 0.4133100      115  12 1005   142
185 0.025    0.85 0.92857143 0.906593407 0.3942483      108  11 1012   143
186 0.025    0.86 0.93506494 0.915227630 0.4305068       98  10 1022   144
187 0.025    0.87 0.94155844 0.925431711 0.5163797       86   9 1034   145
188 0.025    0.88 0.94805195 0.932496075 0.5161159       78   8 1042   146
189 0.025    0.89 0.94805195 0.934850863 0.5934424       75   8 1045   146
190 0.025    0.90 0.94805195 0.941915228 0.8701028       66   8 1054   146
191 0.025    0.91 0.95454545 0.949764521 0.9259348       57   7 1063   147
192 0.025    0.92 0.96103896 0.955259027 0.8711665       51   6 1069   148
193 0.025    0.93 0.96103896 0.962323391 1.0000000       42   6 1078   148
194 0.025    0.94 0.97402597 0.966248038 0.7398224       39   4 1081   150
195 0.025    0.95 0.97402597 0.970172684 0.9623608       34   4 1086   150
196 0.025    0.96 0.97402597 0.975667190 1.0000000       27   4 1093   150
197 0.025    0.97 0.98051948 0.985871272 0.8133811       15   3 1105   151
198 0.025    0.98 0.98051948 0.992935636 0.1473268        6   3 1114   151
199 0.025    0.99 0.99350649 0.998430141 0.5750706        1   1 1119   153
200 0.025    1.00 1.00000000 1.000000000 0.0000000        0   0 1120   154
#enrichment.plotter(h_US, "USFDR", "adj.P.Val", "FDR for Closest Upstream Hi-C Contact Overlapping Gene, Human") #These two are ugly, and can't be run anyway until next chunk is complete to create their DFs. It's OK without them.
#enrichment.plotter(c_US, "USFDR", "adj.P.Val", "FDR for Closest Upstream Hi-C Contact Overlapping Gene, Chimp")
#enrichment.plotter(gene.hic.filt, "max_B_FDR.H", "adj.P.Val", "FDR for Hi-C Contact Overlapping Gene w/ Strongest Effect Size, Human")
#enrichment.plotter(gene.hic.filt, "max_B_FDR.C", "adj.P.Val", "FDR for Hi-C Contact Overlapping Gene w/ Strongest Effect Size, Chimp")
#enrichment.plotter(gene.hic.filt, "median_FDR.H", "adj.P.Val", "Median FDR of Hi-C Contacts Overlapping Gene, Human")
#enrichment.plotter(gene.hic.filt, "median_FDR.C", "adj.P.Val", "Median FDR of Hi-C Contacts Overlapping Gene, Chimp")
enrichment.plotter(gene.hic.VC, "weighted_Z.s2post.H", "adj.P.Val", "FDR for Weighted p-val Combine of VC Hi-C Contacts Overlapping Gene", xmax=1)

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR prop.obs  prop.exp    chisq.p Dneither DE DHiC Dboth
101 0.025    0.01    0.540 0.4828221 0.09851197      751 92  679   108
102 0.025    0.02    0.555 0.5036810 0.14041388      720 89  710   111
103 0.025    0.03    0.580 0.5226994 0.09761075      694 84  736   116
104 0.025    0.04    0.585 0.5337423 0.14001822      677 83  753   117
105 0.025    0.05    0.595 0.5466258 0.16411957      658 81  772   119
106 0.025    0.06    0.605 0.5539877 0.14059911      648 79  782   121
107 0.025    0.07    0.625 0.5631902 0.07099899      637 75  793   125
108 0.025    0.08    0.640 0.5699387 0.03935656      629 72  801   128
109 0.025    0.09    0.655 0.5791411 0.02486225      617 69  813   131
110 0.025    0.10    0.660 0.5815951 0.02016402      614 68  816   132
111 0.025    0.11    0.660 0.5858896 0.02815759      607 68  823   132
112 0.025    0.12    0.660 0.5901840 0.03876550      600 68  830   132
113 0.025    0.13    0.660 0.5944785 0.05262293      593 68  837   132
114 0.025    0.14    0.670 0.6018405 0.04284623      583 66  847   134
115 0.025    0.15    0.670 0.6055215 0.05552805      577 66  853   134
116 0.025    0.16    0.670 0.6104294 0.07722448      569 66  861   134
117 0.025    0.17    0.670 0.6141104 0.09773563      563 66  867   134
118 0.025    0.18    0.680 0.6190184 0.06902426      557 64  873   136
119 0.025    0.19    0.685 0.6239264 0.06788893      550 63  880   137
120 0.025    0.20    0.685 0.6257669 0.07670891      547 63  883   137
121 0.025    0.21    0.685 0.6269939 0.08310023      545 63  885   137
122 0.025    0.22    0.690 0.6306748 0.07544256      540 62  890   138
123 0.025    0.23    0.695 0.6368098 0.08039011      531 61  899   139
124 0.025    0.24    0.695 0.6423313 0.11402637      522 61  908   139
125 0.025    0.25    0.700 0.6453988 0.10009589      518 60  912   140
126 0.025    0.26    0.700 0.6478528 0.11655314      514 60  916   140
127 0.025    0.27    0.705 0.6503067 0.09842421      511 59  919   141
128 0.025    0.28    0.720 0.6546012 0.04579717      507 56  923   144
129 0.025    0.29    0.725 0.6588957 0.04279546      501 55  929   145
130 0.025    0.30    0.725 0.6607362 0.04887697      498 55  932   145
131 0.025    0.31    0.725 0.6638037 0.06065379      493 55  937   145
132 0.025    0.32    0.725 0.6650307 0.06599507      491 55  939   145
133 0.025    0.33    0.725 0.6656442 0.06881079      490 55  940   145
134 0.025    0.34    0.725 0.6687117 0.08444351      485 55  945   145
135 0.025    0.35    0.730 0.6699387 0.06456853      484 54  946   146
136 0.025    0.36    0.730 0.6717791 0.07318306      481 54  949   146
137 0.025    0.37    0.730 0.6748466 0.08966824      476 54  954   146
138 0.025    0.38    0.735 0.6785276 0.08101186      471 53  959   147
139 0.025    0.39    0.735 0.6803681 0.09142997      468 53  962   147
140 0.025    0.40    0.735 0.6822086 0.10292917      465 53  965   147
141 0.025    0.41    0.740 0.6840491 0.08256892      463 52  967   148
142 0.025    0.42    0.745 0.6871166 0.07131101      459 51  971   149
143 0.025    0.43    0.745 0.6883436 0.07749172      457 51  973   149
144 0.025    0.44    0.745 0.6895706 0.08411411      455 51  975   149
145 0.025    0.45    0.745 0.6938650 0.11109463      448 51  982   149
146 0.025    0.46    0.745 0.6950920 0.11998338      446 51  984   149
147 0.025    0.47    0.745 0.6987730 0.15013681      440 51  990   149
148 0.025    0.48    0.745 0.7012270 0.17336638      436 51  994   149
149 0.025    0.49    0.750 0.7036810 0.14736799      433 50  997   150
150 0.025    0.50    0.750 0.7061350 0.17035639      429 50 1001   150
151 0.025    0.51    0.750 0.7067485 0.17651928      428 50 1002   150
152 0.025    0.52    0.750 0.7079755 0.18936217      426 50 1004   150
153 0.025    0.53    0.750 0.7092025 0.20291108      424 50 1006   150
154 0.025    0.54    0.750 0.7104294 0.21718490      422 50 1008   150
155 0.025    0.55    0.750 0.7122699 0.23999321      419 50 1011   150
156 0.025    0.56    0.750 0.7141104 0.26452600      416 50 1014   150
157 0.025    0.57    0.755 0.7159509 0.22106122      414 49 1016   151
158 0.025    0.58    0.755 0.7208589 0.28686952      406 49 1024   151
159 0.025    0.59    0.755 0.7233129 0.32458154      402 49 1028   151
160 0.025    0.60    0.765 0.7263804 0.22122125      399 47 1031   153
161 0.025    0.61    0.770 0.7282209 0.18249857      397 46 1033   154
162 0.025    0.62    0.770 0.7306748 0.21006530      393 46 1037   154
163 0.025    0.63    0.770 0.7331288 0.24069177      389 46 1041   154
164 0.025    0.64    0.770 0.7343558 0.25719823      387 46 1043   154
165 0.025    0.65    0.770 0.7349693 0.26575685      386 46 1044   154
166 0.025    0.66    0.770 0.7368098 0.29267509      383 46 1047   154
167 0.025    0.67    0.770 0.7386503 0.32148737      380 46 1050   154
168 0.025    0.68    0.775 0.7417178 0.28829181      376 45 1054   155
169 0.025    0.69    0.775 0.7429448 0.30719019      374 45 1056   155
170 0.025    0.70    0.780 0.7447853 0.25722989      372 44 1058   156
171 0.025    0.71    0.780 0.7472393 0.29311087      368 44 1062   156
172 0.025    0.72    0.785 0.7527607 0.29795001      360 43 1070   157
173 0.025    0.73    0.785 0.7539877 0.31751994      358 43 1072   157
174 0.025    0.74    0.785 0.7558282 0.34854337      355 43 1075   157
175 0.025    0.75    0.785 0.7588957 0.40474382      350 43 1080   157
176 0.025    0.76    0.785 0.7619632 0.46655886      345 43 1085   157
177 0.025    0.77    0.790 0.7644172 0.41148528      342 42 1088   158
178 0.025    0.78    0.790 0.7644172 0.41148528      342 42 1088   158
179 0.025    0.79    0.795 0.7674847 0.37126795      338 41 1092   159
180 0.025    0.80    0.800 0.7711656 0.34388428      333 40 1097   160
181 0.025    0.81    0.800 0.7717791 0.35478827      332 40 1098   160
182 0.025    0.82    0.800 0.7742331 0.40076361      328 40 1102   160
183 0.025    0.83    0.800 0.7748466 0.41284809      327 40 1103   160
184 0.025    0.84    0.805 0.7766871 0.34936028      325 39 1105   161
185 0.025    0.85    0.810 0.7809816 0.33298636      319 38 1111   162
186 0.025    0.86    0.810 0.7871166 0.45214491      309 38 1121   162
187 0.025    0.87    0.810 0.7907975 0.53524526      303 38 1127   162
188 0.025    0.88    0.815 0.7963190 0.54409373      295 37 1135   163
189 0.025    0.89    0.815 0.8030675 0.72025043      284 37 1146   163
190 0.025    0.90    0.815 0.8055215 0.79007473      280 37 1150   163
191 0.025    0.91    0.820 0.8079755 0.71503958      277 36 1153   164
192 0.025    0.92    0.825 0.8159509 0.79859516      265 35 1165   165
193 0.025    0.93    0.830 0.8276074 1.00000000      247 34 1183   166
194 0.025    0.94    0.830 0.8337423 0.95981835      237 34 1193   166
195 0.025    0.95    0.850 0.8392638 0.73492610      232 30 1198   170
196 0.025    0.96    0.850 0.8435583 0.86986526      225 30 1205   170
197 0.025    0.97    0.860 0.8539877 0.88062368      210 28 1220   172
198 0.025    0.98    0.885 0.8644172 0.42514762      198 23 1232   177
199 0.025    0.99    0.910 0.8858896 0.30477538      168 18 1262   182
200 0.025    1.00    1.000 1.0000000 0.00000000        0  0 1430   200
enrichment.plotter(gene.hic.KR, "weighted_Z.s2post.H", "adj.P.Val", "FDR for Weighted p-val Combine of KR Hi-C Contacts Overlapping Gene", xmax=1)

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR  prop.obs  prop.exp    chisq.p Dneither DE DHiC Dboth
101 0.025    0.01 0.6038961 0.5518053 0.19362378      510 61  610    93
102 0.025    0.02 0.6298701 0.5745683 0.16346233      485 57  635    97
103 0.025    0.03 0.6558442 0.5902669 0.09344506      469 53  651   101
104 0.025    0.04 0.6558442 0.6036107 0.18501010      452 53  668   101
105 0.025    0.05 0.6558442 0.6083203 0.22992174      446 53  674   101
106 0.025    0.06 0.6623377 0.6106750 0.18877776      444 52  676   102
107 0.025    0.07 0.6753247 0.6169545 0.13340921      438 50  682   104
108 0.025    0.08 0.6753247 0.6216641 0.16886970      432 50  688   104
109 0.025    0.09 0.6818182 0.6271586 0.15936680      426 49  694   105
110 0.025    0.10 0.7012987 0.6357928 0.08682146      418 46  702   108
111 0.025    0.11 0.7077922 0.6405024 0.07732129      413 45  707   109
112 0.025    0.12 0.7077922 0.6444270 0.09646552      408 45  712   109
113 0.025    0.13 0.7077922 0.6514914 0.14057634      399 45  721   109
114 0.025    0.14 0.7077922 0.6514914 0.14057634      399 45  721   109
115 0.025    0.15 0.7077922 0.6554160 0.17122756      394 45  726   109
116 0.025    0.16 0.7142857 0.6593407 0.14880439      390 44  730   110
117 0.025    0.17 0.7207792 0.6616954 0.11829284      388 43  732   111
118 0.025    0.18 0.7272727 0.6679749 0.11519447      381 42  739   112
119 0.025    0.19 0.7272727 0.6703297 0.13058301      378 42  742   112
120 0.025    0.20 0.7272727 0.6734694 0.15360930      374 42  746   112
121 0.025    0.21 0.7337662 0.6781790 0.13811656      369 41  751   113
122 0.025    0.22 0.7337662 0.6852433 0.19694136      360 41  760   113
123 0.025    0.23 0.7337662 0.6868132 0.21230007      358 41  762   113
124 0.025    0.24 0.7402597 0.6883830 0.16462667      357 40  763   114
125 0.025    0.25 0.7402597 0.6907378 0.18512255      354 40  766   114
126 0.025    0.26 0.7467532 0.6962323 0.17365846      348 39  772   115
127 0.025    0.27 0.7532468 0.6978022 0.13246669      347 38  773   116
128 0.025    0.28 0.7532468 0.6993721 0.14391637      345 38  775   116
129 0.025    0.29 0.7532468 0.7040816 0.18304081      339 38  781   116
130 0.025    0.30 0.7532468 0.7072214 0.21339902      335 38  785   116
131 0.025    0.31 0.7532468 0.7080063 0.22155452      334 38  786   116
132 0.025    0.32 0.7597403 0.7103611 0.17827316      332 37  788   117
133 0.025    0.33 0.7597403 0.7103611 0.17827316      332 37  788   117
134 0.025    0.34 0.7662338 0.7127159 0.14144849      330 36  790   118
135 0.025    0.35 0.7662338 0.7142857 0.15362662      328 36  792   118
136 0.025    0.36 0.7727273 0.7158556 0.11555790      327 35  793   119
137 0.025    0.37 0.7727273 0.7189953 0.13713275      323 35  797   119
138 0.025    0.38 0.7727273 0.7205651 0.14907835      321 35  799   119
139 0.025    0.39 0.7727273 0.7221350 0.16184095      319 35  801   119
140 0.025    0.40 0.7727273 0.7221350 0.16184095      319 35  801   119
141 0.025    0.41 0.7727273 0.7252747 0.18994753      315 35  805   119
142 0.025    0.42 0.7727273 0.7260597 0.19753486      314 35  806   119
143 0.025    0.43 0.7792208 0.7284144 0.15699680      312 34  808   120
144 0.025    0.44 0.7792208 0.7307692 0.17738072      309 34  811   120
145 0.025    0.45 0.7792208 0.7315542 0.18461907      308 34  812   120
146 0.025    0.46 0.7792208 0.7339089 0.20772066      305 34  815   120
147 0.025    0.47 0.7792208 0.7386185 0.26048957      299 34  821   120
148 0.025    0.48 0.7792208 0.7394035 0.27017359      298 34  822   120
149 0.025    0.49 0.7857143 0.7409733 0.20999672      297 33  823   121
150 0.025    0.50 0.7857143 0.7417582 0.21829411      296 33  824   121
151 0.025    0.51 0.7857143 0.7425432 0.22683967      295 33  825   121
152 0.025    0.52 0.7857143 0.7441130 0.24468917      293 33  827   121
153 0.025    0.53 0.7857143 0.7441130 0.24468917      293 33  827   121
154 0.025    0.54 0.7857143 0.7448980 0.25399968      292 33  828   121
155 0.025    0.55 0.7857143 0.7472527 0.28351012      289 33  831   121
156 0.025    0.56 0.7857143 0.7511774 0.33810518      284 33  836   121
157 0.025    0.57 0.7857143 0.7527473 0.36188040      282 33  838   121
158 0.025    0.58 0.7857143 0.7543171 0.38677595      280 33  840   121
159 0.025    0.59 0.7857143 0.7551020 0.39964489      279 33  841   121
160 0.025    0.60 0.7857143 0.7566719 0.42622458      277 33  843   121
161 0.025    0.61 0.7857143 0.7590267 0.46818744      274 33  846   121
162 0.025    0.62 0.7857143 0.7613815 0.51262611      271 33  849   121
163 0.025    0.63 0.7857143 0.7621664 0.52797843      270 33  850   121
164 0.025    0.64 0.7857143 0.7629513 0.54359540      269 33  851   121
165 0.025    0.65 0.7857143 0.7668760 0.62551045      264 33  856   121
166 0.025    0.66 0.7922078 0.7676609 0.50443204      264 32  856   122
167 0.025    0.67 0.7922078 0.7692308 0.53538924      262 32  858   122
168 0.025    0.68 0.7987013 0.7715856 0.45174028      260 31  860   123
169 0.025    0.69 0.7987013 0.7770801 0.55901129      253 31  867   123
170 0.025    0.70 0.7987013 0.7778650 0.57544229      252 31  868   123
171 0.025    0.71 0.7987013 0.7802198 0.62630594      249 31  871   123
172 0.025    0.72 0.7987013 0.7833595 0.69757837      245 31  875   123
173 0.025    0.73 0.7987013 0.7841444 0.71596929      244 31  876   123
174 0.025    0.74 0.8051948 0.7872841 0.63531171      241 30  879   124
175 0.025    0.75 0.8051948 0.7888540 0.67109957      239 30  881   124
176 0.025    0.76 0.8051948 0.7904239 0.70784390      237 30  883   124
177 0.025    0.77 0.8051948 0.7935636 0.78395017      233 30  887   124
178 0.025    0.78 0.8051948 0.7967033 0.86305735      229 30  891   124
179 0.025    0.79 0.8051948 0.7974882 0.88322566      228 30  892   124
180 0.025    0.80 0.8181818 0.8037677 0.70976859      222 28  898   126
181 0.025    0.81 0.8181818 0.8045526 0.72894209      221 28  899   126
182 0.025    0.82 0.8181818 0.8045526 0.72894209      221 28  899   126
183 0.025    0.83 0.8181818 0.8092622 0.84844127      215 28  905   126
184 0.025    0.84 0.8181818 0.8139717 0.97386178      209 28  911   126
185 0.025    0.85 0.8246753 0.8163265 0.86155795      207 27  913   127
186 0.025    0.86 0.8311688 0.8194662 0.77107460      204 26  916   128
187 0.025    0.87 0.8311688 0.8233909 0.87503428      199 26  921   128
188 0.025    0.88 0.8376623 0.8257457 0.76226567      197 25  923   129
189 0.025    0.89 0.8376623 0.8288854 0.84590172      193 25  927   129
190 0.025    0.90 0.8376623 0.8351648 1.00000000      185 25  935   129
191 0.025    0.91 0.8441558 0.8383046 0.92540274      182 24  938   130
192 0.025    0.92 0.8441558 0.8398744 0.97021185      180 24  940   130
193 0.025    0.93 0.8571429 0.8430141 0.69217168      178 22  942   132
194 0.025    0.94 0.8701299 0.8516484 0.57052573      169 20  951   134
195 0.025    0.95 0.8766234 0.8571429 0.53920655      163 19  957   135
196 0.025    0.96 0.8766234 0.8618524 0.65846260      157 19  963   135
197 0.025    0.97 0.8831169 0.8642072 0.54508104      155 18  965   136
198 0.025    0.98 0.8896104 0.8720565 0.57078171      146 17  974   137
199 0.025    0.99 0.8961039 0.8838305 0.70926028      132 16  988   138
200 0.025    1.00 1.0000000 1.0000000 0.00000000        0  0 1120   154
enrichment.plotter(gene.hic.VC, "weighted_Z.ALLvar.H", "adj.P.Val", "FDR for Weighted p-val Combine of VC Hi-C Contacts Overlapping Gene", xmax=1)
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR prop.obs  prop.exp    chisq.p Dneither  DE DHiC Dboth
101 0.025    0.01    0.170 0.1361963 0.16820646     1242 166  188    34
102 0.025    0.02    0.200 0.1766871 0.40998168     1182 160  248    40
103 0.025    0.03    0.230 0.1993865 0.28804497     1151 154  279    46
104 0.025    0.04    0.275 0.2263804 0.09611996     1116 145  314    55
105 0.025    0.05    0.305 0.2441718 0.04036150     1093 139  337    61
106 0.025    0.06    0.315 0.2558282 0.04986890     1076 137  354    63
107 0.025    0.07    0.335 0.2742331 0.04861114     1050 133  380    67
108 0.025    0.08    0.345 0.2852761 0.05569076     1034 131  396    69
109 0.025    0.09    0.355 0.3006135 0.08753096     1011 129  419    71
110 0.025    0.10    0.375 0.3141104 0.05751687      993 125  437    75
111 0.025    0.11    0.385 0.3276074 0.07741230      973 123  457    77
112 0.025    0.12    0.400 0.3466258 0.10650832      945 120  485    80
113 0.025    0.13    0.410 0.3668712 0.20307639      914 118  516    82
114 0.025    0.14    0.430 0.3791411 0.13233854      898 114  532    86
115 0.025    0.15    0.435 0.3871166 0.15949057      886 113  544    87
116 0.025    0.16    0.450 0.3975460 0.12327131      872 110  558    90
117 0.025    0.17    0.455 0.4128834 0.22440299      848 109  582    91
118 0.025    0.18    0.470 0.4202454 0.14832384      839 106  591    94
119 0.025    0.19    0.480 0.4343558 0.18877181      818 104  612    96
120 0.025    0.20    0.485 0.4392638 0.18838729      811 103  619    97
121 0.025    0.21    0.500 0.4472393 0.12694290      801 100  629   100
122 0.025    0.22    0.510 0.4564417 0.12169070      788  98  642   102
123 0.025    0.23    0.530 0.4687117 0.07528138      772  94  658   106
124 0.025    0.24    0.540 0.4803681 0.08424471      755  92  675   108
125 0.025    0.25    0.555 0.4901840 0.05981596      742  89  688   111
126 0.025    0.26    0.560 0.5061350 0.12085100      717  88  713   112
127 0.025    0.27    0.560 0.5134969 0.18376011      705  88  725   112
128 0.025    0.28    0.570 0.5233129 0.18161708      691  86  739   114
129 0.025    0.29    0.590 0.5368098 0.12481303      673  82  757   118
130 0.025    0.30    0.590 0.5435583 0.18286234      662  82  768   118
131 0.025    0.31    0.595 0.5496933 0.19391371      653  81  777   119
132 0.025    0.32    0.610 0.5582822 0.13453521      642  78  788   122
133 0.025    0.33    0.620 0.5674847 0.12743754      629  76  801   124
134 0.025    0.34    0.630 0.5736196 0.09997385      621  74  809   126
135 0.025    0.35    0.635 0.5809816 0.11490102      610  73  820   127
136 0.025    0.36    0.640 0.5852761 0.10949204      604  72  826   128
137 0.025    0.37    0.645 0.5938650 0.13485231      591  71  839   129
138 0.025    0.38    0.650 0.6042945 0.18218993      575  70  855   130
139 0.025    0.39    0.660 0.6110429 0.15020219      566  68  864   132
140 0.025    0.40    0.665 0.6165644 0.15374036      558  67  872   133
141 0.025    0.41    0.675 0.6233129 0.12535714      549  65  881   135
142 0.025    0.42    0.685 0.6331288 0.12193110      535  63  895   137
143 0.025    0.43    0.700 0.6417178 0.07900054      524  60  906   140
144 0.025    0.44    0.705 0.6472393 0.08078255      516  59  914   141
145 0.025    0.45    0.715 0.6552147 0.06879333      505  57  925   143
146 0.025    0.46    0.715 0.6619632 0.10673215      494  57  936   143
147 0.025    0.47    0.715 0.6668712 0.14382821      486  57  944   143
148 0.025    0.48    0.725 0.6748466 0.12454137      475  55  955   145
149 0.025    0.49    0.730 0.6822086 0.14191980      464  54  966   146
150 0.025    0.50    0.735 0.6895706 0.16122648      453  53  977   147
151 0.025    0.51    0.740 0.6932515 0.14739909      448  52  982   148
152 0.025    0.52    0.740 0.6993865 0.20946513      438  52  992   148
153 0.025    0.53    0.760 0.7073620 0.09613652      429  48 1001   152
154 0.025    0.54    0.760 0.7104294 0.11712869      424  48 1006   152
155 0.025    0.55    0.760 0.7184049 0.18938560      411  48 1019   152
156 0.025    0.56    0.765 0.7239264 0.19264943      403  47 1027   153
157 0.025    0.57    0.765 0.7300613 0.26989942      393  47 1037   153
158 0.025    0.58    0.775 0.7368098 0.22106323      384  45 1046   155
159 0.025    0.59    0.785 0.7411043 0.15360830      379  43 1051   157
160 0.025    0.60    0.785 0.7453988 0.19848078      372  43 1058   157
161 0.025    0.61    0.785 0.7546012 0.32763762      357  43 1073   157
162 0.025    0.62    0.795 0.7619632 0.27897785      347  41 1083   159
163 0.025    0.63    0.805 0.7687117 0.22631770      338  39 1092   161
164 0.025    0.64    0.805 0.7742331 0.30733598      329  39 1101   161
165 0.025    0.65    0.810 0.7822086 0.35486570      317  38 1113   162
166 0.025    0.66    0.810 0.7895706 0.50660137      305  38 1125   162
167 0.025    0.67    0.815 0.7957055 0.52939442      296  37 1134   163
168 0.025    0.68    0.815 0.7987730 0.60518037      291  37 1139   163
169 0.025    0.69    0.820 0.8042945 0.61527420      283  36 1147   164
170 0.025    0.70    0.825 0.8098160 0.62555090      275  35 1155   165
171 0.025    0.71    0.825 0.8184049 0.87257649      261  35 1169   165
172 0.025    0.72    0.825 0.8208589 0.94847915      257  35 1173   165
173 0.025    0.73    0.845 0.8282209 0.56759982      249  31 1181   169
174 0.025    0.74    0.850 0.8331288 0.56060003      242  30 1188   170
175 0.025    0.75    0.855 0.8404908 0.62044691      231  29 1199   171
176 0.025    0.76    0.860 0.8490798 0.72247372      218  28 1212   172
177 0.025    0.77    0.865 0.8552147 0.75458565      209  27 1221   173
178 0.025    0.78    0.875 0.8656442 0.76148539      194  25 1236   175
179 0.025    0.79    0.880 0.8711656 0.77527575      186  24 1244   176
180 0.025    0.80    0.885 0.8809816 0.94355633      171  23 1259   177
181 0.025    0.81    0.895 0.8877301 0.81954560      162  21 1268   179
182 0.025    0.82    0.905 0.8944785 0.69341806      153  19 1277   181
183 0.025    0.83    0.920 0.9042945 0.49792688      140  16 1290   184
184 0.025    0.84    0.930 0.9092025 0.33628193      134  14 1296   186
185 0.025    0.85    0.935 0.9128834 0.29358873      129  13 1301   187
186 0.025    0.86    0.940 0.9202454 0.33622659      118  12 1312   188
187 0.025    0.87    0.945 0.9251534 0.31958057      111  11 1319   189
188 0.025    0.88    0.950 0.9319018 0.34984405      101  10 1329   190
189 0.025    0.89    0.950 0.9374233 0.52988575       92  10 1338   190
190 0.025    0.90    0.955 0.9423313 0.51013994       85   9 1345   191
191 0.025    0.91    0.960 0.9472393 0.48830875       78   8 1352   192
192 0.025    0.92    0.960 0.9533742 0.76764143       68   8 1362   192
193 0.025    0.93    0.960 0.9546012 0.83347787       66   8 1364   192
194 0.025    0.94    0.965 0.9625767 1.00000000       54   7 1376   193
195 0.025    0.95    0.975 0.9674847 0.66941736       48   5 1382   195
196 0.025    0.96    0.985 0.9748466 0.46054429       38   3 1392   197
197 0.025    0.97    0.990 0.9773006 0.30116605       35   2 1395   198
198 0.025    0.98    0.990 0.9822086 0.54559553       27   2 1403   198
199 0.025    0.99    0.995 0.9938650 1.00000000        9   1 1421   199
200 0.025    1.00    1.000 1.0000000 0.00000000        0   0 1430   200
enrichment.plotter(gene.hic.KR, "weighted_Z.ALLvar.H", "adj.P.Val", "FDR for Weighted p-val Combine of KR Hi-C Contacts Overlapping Gene", xmax=1)
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
    DEFDR DHICFDR  prop.obs  prop.exp   chisq.p Dneither  DE DHiC Dboth
101 0.025    0.01 0.1233766 0.1145997 0.8182620      993 135  127    19
102 0.025    0.02 0.1623377 0.1742543 0.7622657      923 129  197    25
103 0.025    0.03 0.2207792 0.2189953 1.0000000      875 120  245    34
104 0.025    0.04 0.2792208 0.2519623 0.4641496      842 111  278    43
105 0.025    0.05 0.3181818 0.2723705 0.2057056      822 105  298    49
106 0.025    0.06 0.3376623 0.2990581 0.3067275      791 102  329    52
107 0.025    0.07 0.3701299 0.3265306 0.2547448      761  97  359    57
108 0.025    0.08 0.3831169 0.3524333 0.4471751      730  95  390    59
109 0.025    0.09 0.3961039 0.3673469 0.4836948      713  93  407    61
110 0.025    0.10 0.3961039 0.3806907 0.7401660      696  93  424    61
111 0.025    0.11 0.4220779 0.3940345 0.5018118      683  89  437    65
112 0.025    0.12 0.4415584 0.4058085 0.3809923      671  86  449    68
113 0.025    0.13 0.4545455 0.4230769 0.4496179      651  84  469    70
114 0.025    0.14 0.4545455 0.4324961 0.6154436      639  84  481    70
115 0.025    0.15 0.4675325 0.4427002 0.5651729      628  82  492    72
116 0.025    0.16 0.5064935 0.4552590 0.2021724      618  76  502    78
117 0.025    0.17 0.5129870 0.4615385 0.2006405      611  75  509    79
118 0.025    0.18 0.5194805 0.4733124 0.2552115      597  74  523    80
119 0.025    0.19 0.5389610 0.4843014 0.1733216      586  71  534    83
120 0.025    0.20 0.5389610 0.4952904 0.2845757      572  71  548    83
121 0.025    0.21 0.5389610 0.5015699 0.3660841      564  71  556    83
122 0.025    0.22 0.5519481 0.5156986 0.3820981      548  69  572    85
123 0.025    0.23 0.5714286 0.5337520 0.3609968      528  66  592    88
124 0.025    0.24 0.5714286 0.5392465 0.4423027      521  66  599    88
125 0.025    0.25 0.5779221 0.5455259 0.4384429      514  65  606    89
126 0.025    0.26 0.5779221 0.5572998 0.6433700      499  65  621    89
127 0.025    0.27 0.5909091 0.5698587 0.6341147      485  63  635    91
128 0.025    0.28 0.6103896 0.5816327 0.4936861      473  60  647    94
129 0.025    0.29 0.6363636 0.5879121 0.2241600      469  56  651    98
130 0.025    0.30 0.6363636 0.5973312 0.3341709      457  56  663    98
131 0.025    0.31 0.6428571 0.6043956 0.3405045      449  55  671    99
132 0.025    0.32 0.6493506 0.6106750 0.3362088      442  54  678   100
133 0.025    0.33 0.6493506 0.6177394 0.4397866      433  54  687   100
134 0.025    0.34 0.6493506 0.6240188 0.5461988      425  54  695   100
135 0.025    0.35 0.6623377 0.6310832 0.4423350      418  52  702   102
136 0.025    0.36 0.6688312 0.6389325 0.4626945      409  51  711   103
137 0.025    0.37 0.6753247 0.6444270 0.4445516      403  50  717   104
138 0.025    0.38 0.6818182 0.6491366 0.4143167      398  49  722   105
139 0.025    0.39 0.6818182 0.6538462 0.4915362      392  49  728   105
140 0.025    0.40 0.7012987 0.6624804 0.3194243      384  46  736   108
141 0.025    0.41 0.7077922 0.6687598 0.3142592      377  45  743   109
142 0.025    0.42 0.7142857 0.6726845 0.2793232      373  44  747   110
143 0.025    0.43 0.7142857 0.6805338 0.3865395      363  44  757   110
144 0.025    0.44 0.7272727 0.6844584 0.2597976      360  42  760   112
145 0.025    0.45 0.7337662 0.6891680 0.2370065      355  41  765   113
146 0.025    0.46 0.7467532 0.6915228 0.1363123      354  39  766   115
147 0.025    0.47 0.7532468 0.7009419 0.1561415      343  38  777   116
148 0.025    0.48 0.7532468 0.7040816 0.1830408      339  38  781   116
149 0.025    0.49 0.7662338 0.7072214 0.1047996      337  36  783   118
150 0.025    0.50 0.7662338 0.7158556 0.1666235      326  36  794   118
151 0.025    0.51 0.7727273 0.7213501 0.1553555      320  35  800   119
152 0.025    0.52 0.7727273 0.7299843 0.2390183      309  35  811   119
153 0.025    0.53 0.7727273 0.7339089 0.2867058      304  35  816   119
154 0.025    0.54 0.7792208 0.7448980 0.3454087      291  34  829   120
155 0.025    0.55 0.7792208 0.7503925 0.4340206      284  34  836   120
156 0.025    0.56 0.7792208 0.7574568 0.5674631      275  34  845   120
157 0.025    0.57 0.7857143 0.7653061 0.5919963      266  33  854   121
158 0.025    0.58 0.7857143 0.7692308 0.6775451      261  33  859   121
159 0.025    0.59 0.7922078 0.7731554 0.6174154      257  32  863   122
160 0.025    0.60 0.7987013 0.7802198 0.6263059      249  31  871   123
161 0.025    0.61 0.7987013 0.7841444 0.7159693      244  31  876   123
162 0.025    0.62 0.7987013 0.7849294 0.7345742      243  31  877   123
163 0.025    0.63 0.8051948 0.7888540 0.6710996      239  30  881   124
164 0.025    0.64 0.8116883 0.7967033 0.6994709      230  29  890   125
165 0.025    0.65 0.8246753 0.8061224 0.6083481      220  27  900   127
166 0.025    0.66 0.8246753 0.8092622 0.6819088      216  27  904   127
167 0.025    0.67 0.8311688 0.8186813 0.7509079      205  26  915   128
168 0.025    0.68 0.8441558 0.8281005 0.6531980      195  24  925   130
169 0.025    0.69 0.8506494 0.8351648 0.6624428      187  23  933   131
170 0.025    0.70 0.8506494 0.8367347 0.7024542      185  23  935   131
171 0.025    0.71 0.8506494 0.8414443 0.8290641      179  23  941   131
172 0.025    0.72 0.8636364 0.8485086 0.6609532      172  21  948   133
173 0.025    0.73 0.8636364 0.8547881 0.8333300      164  21  956   133
174 0.025    0.74 0.8701299 0.8594976 0.7784900      159  20  961   134
175 0.025    0.75 0.8766234 0.8634223 0.7012304      155  19  965   135
176 0.025    0.76 0.8831169 0.8681319 0.6461094      150  18  970   136
177 0.025    0.77 0.8896104 0.8744113 0.6330983      143  17  977   137
178 0.025    0.78 0.8896104 0.8806907 0.8168264      135  17  985   137
179 0.025    0.79 0.8896104 0.8822606 0.8661953      133  17  987   137
180 0.025    0.80 0.9025974 0.8893250 0.6723274      126  15  994   139
181 0.025    0.81 0.9090909 0.8924647 0.5675824      123  14  997   140
182 0.025    0.82 0.9090909 0.8956044 0.6576012      119  14 1001   140
183 0.025    0.83 0.9090909 0.9018838 0.8601319      111  14 1009   140
184 0.025    0.84 0.9090909 0.9089482 1.0000000      102  14 1018   140
185 0.025    0.85 0.9285714 0.9152276 0.6313866       97  11 1023   143
186 0.025    0.86 0.9285714 0.9207221 0.8216118       90  11 1030   143
187 0.025    0.87 0.9285714 0.9301413 1.0000000       78  11 1042   143
188 0.025    0.88 0.9480519 0.9356358 0.6209248       74   8 1046   146
189 0.025    0.89 0.9480519 0.9379906 0.7084186       71   8 1049   146
190 0.025    0.90 0.9610390 0.9442700 0.4352894       65   6 1055   148
191 0.025    0.91 0.9610390 0.9481947 0.5665503       60   6 1060   148
192 0.025    0.92 0.9610390 0.9521193 0.7250980       55   6 1065   148
193 0.025    0.93 0.9610390 0.9591837 1.0000000       46   6 1074   148
194 0.025    0.94 0.9740260 0.9686028 0.8688029       36   4 1084   150
195 0.025    0.95 0.9805195 0.9740973 0.7913314       30   3 1090   151
196 0.025    0.96 0.9805195 0.9819466 1.0000000       20   3 1100   151
197 0.025    0.97 0.9805195 0.9866562 0.7388667       14   3 1106   151
198 0.025    0.98 0.9935065 0.9937206 1.0000000        7   1 1113   153
199 0.025    0.99 1.0000000 0.9968603 1.0000000        4   0 1116   154
200 0.025    1.00 1.0000000 1.0000000 0.0000000        0   0 1120   154
#VCs appear to be better on both, but we'll see in final combining of it--pretty sure it's the second set of doing it that's wthe way I did it for HOMER, but double-check.

#FIGS3 for paper:
pap.enrichment.plotter <- function(df, HiC_col, DE_col, xlab, xmax=0.3, i=c(0.01, 0.025, 0.05, 0.075, 0.1), k=seq(0.01, 1, 0.01), significance=FALSE){
  enrich.table <- data.frame(DEFDR = c(rep(i[1], 100), rep(i[2], 100), rep(i[3], 100), rep(i[4], 100), rep(i[5], 100)), DHICFDR=rep(k, 5), prop.obs=NA, prop.exp=NA, chisq.p=NA, Dneither=NA, DE=NA, DHiC=NA, Dboth=NA)
  for(de.FDR in i){
    for(hic.FDR in k){
      enrich.table[which(enrich.table$DEFDR==de.FDR&enrich.table$DHICFDR==hic.FDR), 3:9] <- prop.calculator(df[,DE_col], df[,HiC_col], de.FDR, hic.FDR)
    }
  }
  des.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=prop.obs, group=as.factor(DEFDR), color=as.factor(DEFDR))) +geom_line()+ geom_line(aes(y=prop.exp), linetype="dashed", size=0.5) + ggtitle("Enrichment of DC in DE Genes") + xlab(xlab) + ylab("Proportion of DE genes that are DC") + guides(color=guide_legend(title="FDR for DE Genes"))
  dhics.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=Dboth/(Dboth+DHiC), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_line() + geom_line(aes(y=(((((DE+Dboth)/(Dneither+DE+DHiC+Dboth))*((DHiC+Dboth)/(Dneither+DE+DHiC+Dboth)))*(Dneither+DE+DHiC+Dboth))/(DHiC+Dboth))), linetype="dashed") + ylab("Proportion of DC genes that are DE") +xlab(xlab) + ggtitle("Enrichment of DE in DC Genes") + coord_cartesian(xlim=c(0, xmax), ylim=c(0.05, 0.32)) + guides(color=FALSE)
  joint.enriched <- ggplot(data=enrich.table, aes(x=DHICFDR, y=Dboth/(Dneither+DE+DHiC+Dboth), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_line() + ylab("Proportion of ALL Genes both DE & DHi-C") + xlab(xlab) + geom_line(aes(y=((DE+Dboth)/(Dneither+DE+DHiC+Dboth))*((DHiC+Dboth)/(Dneither+DE+DHiC+Dboth))), linetype="dashed") + ggtitle("Enrichment of Joint DE & DHi-C in All Genes")
  chisq.p <- ggplot(data=enrich.table, aes(x=DHICFDR, y=-log10(chisq.p), group=as.factor(DEFDR), color=as.factor(DEFDR))) + geom_point() + geom_hline(yintercept=-log10(0.05), color="red") + ggtitle("Chi-squared Test P-values") + xlab(xlab) + ylab("-log10(chi-squared p-values)") + coord_cartesian(xlim=c(0, xmax), ylim=c(0, 3.2)) + guides(color=guide_legend(title="DE FDR"))
if(significance==TRUE){
    return(chisq.p)
  }
    else{
      return(dhics.enriched)
    }
}

FIGS3A <- pap.enrichment.plotter(gene.hic.VC, "min_FDR.H", "adj.P.Val", "Minimum FDR of Contacts", xmax=1) #FIGS3A
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect
FIGS3B <- pap.enrichment.plotter(gene.hic.VC, "min_FDR.H", "adj.P.Val", "Minimum FDR of Contacts", xmax=1, significance = TRUE) #FIGS3B
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect
FIGS3C <- pap.enrichment.plotter(gene.hic.VC, "weighted_Z.ALLvar.H", "adj.P.Val", "FDR for Weighted P-val Combination", xmax=1) #FIGS3C
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect
FIGS3D <- pap.enrichment.plotter(gene.hic.VC, "weighted_Z.ALLvar.H", "adj.P.Val", "FDR for Weighted P-val Combination", xmax=1, significance = TRUE) #FIGS3D
Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect

Warning in chisq.test(mytable): Chi-squared approximation may be incorrect
FIGS3 <- plot_grid(FIGS3A, FIGS3B, FIGS3C, FIGS3D, labels=c("A", "B", "C", "D"), align="h", rel_widths=c(1, 1.2))
save_plot("~/Desktop/FIGS3.png", FIGS3, nrow=2, ncol=2)

Now that I’ve seen some enrichment of differential contact (DC) in differential expression (DE) based on my linear modeling results from before, I would like to further quantify this effect. In order to do so, I now extract log2 observed/expected homer-normalized contact frequency values and RPKM expression values for each gene/bin set, so I can look at correlations of these values and assess their explanatory power.

Contact Frequency Extraction

In this section, I proceed to create a function in order to extract the Hi-C interaction frequency values for the different types of summaries I’ve made gene overlaps with above. This allows for operations to be performed separately utilizing different summaries of Hi-C contacts.

######Get a df with the H and C coordinates of the hits, and the IF values from homer. This subset df makes things easier to extract. Both for VC and KR.
###VC
contacts.VC <- data.frame(h1=data.VC$H1, h2=data.VC$H2, c1=data.VC$C1, c2=data.VC$C2, A_21792_HIC=data.VC$`A-21792_VC`, B_28126_HIC=data.VC$`B-28126_VC`, C_3649_HIC=data.VC$`C-3649_VC`, D_40300_HIC=data.VC$`D-40300_VC`, E_28815_HIC=data.VC$`E-28815_VC`, F_28834_HIC=data.VC$`F-28834_VC`, G_3624_HIC=data.VC$`G-3624_VC`, H_3651_HIC=data.VC$`H-3651_VC`, stringsAsFactors = FALSE)
newH1 <- as.numeric(gsub(".*-", "", contacts.VC$h1))
newH2 <- as.numeric(gsub(".*-", "", contacts.VC$h2))
lower.HID <- ifelse(newH1<newH2, contacts.VC$h1, contacts.VC$h2)
higher.HID2 <- ifelse(newH1<newH2, contacts.VC$h2, contacts.VC$h1)
contacts.VC$hpair <- paste(lower.HID, higher.HID2, sep="_")
newC1 <- as.numeric(gsub(".*-", "", contacts.VC$c1))
newC2 <- as.numeric(gsub(".*-", "", contacts.VC$c2))
lower.CID <- ifelse(newC1<newC2, contacts.VC$c1, contacts.VC$c2)
higher.CID2 <- ifelse(newC1<newC2, contacts.VC$c2, contacts.VC$c1)
contacts.VC$cpair <- paste(lower.CID, higher.CID2, sep="_")

###KR
contacts.KR <- data.frame(h1=data.KR$H1, h2=data.KR$H2, c1=data.KR$C1, c2=data.KR$C2, A_21792_HIC=data.KR$`A-21792_KR`, B_28126_HIC=data.KR$`B-28126_KR`, C_3649_HIC=data.KR$`C-3649_KR`, D_40300_HIC=data.KR$`D-40300_KR`, E_28815_HIC=data.KR$`E-28815_KR`, F_28834_HIC=data.KR$`F-28834_KR`, G_3624_HIC=data.KR$`G-3624_KR`, H_3651_HIC=data.KR$`H-3651_KR`, stringsAsFactors = FALSE)
newH1 <- as.numeric(gsub(".*-", "", contacts.KR$h1))
newH2 <- as.numeric(gsub(".*-", "", contacts.KR$h2))
lower.HID <- ifelse(newH1<newH2, contacts.KR$h1, contacts.KR$h2)
higher.HID2 <- ifelse(newH1<newH2, contacts.KR$h2, contacts.KR$h1)
contacts.KR$hpair <- paste(lower.HID, higher.HID2, sep="_")
newC1 <- as.numeric(gsub(".*-", "", contacts.KR$c1))
newC2 <- as.numeric(gsub(".*-", "", contacts.KR$c2))
lower.CID <- ifelse(newC1<newC2, contacts.KR$c1, contacts.KR$c2)
higher.CID2 <- ifelse(newC1<newC2, contacts.KR$c2, contacts.KR$c1)
contacts.KR$cpair <- paste(lower.CID, higher.CID2, sep="_")

#Fix column names for both contacts.VC and contacts.KR
colnames(contacts.KR)[5:12] <- colnames(contacts.VC)[5:12] <- c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC")

#A function that takes a dataframe (like gene.hic.filt) and two columns from the dataframe to create a pair vector for the given interaction. First ensures the first bin in a pair is always lowest to make this easier. Then extracts the IF values for that vector from the contacts df created above. This provides me with the appropriate Hi-C data values for the different bin classes we're examining here, so that I can later test them with linear modeling to quantify their effect on expression.
IF.extractor <- function(dataframe, col1, col2, contacts, species, strand=FALSE){
  new1 <- as.numeric(gsub(".*-", "", dataframe[,col1]))
  if(strand==FALSE){#In the case where I'm not worried about strand, I just work with the second column selected.
    new2 <- as.numeric(gsub(".*-", "", dataframe[,col2]))
    lower1 <- ifelse(new1<new2, dataframe[,col1], dataframe[,col2])
    higher2 <- ifelse(new1<new2, dataframe[,col2], dataframe[,col1]) #Fix all the columns first
    if(species=="H"){ #Then depending on species create the pair column and merge to contact info.
      dataframe[,"hpair"] <- paste(lower1, higher2, sep="_")
      finaldf <- left_join(dataframe, contacts[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "hpair")], by="hpair")
    }
    else if(species=="C"){
      dataframe[,"cpair"] <- paste(lower1, higher2, sep="_")
      finaldf <- left_join(dataframe, contacts[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "cpair")], by="cpair")
    }
  }
  else if(strand==TRUE){#If dealing with upstream and downstream hits, need to do things separately for genes on the + and - strand.
    if(species=="H"){
      US <- ifelse(dataframe[,"Hstrand.H"]=="+", dataframe[,"US_bin.H"], dataframe[,"DS_bin.H"]) #Obtain upstream bins depending on strand.
      new2 <- as.numeric(gsub(".*-", "", US)) #Now rearrange the pairs to ensure regardless of stream we can find the pair (first mate lower coordinates than 2nd).
      lower1 <- ifelse(new1<new2, dataframe[,col1], US)
      higher2 <- ifelse(new1<new2, US, dataframe[,col1])
      dataframe[,"hpair"] <- paste(lower1, higher2, sep="_")
      dataframe[,"USFDR"] <- ifelse(dataframe[,"Hstrand.H"]=="+", dataframe[,"US_FDR.H"], dataframe[,"DS_FDR.H"])
      finaldf <- left_join(dataframe, contacts[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "hpair")], by="hpair")
    }
    else if(species=="C"){
      US <- ifelse(dataframe[,"Hstrand.C"]=="+", dataframe[,"US_bin.C"], dataframe[,"DS_bin.C"]) #Obtain upstream bins depending on strand.
      new2 <- as.numeric(gsub(".*-", "", US)) #Now rearrange the pairs to ensure regardless of stream we can find the pair (first mate lower coordinates than 2nd).
      lower1 <- ifelse(new1<new2, dataframe[,col1], US)
      higher2 <- ifelse(new1<new2, US, dataframe[,col1])
      dataframe[,"cpair"] <- paste(lower1, higher2, sep="_")
      dataframe[,"USFDR"] <- ifelse(dataframe[,"Hstrand.C"]=="+", dataframe[,"US_FDR.C"], dataframe[,"DS_FDR.C"])
      finaldf <- left_join(dataframe, contacts[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "cpair")], by="cpair")
    }
  }
  #before finally returning, remove rows where we don't have full Hi-C data.
  finaldf <- finaldf[complete.cases(finaldf[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC")]),]
  return(finaldf)
}

#Now I can use the IF.extractor function to make a number of different dataframes for actually testing different IF values with the RPKM expression values.
h_minFDR.KR <- IF.extractor(gene.hic.KR, "HID", "min_FDR_bin.H", contacts.KR, "H")

#contacts.VC$hpair <- gsub("Chr. ", "chr", contacts.VC$hpair)
h_minFDR.VC <- IF.extractor(gene.hic.VC, "HID", "min_FDR_bin.H", contacts.VC, "H") #The issue here lies in having renamed h1 and h2 in contacts.VC earlier!
#h_maxB <- IF.extractor(gene.hic.filt, "HID", "max_B_bin.H", contacts, "H")
#c_maxB <- IF.extractor(gene.hic.filt, "CID", "max_B_bin.C", contacts, "C")
#h_US <- IF.extractor(gene.hic.filt, "HID", "US_bin.H", contacts, "H", TRUE)
#c_US <- IF.extractor(gene.hic.filt, "CID", "US_bin.C", contacts, "C", TRUE)

#Write these out so they can be permuted upon on midway2.
fwrite(h_minFDR.KR, "data/old_mediation_permutations/HiC_covs/juicer/h_minFDR.KR", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
fwrite(h_minFDR.VC, "data/old_mediation_permutations/HiC_covs/juicer/h_minFDR.VC", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(h_maxB, "data/old_mediation_permutations/HiC_covs/h_maxB", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(c_maxB, "data/old_mediation_permutations/HiC_covs/c_maxB", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(h_US, "data/old_mediation_permutations/HiC_covs/h_US", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(c_US, "data/old_mediation_permutations/HiC_covs/c_US", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)

#Now the same thing, but subsetting down to ONLY the genes that show evidence for DE at 5% FDR.
h_minFDR_DE.KR <- filter(h_minFDR.KR, adj.P.Val<=0.05)
h_minFDR_DE.VC <- filter(h_minFDR.VC, adj.P.Val<=0.05)
#h_maxB_DE <- filter(h_maxB, adj.P.Val<=0.05)
#c_maxB_DE <- filter(c_maxB, adj.P.Val<=0.05)
#h_US_DE <- filter(h_US, adj.P.Val<=0.05)
#c_US_DE <- filter(c_US, adj.P.Val<=0.05)

fwrite(h_minFDR_DE.KR, "data/old_mediation_permutations/HiC_covs/juicer/h_minFDR_DE.KR", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
fwrite(h_minFDR_DE.VC, "data/old_mediation_permutations/HiC_covs/juicer/h_minFDR_DE.VC", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(h_maxB_DE, "data/old_mediation_permutations/HiC_covs/h_maxB_DE", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(c_maxB_DE, "~/Desktop/Hi-C/HiC_covs/c_maxB_DE", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(h_US_DE, "~/Desktop/Hi-C/HiC_covs/h_US_DE", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)
#fwrite(c_US_DE, "~/Desktop/Hi-C/HiC_covs/c_US_DE", quote = FALSE, sep = "\t", na = "NA", col.names = TRUE)

Now I use these data frames and join each again on the RPKM table by genes, in order to obtain RPKM expression values for each gene-Hi-C bin set.

Merging contact frequency values with expression values.

In this next section I join each of the data frames created above on the RPKM table by genes, in order to have a merged table with expression values and contact frequencies for each gene-Hi-C bin set. I move then to explore correlations between the values.

#Join all of the previously-made Hi-C interaction frequency tables to the RPKM table by genes, to obtain RPKM values in concert with contact frequency values.
RPKM <- as.data.frame(weighted.data$E)
RPKM$genes <- rownames(RPKM)
hmin.KR <- left_join(h_minFDR.KR, RPKM, by="genes")
hmin.VC <- left_join(h_minFDR.VC, RPKM, by="genes")
#hmaxB <- left_join(h_maxB, RPKM, by="genes")
#cmaxB <- left_join(c_maxB, RPKM, by="genes")
#hUS <- left_join(h_US, RPKM, by="genes")
#cUS <- left_join(c_US, RPKM, by="genes")

#Get the same thing filtered for only DE genes.
hminDE.KR <- filter(hmin.KR, adj.P.Val<=0.05)
hminDE.VC <- filter(hmin.VC, adj.P.Val<=0.05)
#hmaxBDE <- filter(hmaxB, adj.P.Val<=0.05)
#cmaxBDE <- filter(cmaxB, adj.P.Val <=0.05)
#hUSDE <- filter(hUS, adj.P.Val<=0.05)
#cUSDE <- filter(cUS, adj.P.Val<=0.05)

hmin_noDE.KR <- filter(hmin.KR, adj.P.Val>0.05) #Pull out specific set of non-DE hits.
hmin_noDE.VC <- filter(hmin.VC, adj.P.Val>0.05)

#Extract contacts and expression for the contact with the lowest FDR from linear modeling.
KRcontacts <- hmin.KR[,61:68]
KRexprs <- hmin.KR[,69:76]
KRcontactsDE <- hminDE.KR[,61:68]
KRexprsDE <- hminDE.KR[,69:76]
nonDEcontactsKR <- hmin_noDE.KR[,61:68]
nonDEexprsKR <- hmin_noDE.KR[,69:76]

VCcontacts <- hmin.VC[,61:68]
VCexprs <- hmin.VC[,69:76]
VCcontactsDE <- hminDE.VC[,61:68]
VCexprsDE <- hminDE.VC[,69:76]
nonDEcontactsVC <- hmin_noDE.VC[,61:68]
nonDEexprsVC <- hmin_noDE.VC[,69:76]

#Function for calculating gene-wise correlations.
cor.calc <- function(hicdata, exprdata){
  cor.exp <- vector(length=nrow(hicdata))
  for(i in 1:nrow(hicdata)){
    cor.exp[i] <- cor(as.numeric(hicdata[i,]), as.numeric(exprdata[i,]))
  }
  return(cor.exp)
}

#Calculate correlations for different sets! I've commented out the species-specific calculations here because they just aren't that interesting. If you look at DE dynamics within each species you do NOT get a gorgeous bimodal as you do for across--looks more uniform and messy.
fullcorsKR <- data.frame(cor=cor.calc(KRcontacts, KRexprs), type="all")
fullDEcorsKR <- data.frame(cor=cor.calc(KRcontactsDE, KRexprsDE), type="DE")
fullnoDEcorsKR <- data.frame(cor=cor.calc(nonDEcontactsKR, nonDEexprsKR), type="non-DE")

#VC now
fullcorsVC <- data.frame(cor=cor.calc(VCcontacts, VCexprs), type="all")
fullDEcorsVC <- data.frame(cor=cor.calc(VCcontactsDE, VCexprsDE), type="DE")
fullnoDEcorsVC <- data.frame(cor=cor.calc(nonDEcontactsVC, nonDEexprsVC), type="non-DE")

#Combine these dfs to plot in one gorgeous ggplot!
ggcorsKR <- rbind(fullcorsKR, fullDEcorsKR, fullnoDEcorsKR)
ggcorsVC <- rbind(fullcorsVC, fullDEcorsVC, fullnoDEcorsVC)

#VC then KR
ggplot(data=filter(ggcorsVC, type=="all"|type=="DE"|type=="non-DE")) + stat_density(aes(x=cor, group=type, color=type, y=..scaled..), position="identity", geom="line") + ggtitle("Correlation b/t RPKM Expression and VC Hi-C Contact Frequency") + xlab("Pearson Correlations b/t RPKM Expression and VC Hi-C Contact Frequency") + ylab("Density") + scale_color_manual("Gene Set", values=c("red", "blue", "green"), labels=c("All genes", "DE genes", "non-DE genes"))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
ggplot(data=filter(ggcorsKR, type=="all"|type=="DE"|type=="non-DE")) + stat_density(aes(x=cor, group=type, color=type, y=..scaled..), position="identity", geom="line") + ggtitle("Correlation b/t RPKM Expression and KR Hi-C Contact Frequency") + xlab("Pearson Correlations b/t RPKM Expression and KR Hi-C Contact Frequency") + ylab("Density") + scale_color_manual("Gene Set", values=c("red", "blue", "green"), labels=c("All genes", "DE genes", "non-DE genes"))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
###This looks great, showing strong bimodal distribution for the DE genes and broader distributions with a peak at 0 for the non-DE set and the full set. To assess if this is legit at all, I now re-run this correlation analysis after permuting the Hi-C values. I shuffle sample IDs on a gene-by-gene basis to accomplish this:
cor.permuter <- function(hicdata, exprdata, nperm){
  result <- data.frame(cor=NA, type=rep(1:nperm, each=nrow(exprdata)))
  for(perm in 1:nperm){
    permute <- hicdata
    for(row in 1:nrow(hicdata)){
      permute[row,] <- sample(hicdata[row,])
    }
    myindices <- which(result$type==perm)
    result[myindices,1] <- cor.calc(permute, exprdata)
  }
  return(result)
}

#Just do it with 5 permutations to see the general effect quickly:
full.perm.KR <- cor.permuter(KRcontacts, KRexprs, 5)
DE.perm.KR <-  cor.permuter(KRcontactsDE, KRexprsDE, 5)
nonDE.perm.KR <- cor.permuter(nonDEcontactsKR, nonDEexprsKR, 5)
full.perm.VC <- cor.permuter(VCcontacts, VCexprs, 5)
DE.perm.VC <-  cor.permuter(VCcontactsDE, VCexprsDE, 5)
nonDE.perm.VC <- cor.permuter(nonDEcontactsVC, nonDEexprsVC, 5)


#Now visualize.
ggplot(data=filter(ggcorsKR, type=="all"|type=="DE"|type=="non-DE")) + stat_density(aes(x=cor, group=type, color=type, y=..scaled..), position="identity", geom="line") + stat_density(data=full.perm.KR, aes(x=cor, group=type), geom="line", linetype="dotted", position="identity") + stat_density(data=DE.perm.KR, aes(x=cor, group=type), geom="line", linetype="dashed", position="identity") + stat_density(data=nonDE.perm.KR, aes(x=cor, group=type), geom="line", linetype="twodash", position="identity") + ggtitle("Correlation b/t RPKM Expression and KR Hi-C Contact Frequency") + xlab("Pearson Correlations b/t RPKM Expression and KR Hi-C Contact Frequency") + ylab("Density") + scale_color_manual("Gene Set", values=c("red", "blue", "green"), labels=c("All genes", "DE genes", "non-DE genes"))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
ggplot(data=filter(ggcorsVC, type=="all"|type=="DE"|type=="non-DE")) + stat_density(aes(x=cor, group=type, color=type, y=..scaled..), position="identity", geom="line") + stat_density(data=full.perm.VC, aes(x=cor, group=type), geom="line", linetype="dotted", position="identity") + stat_density(data=DE.perm.VC, aes(x=cor, group=type), geom="line", linetype="dashed", position="identity") + stat_density(data=nonDE.perm.VC, aes(x=cor, group=type), geom="line", linetype="twodash", position="identity") + ggtitle("Correlation b/t RPKM Expression and VC Hi-C Contact Frequency") + xlab("Pearson Correlations b/t RPKM Expression and VC Hi-C Contact Frequency") + ylab("Density") + scale_color_manual("Gene Set", values=c("red", "blue", "green"), labels=c("All genes", "DE genes", "non-DE genes"))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
#See that permuted datasets have a tighter correlation distribution with a strong peak at 0. Reassuring. In the future I will repeat this analysis on Midway2, running 10000 permutations to see the full range of permuted data possible.

Now that I’ve seen some nice effects in the correlation between expression and contact for different sets of genes, and for permutations on those sets, I move to see what kind of quantitiative explanatory power differential contact (DC) might actually have for differential expression (DE).

How well does Hi-C data explain expression data?

In this next section I “regress out” the effect of Hi-C contacts from their overlapping genes’ RPKM expression values, comparing a linear model run on the base values to one run on the residuals of expression after regressing out Hi-C data. Comparing the p-values before and after this regression can give some sense of whether the DE is being driven by differential Hi-C contacts (DC).

###A function to calculate gene-wise correlations between Hi-C data and expression data, but for spearman correlations. Pearson correlation calculator function is in the chunk above.
cor.calc.spear <- function(hicdata, exprdata){
  cor.exp <- vector(length=nrow(hicdata))
  for(i in 1:nrow(hicdata)){
    cor.exp[i] <- cor(as.numeric(hicdata[i,]), as.numeric(exprdata[i,]), method="spearman")
  }
  return(cor.exp)
}

###A function to permute a Hi-C df by going gene-by-gene (row-by-row) and shuffling all sample IDs.
shuffler <- function(hicdata){
    for(row in 1:nrow(hicdata)){
      hicdata[row,] <- sample(hicdata[row,])
    }
    return(hicdata)
}

###A function that runs a linear model, both with and without Hi-C corrected expression values, and returns a dataframe of hit classes (DE or not before and after correction). Also spits back out p-values before and after correction, as well as correlations between Hi-C data and expression data. Since the former is a one-row data frame of 4 points and the latter is a 3-column data frame with the number of genes rows, returns a list.
lmcorrect <- function(voom.obj, exprs, cov_matrix, meta_df){
  mygenes <- cov_matrix$genes #Pull out the relevant genes here; used for subsetting the voom.obj in a bit.
  cov_matrix <- cov_matrix[, -9] #Remove genes from the cov matrix
  hic_present <- sapply(1:nrow(cov_matrix), function(i) !any(is.na(cov_matrix[i,]))) #First, remove any rows w/ missing Hi-C data.
  exprs <- data.matrix(exprs[hic_present,]) #Filter expression with this
  cov_matrix <- data.matrix(cov_matrix[hic_present,]) #Filter Hi-C data with this
  
  #Now, prepare to run the actual models. First run a model w/ Hi-C as a covariate to evaluate
  SP <- factor(meta_df$SP,levels = c("H","C"))
  design <- model.matrix(~0+SP)
  colnames(design) <- c("Human", "Chimp")
  resid_hic <- array(0, dim=c(nrow(exprs), ncol(cov_matrix))) #Initialize a dataframe for storing the residuals.
  for(i in 1:nrow(exprs)){#Loop through rows of the expression df, running linear modeling w/ Hi-C to obtain residuals.
   resid_hic[i,] <- lm(exprs[i,]~cov_matrix[i,])$resid 
  }
  
  mycon <- makeContrasts(HvC = Human-Chimp, levels = design)
  
  #Filter the voom object to only contain genes that had Hi-C information here.
  good.indices <- which(rownames(voom.obj$E) %in% mygenes)
  voom.obj <- voom.obj[good.indices,]
  
  #Now, replace the RPKM values in the voom object for after linear modeling with the residuals.
  voom.obj.after <- voom.obj
  voom.obj.after$E <- resid_hic
  
  lmFit(voom.obj, design=design) %>% eBayes(.) %>% contrasts.fit(., mycon) %>% eBayes(.) %>% topTable(., coef = 1, adjust.method = "BH", number = Inf, sort.by="none") -> fit_before
  lmFit(voom.obj.after, design=design) %>% eBayes(.) %>% contrasts.fit(., mycon) %>% eBayes(.) %>% topTable(., coef = 1, adjust.method = "BH", number = Inf, sort.by="none") -> fit_after

  result.DE.cats <- data.frame(DEneither=sum(fit_before$adj.P.Val>0.05&fit_after$adj.P.Val>0.05), DEbefore=sum(fit_before$adj.P.Val<=0.05&fit_after$adj.P.Val>0.05), DEafter=sum(fit_before$adj.P.Val>0.05&fit_after$adj.P.Val<=0.05), DEboth=sum(fit_before$adj.P.Val<=0.05&fit_after$adj.P.Val<=0.05))
  result.DE.stats <- data.frame(cor.pear=cor.calc(cov_matrix, exprs), cor.spear=cor.calc.spear(cov_matrix, exprs), pval.before=fit_before$adj.P.Val, pval.after=fit_after$adj.P.Val)
  result <- list("categories"=result.DE.cats, "stats"=result.DE.stats)
  return(result)
}

#Proceed to use the function on the different dataframes I've created with different sets of overlapping Hi-C contacts:
h_minFDR_pvals_KR <- lmcorrect(weighted.data, hmin.KR[,c("A-21792", "B-28126", "C-3649", "D-40300", "E-28815", "F-28834", "G-3624", "H-3651")], hmin.KR[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "genes")], meta.data)
h_minFDR_pvals_VC <- lmcorrect(weighted.data, hmin.VC[,c("A-21792", "B-28126", "C-3649", "D-40300", "E-28815", "F-28834", "G-3624", "H-3651")], hmin.VC[,c("A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC", "genes")], meta.data)

#I now proceed to visualize the difference in p-values for expression before and after "correcting" for the Hi-C data. I am hoping to see many hits in the bottom right quadrant of the following plots, indicating genes that showed up as DE before Hi-C correction, but not after. I also expect that p-values falling farther away from the null line of expectation for p-values being identical between models will have higher correlations, which I color here for the pearson correlation (results look similar for spearman).
#ggplot(data=h_minFDR_pvals_KR$stats, aes(x=-log10(pval.before), y=-log10(pval.after), color=abs(cor.pear))) + geom_point(size=0.01) + geom_hline(yintercept=-log10(0.05), color="red") + geom_vline(xintercept=-log10(0.05), color="red") + geom_abline(slope=1, intercept=0, color="green", linetype="dashed") + ggtitle("Evidence for DE before vs. after regressing out Hi-C min. FDR, KR") + xlab("-log10(p-value of DE before Hi-C regression)") + ylab("-log10(p-value of DE after Hi-C regression")

ggplot(data=h_minFDR_pvals_KR$stats, aes(x=-log10(pval.before), y=-log10(pval.after))) + geom_point(size=0.01) + geom_hline(yintercept=-log10(0.05), color="red") + geom_vline(xintercept=-log10(0.05), color="red") + geom_abline(slope=1, intercept=0, color="green", linetype="dashed") + ggtitle("Evidence for DE Before vs. After Regressing out Hi-C Contact Frequency") + xlab("-log10(p-value of DE before KR Hi-C regression)") + ylab("-log10(p-value of DE after KR Hi-C regression)") + theme(plot.title=element_text(hjust=1))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30
ggplot(data=h_minFDR_pvals_VC$stats, aes(x=-log10(pval.before), y=-log10(pval.after))) + geom_point(size=0.01) + geom_hline(yintercept=-log10(0.05), color="red") + geom_vline(xintercept=-log10(0.05), color="red") + geom_abline(slope=1, intercept=0, color="green", linetype="dashed") + ggtitle("Evidence for DE Before vs. After Regressing out Hi-C Contact Frequency") + xlab("-log10(p-value of DE before VC Hi-C regression)") + ylab("-log10(p-value of DE after VC Hi-C regression)") + theme(plot.title=element_text(hjust=1))

Version Author Date
ae99285 Ittai Eres 2020-08-05
b7d82fc Ittai Eres 2019-04-30

Critically, here I see that “regressing out” Hi-C data and trying to model expression again moves many genes from being significantly differentially expressed (at FDR of 5%) to no longer showing differential expression. Seeing most of the hits in the bottom right corner of these visualizations is what confirms this. Reassuringly, I also see stronger correlations between RPKM expression values and normalized Hi-C interaction frequency values for points farther away from the diagonal green line of expectation. However, since this is not a statistical test, I have no assessment of significance. To accomplish this, I run Monte Carlo mediation testing in the next chunk.

Monte Carlo Mediation Testing

#First, obtain processed data for running MC on the cluster:
# data already filtered
# expr: log2RPKM
# hic: interaction frequency for each individual per gene
expr <- select(hmin.VC, "A-21792", "B-28126", "C-3649", "D-40300", "E-28815", "F-28834", "G-3624", "H-3651", genes, adj.P.Val)
hic <- select(hmin.VC,"A_21792_HIC", "B_28126_HIC", "C_3649_HIC", "D_40300_HIC", "E_28815_HIC", "F_28834_HIC", "G_3624_HIC", "H_3651_HIC")
is_de <- which(expr$adj.P.Val < .05)
isnot_de <- which(expr$adj.P.Val >= .05)
gvec <- expr$genes
expr <- expr[,1:8]

#Set up metadata labels
species <- factor(c("H","H","C","C","H","H","C","C"))
sex <- factor(c("F","M" ,"M","F","M", "F","M","F"))

metadata <- data.frame(sample=names(expr)[1:8],
                       species=species, 
                       sex=sex)

#Grab necessary functions
source("code/mediation_test.R")

#Compute indirect effects:
fit_de <- test_mediation(exprs = expr[is_de,], 
                         fixed_covariates = list(species=metadata$species,
                                                 sex=metadata$sex),
                         varying_covariate = hic[is_de,])

fit_node <- test_mediation(exprs = expr[isnot_de,], 
                           fixed_covariates = list(species=metadata$species,
                                                   sex=metadata$sex),
                           varying_covariate = hic[isnot_de,])

save(fit_de, fit_node, is_de, isnot_de, expr, hic, metadata, gvec,
     file = "output/juicer_mediation.rda")

#These data are then used on a high performance computing cluster to generate many Monte Carlo simulatons and create the confidence interval. Read the MC simulations in here:
mc_de <- readRDS(file = "output/mc_de_juicer.rds")
mc_node <- readRDS(file = "output/mc_node_juicer.rds")

#Now, use those simulations to assess the 95% confidence interval and assign significance of the indirect effect:
#In DE genes
ngenes <- ncol(mc_de)
ab <- fit_de$alpha*fit_de$beta
out <- sapply(1:ngenes, function(g) {
  x <- unlist(mc_de[,g])
  q <- quantile(x, prob = c(.025, .975))
#  q <- quantile(x, prob = c(.005, .995))
  ifelse(0 > q[1] & 0 < q[2], F, T)
})
table(out)
out
FALSE  TRUE 
  284    15 
15/(15+284) #5% DE genes mediated significantly by contact.
[1] 0.05016722
#Visualize for DE genes, Fig S6:
DEdat <- data.frame(bf=fit_de$tau, af=fit_de$tau_prime, significance=out)
DEdat$color <- ifelse(DEdat$significance==TRUE, "red", "black")
plot(x=DEdat$bf, y=DEdat$af, ylab="Effect Size After Controlling for Contact", xlab="Effect Size Before Controlling for Contact", main="Effect of Contact on Expression Divergence in DE genes", col=alpha(DEdat$color, 0.6), pch=16, cex=0.6, xlim=c(-5, 5), ylim=c(-5,5))
legend("topleft", legend=c("95% CI Significant (n=15)", "95% CI Non significant (n=284)"), col=c("red", "black"), pch=16:16, cex=0.8)
abline(0, 1)
abline(h=0)
abline(v=0)

Version Author Date
ae99285 Ittai Eres 2020-08-05
5fda2d6 Ittai Eres 2019-06-25
#In non-DE genes
ngenes <- ncol(mc_node)
ab <- fit_node$alpha*fit_node$beta
out <- sapply(1:ngenes, function(g) {
  x <- unlist(mc_node[,g])
  q <- quantile(x, prob = c(.025, .975))
#  q <- quantile(x, prob = c(.005, .995))
  ifelse(0 > q[1] & 0 < q[2], F, T)
})
table(out)
out
FALSE  TRUE 
 1300    31 
31/(31+1300) #2% non-DE genes appear mediated by contact
[1] 0.02329076
#Visualize for non-DE genes:
noDEdat <- data.frame(bf=fit_node$tau, af=fit_node$tau_prime, significance=out)
noDEdat$color <- ifelse(noDEdat$significance==TRUE, "red", "black")
plot(x=noDEdat$bf, y=noDEdat$af, ylab="Effect Size After Controlling for Contact", xlab="Effect Size Before Controlling for Contact", main="Effect of Contact on Expression Divergence in non-DE genes", col=alpha(noDEdat$color, 0.6), pch=16, cex=0.6, xlim=c(-5, 5), ylim=c(-5,5), adj=0.6)
legend("topleft", legend=c("95% CI Significant (n=31)", "95% CI Non significant (n=1300)"), col=c("red", "black"), pch=16:16, cex=0.8)
abline(0, 1)
abline(h=0)
abline(v=0)

Version Author Date
ae99285 Ittai Eres 2020-08-05
5fda2d6 Ittai Eres 2019-06-25

sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS  10.14.6

Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] compiler  stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] glmnet_2.0-16      foreach_1.4.7      Matrix_1.2-17     
 [4] medinome_0.0.1     vashr_0.99.1       qvalue_2.10.0     
 [7] SQUAREM_2017.10-1  ashr_2.2-32        bedr_1.0.7        
[10] forcats_0.4.0      purrr_0.3.2        readr_1.3.1       
[13] tibble_2.1.3       tidyverse_1.2.1    edgeR_3.20.9      
[16] RColorBrewer_1.1-2 heatmaply_0.16.0   viridis_0.5.1     
[19] viridisLite_0.3.0  stringr_1.4.0      gplots_3.0.1.1    
[22] Hmisc_4.2-0        Formula_1.2-3      survival_2.44-1.1 
[25] lattice_0.20-38    dplyr_0.8.3        plotly_4.9.0      
[28] cowplot_0.9.4      ggplot2_3.2.1      reshape2_1.4.3    
[31] data.table_1.12.0  tidyr_1.0.0        plyr_1.8.4        
[34] limma_3.34.9      

loaded via a namespace (and not attached):
 [1] colorspace_1.4-1     rprojroot_1.3-2      htmlTable_1.13.2    
 [4] futile.logger_1.4.3  base64enc_0.1-3      fs_1.3.1            
 [7] rstudioapi_0.10      lubridate_1.7.4      xml2_1.2.2          
[10] codetools_0.2-16     splines_3.4.0        R.methodsS3_1.7.1   
[13] pscl_1.5.2           doParallel_1.0.15    knitr_1.22          
[16] zeallot_0.1.0        jsonlite_1.6         workflowr_1.4.0     
[19] broom_0.5.2          cluster_2.0.7-1      R.oo_1.22.0         
[22] httr_1.4.1           backports_1.1.4      assertthat_0.2.1    
[25] lazyeval_0.2.2       cli_1.1.0            formatR_1.7         
[28] acepack_1.4.1        htmltools_0.3.6      tools_3.4.0         
[31] gtable_0.3.0         glue_1.3.1           Rcpp_1.0.1          
[34] cellranger_1.1.0     vctrs_0.2.0          gdata_2.18.0        
[37] nlme_3.1-137         iterators_1.0.12     xfun_0.5            
[40] testthat_2.2.1       rvest_0.3.4          lifecycle_0.1.0     
[43] gtools_3.8.1         dendextend_1.12.0    MASS_7.3-51.4       
[46] scales_1.0.0         TSP_1.1-7            hms_0.5.1           
[49] parallel_3.4.0       lambda.r_1.2.4       yaml_2.2.0          
[52] gridExtra_2.3        rpart_4.1-15         latticeExtra_0.6-28 
[55] stringi_1.4.3        highr_0.8            gclus_1.3.2         
[58] checkmate_1.9.4      seriation_1.2-3      caTools_1.17.1.2    
[61] truncnorm_1.0-8      rlang_0.4.0          pkgconfig_2.0.3     
[64] bitops_1.0-6         evaluate_0.13        labeling_0.3        
[67] htmlwidgets_1.3      tidyselect_0.2.5     magrittr_1.5        
[70] R6_2.4.0             generics_0.0.2       pillar_1.4.2        
[73] haven_2.1.1          whisker_0.4          foreign_0.8-72      
[76] withr_2.1.2          mixsqp_0.1-97        nnet_7.3-12         
[79] modelr_0.1.5         crayon_1.3.4         futile.options_1.0.1
[82] KernSmooth_2.23-15   rmarkdown_1.12       locfit_1.5-9.1      
[85] grid_3.4.0           readxl_1.3.1         git2r_0.26.1        
[88] digest_0.6.18        webshot_0.5.1        VennDiagram_1.6.20  
[91] R.utils_2.9.0        munsell_0.5.0        registry_0.5-1