One of the features of methpipe is using a Hidden Markov Model to determine if sites are hypo-methylatyed or not. I figured I’d give that a whirl with the Day 10 data, since it was finished.

First, according to the methpipe documentation we want to restrict our data to only the CpG sites. They offer a handy command “symmetric-cpgs” to do this.

Set working directory, and get a list of the .meth files located in it.

setwd("~/Documents/methpipe-Day10-countfiles")
meth.files <- list.files(pattern = "*.meth")
meth.files
 [1] "EPI-103.meth" "EPI-104.meth" "EPI-111.meth" "EPI-113.meth" "EPI-119.meth" "EPI-120.meth" "EPI-127.meth" "EPI-128.meth" "EPI-135.meth"
[10] "EPI-136.meth" "EPI-143.meth" "EPI-145.meth"

Run the symmetric-cpgs command.

for(i in 1:length(meth.files))   {
  
  system(paste0("/home/shared/methpipe/methpipe-3.4.3/bin/symmetric-cpgs -o ", substr(meth.files[i], 1, 7), "-CpG.meth ", meth.files[i]))
  
}
cpg.files <- list.files(pattern = "*-CpG.meth")
cpg.files
 [1] "EPI-103-CpG.meth" "EPI-104-CpG.meth" "EPI-111-CpG.meth" "EPI-113-CpG.meth" "EPI-119-CpG.meth" "EPI-120-CpG.meth" "EPI-127-CpG.meth"
 [8] "EPI-128-CpG.meth" "EPI-135-CpG.meth" "EPI-136-CpG.meth" "EPI-143-CpG.meth" "EPI-145-CpG.meth"

Next, run the hmr program, which identifies hypomethylated regions using a hidden markov model by loci.

for(i in 1:length(meth.files))   {
  
  system(paste0("/home/shared/methpipe/methpipe-3.4.3/bin/hmr -o ", substr(cpg.files[i], 1, 7), "-CpG.hmr ", cpg.files[i]))
  
}

Make sure the HMR files exist, and look at a few of them.

hmr.files <- list.files(pattern = "*.hmr")
hmr.files
 [1] "EPI-103-CpG.hmr" "EPI-104-CpG.hmr" "EPI-111-CpG.hmr" "EPI-113-CpG.hmr" "EPI-119-CpG.hmr" "EPI-120-CpG.hmr" "EPI-127-CpG.hmr"
 [8] "EPI-128-CpG.hmr" "EPI-135-CpG.hmr" "EPI-136-CpG.hmr" "EPI-143-CpG.hmr" "EPI-145-CpG.hmr"
system(paste0("head ", hmr.files[1]))
scaffold10000   244 3634    HYPO0   45  +
scaffold100042  1235    9910    HYPO1   92  +
scaffold100043  518 3011    HYPO2   73  +
scaffold100043  5922    13424   HYPO3   117 +
scaffold10005   171 5692    HYPO4   65  +
scaffold10005   6736    18646   HYPO5   141 +
scaffold10005   22391   39276   HYPO6   235 +
scaffold100063  361 8039    HYPO7   92  +
scaffold100077  526 7250    HYPO8   109 +
scaffold100105  589 4022    HYPO9   65  +
system(paste0("head ", hmr.files[2]))
scaffold10000   565 4240    HYPO0   42  +
scaffold10000   5463    8904    HYPO1   39  +
scaffold100042  1343    9910    HYPO2   88  +
scaffold100043  518 3578    HYPO3   84  +
scaffold100043  5943    12660   HYPO4   103 +
scaffold10005   313 21174   HYPO5   253 +
scaffold10005   22441   39091   HYPO6   269 +
scaffold100077  363 7250    HYPO7   123 +
scaffold100105  589 4154    HYPO8   65  +
scaffold100105  5433    10596   HYPO9   36  +

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Ctrl+Alt+I.

When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Ctrl+Shift+K to preview the HTML file).

LS0tCnRpdGxlOiAiSHlwb21ldGh5bGF0aW9uIHNpdGVzIGluIERheSAxMCBzYW1wbGVzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpPbmUgb2YgdGhlIGZlYXR1cmVzIG9mIG1ldGhwaXBlIGlzIHVzaW5nIGEgSGlkZGVuIE1hcmtvdiBNb2RlbCB0byBkZXRlcm1pbmUgaWYgc2l0ZXMgYXJlIGh5cG8tbWV0aHlsYXR5ZWQgb3Igbm90LiBJIGZpZ3VyZWQgSSdkIGdpdmUgdGhhdCBhIHdoaXJsIHdpdGggdGhlIERheSAxMCBkYXRhLCBzaW5jZSBpdCB3YXMgZmluaXNoZWQuCgpGaXJzdCwgYWNjb3JkaW5nIHRvIHRoZSBtZXRocGlwZSBkb2N1bWVudGF0aW9uIHdlIHdhbnQgdG8gcmVzdHJpY3Qgb3VyIGRhdGEgdG8gb25seSB0aGUgQ3BHIHNpdGVzLiBUaGV5IG9mZmVyIGEgaGFuZHkgY29tbWFuZCAic3ltbWV0cmljLWNwZ3MiIHRvIGRvIHRoaXMuIAoKU2V0IHdvcmtpbmcgZGlyZWN0b3J5LCBhbmQgZ2V0IGEgbGlzdCBvZiB0aGUgLm1ldGggZmlsZXMgbG9jYXRlZCBpbiBpdC4KYGBge3J9CgpzZXR3ZCgifi9Eb2N1bWVudHMvbWV0aHBpcGUtRGF5MTAtY291bnRmaWxlcyIpCgptZXRoLmZpbGVzIDwtIGxpc3QuZmlsZXMocGF0dGVybiA9ICIqLm1ldGgiKQoKbWV0aC5maWxlcwoKYGBgCgpSdW4gdGhlIHN5bW1ldHJpYy1jcGdzIGNvbW1hbmQuCmBgYHtyfQoKZm9yKGkgaW4gMTpsZW5ndGgobWV0aC5maWxlcykpICAgewogIAogIHN5c3RlbShwYXN0ZTAoIi9ob21lL3NoYXJlZC9tZXRocGlwZS9tZXRocGlwZS0zLjQuMy9iaW4vc3ltbWV0cmljLWNwZ3MgLW8gIiwgc3Vic3RyKG1ldGguZmlsZXNbaV0sIDEsIDcpLCAiLUNwRy5tZXRoICIsIG1ldGguZmlsZXNbaV0pKQogIAp9CgpgYGAKCmBgYHtyfQoKY3BnLmZpbGVzIDwtIGxpc3QuZmlsZXMocGF0dGVybiA9ICIqLUNwRy5tZXRoIikKCmNwZy5maWxlcwoKYGBgCgpOZXh0LCBydW4gdGhlIGhtciBwcm9ncmFtLCB3aGljaCBpZGVudGlmaWVzIGh5cG9tZXRoeWxhdGVkIHJlZ2lvbnMgdXNpbmcgYSBoaWRkZW4gbWFya292IG1vZGVsIGJ5IGxvY2kuIAoKYGBge3J9Cgpmb3IoaSBpbiAxOmxlbmd0aChtZXRoLmZpbGVzKSkgICB7CiAgCiAgc3lzdGVtKHBhc3RlMCgiL2hvbWUvc2hhcmVkL21ldGhwaXBlL21ldGhwaXBlLTMuNC4zL2Jpbi9obXIgLW8gIiwgc3Vic3RyKGNwZy5maWxlc1tpXSwgMSwgNyksICItQ3BHLmhtciAiLCBjcGcuZmlsZXNbaV0pKQogIAp9CgpgYGAKCk1ha2Ugc3VyZSB0aGUgSE1SIGZpbGVzIGV4aXN0LCBhbmQgbG9vayBhdCBhIGZldyBvZiB0aGVtLgoKYGBge3J9CgpobXIuZmlsZXMgPC0gbGlzdC5maWxlcyhwYXR0ZXJuID0gIiouaG1yIikKCmhtci5maWxlcwoKc3lzdGVtKHBhc3RlMCgiaGVhZCAiLCBobXIuZmlsZXNbMV0pKQoKc3lzdGVtKHBhc3RlMCgiaGVhZCAiLCBobXIuZmlsZXNbMl0pKQpgYGAKCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHByZXNzaW5nICpDdHJsK0FsdCtJKi4KCldoZW4geW91IHNhdmUgdGhlIG5vdGVib29rLCBhbiBIVE1MIGZpbGUgY29udGFpbmluZyB0aGUgY29kZSBhbmQgb3V0cHV0IHdpbGwgYmUgc2F2ZWQgYWxvbmdzaWRlIGl0IChjbGljayB0aGUgKlByZXZpZXcqIGJ1dHRvbiBvciBwcmVzcyAqQ3RybCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLgo=