A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor

preprint OA: closed CC-BY-4.0
Full text 211,137 characters · extracted from preprint-html · click to expand
A streamlined workflow for long-read DNA... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/13-1243" }, "headline": "A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor", "datePublished": "2024-10-17T16:53:18", "dateModified": "2025-02-24T14:49:41", "author": [ { "@type": "Person", "name": "Shian Su" }, { "@type": "Person", "name": "Lucinda Xiao" }, { "@type": "Person", "name": "James Lancaster" }, { "@type": "Person", "name": "Tamara Cameron" }, { "@type": "Person", "name": "Kelsey Breslin" }, { "@type": "Person", "name": "Peter F. Hickey" }, { "@type": "Person", "name": "Marnie E. Blewitt" }, { "@type": "Person", "name": "Quentin Gouil" }, { "@type": "Person", "name": "Matthew E. Ritchie" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": "Long-read sequencing technologies have transformed the field of epigenetics by enabling direct, single-base resolution detection of DNA modifications, such as methylation. This produces novel opportunities for studying the role of DNA methylation in gene regulation, imprinting, and disease. However, the unique characteristics of long-read data, including the modBAM format and extended read lengths, necessitate the development of specialised software tools for effective analysis. The NanoMethViz package provides a suite of tools for loading in long-read methylation data, visualising data at various data resolutions. It can convert the data for use with other Bioconductor software such as bsseq, DSS, dmrseq and edgeR to discover differentially methylated regions (DMRs). In this workflow article, we demonstrate the process of converting modBAM files into formats suitable for comprehensive downstream analysis. We leverage NanoMethViz to conduct an exploratory analysis, visually summarizing differences between samples, examining aggregate methylation profiles across gene and CpG islands, and investigating methylation patterns within specific regions at the single-read level. Additionally, we illustrate the use of dmrseq for identifying DMRs and show how to integrate these findings into gene-level visualization plots. Our analysis is applied to a triplicate dataset of haplotyped long-read methylation data from mouse neural stem cells, allowing us to visualize and compare the characteristics of the parental alleles on chromosome 7. By applying DMR analysis, we recover DMRs associated with known imprinted genes and visualise the methylation patterns of these genes summarised at single-read resolution. Through DMR analysis, we identify DMRs associated with known imprinted genes and visualize their methylation patterns at single-read resolution. This streamlined workflow is adaptable to common experimental designs and offers flexibility in the choice of upstream data sources and downstream statistical analysis tools." } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/13-1243/v2", "name": "A streamlined workflow for long-read DNA methylation analysis with..." } } ] } Home Browse A streamlined workflow for long-read DNA methylation analysis with... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Su S, Xiao L, Lancaster J et al. A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.12688/f1000research.155204.2 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. Close Copy Citation Details Export Export Citation Sciwheel EndNote Ref. Manager Bibtex ProCite Sente EXPORT Select a format first Track Share ▬ ✚ Software Tool Article Revised A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] Shian Su https://orcid.org/0000-0003-0800-3567 1 , Lucinda Xiao 1 , James Lancaster 1 , [...] Tamara Cameron 1 , Kelsey Breslin https://orcid.org/0000-0003-4616-8215 1 , Peter F. Hickey https://orcid.org/0000-0002-8153-6258 1 , Marnie E. Blewitt 1 , Quentin Gouil 1 * , Matthew E. Ritchie https://orcid.org/0000-0002-7383-0609 1 * Shian Su https://orcid.org/0000-0003-0800-3567 1 , Lucinda Xiao 1 , [...] James Lancaster 1 , Tamara Cameron 1 , Kelsey Breslin https://orcid.org/0000-0003-4616-8215 1 , Peter F. Hickey https://orcid.org/0000-0002-8153-6258 1 , Marnie E. Blewitt 1 , Quentin Gouil 1 * , Matthew E. Ritchie https://orcid.org/0000-0002-7383-0609 1 * * Equal contributors PUBLISHED 24 Feb 2025 Author details Author details 1 Walter and Eliza Hall Institute of Medical Research, Parkville, Victoria, Australia Shian Su Roles: Conceptualization, Formal Analysis, Investigation, Methodology, Software, Visualization, Writing – Original Draft Preparation Lucinda Xiao Roles: Formal Analysis, Visualization, Writing – Original Draft Preparation James Lancaster Roles: Data Curation, Formal Analysis, Writing – Review & Editing Tamara Cameron Roles: Data Curation, Investigation, Writing – Review & Editing Kelsey Breslin Roles: Data Curation, Investigation, Writing – Review & Editing Peter F. Hickey Roles: Conceptualization, Methodology, Software, Supervision, Writing – Review & Editing Marnie E. Blewitt Roles: Conceptualization, Data Curation, Funding Acquisition, Investigation, Supervision, Writing – Review & Editing Quentin Gouil Roles: Conceptualization, Funding Acquisition, Supervision, Writing – Review & Editing Matthew E. Ritchie Roles: Conceptualization, Funding Acquisition, Supervision, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Bioconductor gateway. Abstract Long-read sequencing technologies have transformed the field of epigenetics by enabling direct, single-base resolution detection of DNA modifications, such as methylation. This produces novel opportunities for studying the role of DNA methylation in gene regulation, imprinting, and disease. However, the unique characteristics of long-read data, including the modBAM format and extended read lengths, necessitate the development of specialised software tools for effective analysis. The NanoMethViz package provides a suite of tools for loading in long-read methylation data, visualising data at various data resolutions. It can convert the data for use with other Bioconductor software such as bsseq, DSS, dmrseq and edgeR to discover differentially methylated regions (DMRs). In this workflow article, we demonstrate the process of converting modBAM files into formats suitable for comprehensive downstream analysis. We leverage NanoMethViz to conduct an exploratory analysis, visually summarizing differences between samples, examining aggregate methylation profiles across gene and CpG islands, and investigating methylation patterns within specific regions at the single-read level. Additionally, we illustrate the use of dmrseq for identifying DMRs and show how to integrate these findings into gene-level visualization plots. Our analysis is applied to a triplicate dataset of haplotyped long-read methylation data from mouse neural stem cells, allowing us to visualize and compare the characteristics of the parental alleles on chromosome 7. By applying DMR analysis, we recover DMRs associated with known imprinted genes and visualise the methylation patterns of these genes summarised at single-read resolution. Through DMR analysis, we identify DMRs associated with known imprinted genes and visualize their methylation patterns at single-read resolution. This streamlined workflow is adaptable to common experimental designs and offers flexibility in the choice of upstream data sources and downstream statistical analysis tools. READ ALL READ LESS Keywords DNA methylation, Differential methylation, Long-read sequencing, Epigenetics, Bioconductor Corresponding Author(s) Shian Su ( [email protected] ) Matthew E. Ritchie ( [email protected] ) Close Corresponding authors: Shian Su, Matthew E. Ritchie Competing interests: No competing interests were disclosed. Grant information: This work was supported by Australian National Health and Medical Research Council (NHMRC) Investigator Grants (GNT2007996 to Q.G., GNT1194345 to M.E.B. and GNT2017257 to M.E.R), Medical Research Future Fund Researcher Exchange and Development in Industry Fellowship (REDIF249 to M.E.R), Victorian State Government Operational Infrastructure Support and Australian Government NHMRC IRIISS. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Su S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Su S, Xiao L, Lancaster J et al. A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.12688/f1000research.155204.2 ) First published: 17 Oct 2024, 13 :1243 ( https://doi.org/10.12688/f1000research.155204.1 ) Latest published: 24 Feb 2025, 13 :1243 ( https://doi.org/10.12688/f1000research.155204.2 ) Revised Amendments from Version 1 This revised manuscript incorporates reviewer feedback and corrections to parts of text. EM-seq is now mentioned in the introduction section as a modern alternative to BS-seq. Additional methylation analysis software outside of the R/Bioconductor ecosystem are now referenced as potential alternatives. New features added to NanoMethViz since its original publication have been described and a note has been added to state backwards compatibility with legacy modification callers on the ONT platform. Software based on PacBio platforms that produce compatible modBAM files are now mentioned. The figure 2 caption has been updated to clarify that the grey bars in the heatmap portion of the plot connect data points on the same read. Under the “Genome-wide analysis” section the initial paragraph has been expanded to explain the utility of the tabix-indexed TSV format. Figure 3 caption has been updated to specify that averaging happens in bins, the text referring to the figure has been updated to specify that the plot is of a sample of 200 genes and an additional sentence has been added to state that the observed pattern correlates with the expected pattern of mostly active genes in the sample. Figure 4 caption has been updated with details on the binarisation, averaging and binning procedures. The binarisation has been re-emphasised in the “Differential methylation” section. Figure 5 has been corrected from describing genes to CpG islands. The analysis regarding the MDS plot has been further detailed to point out the smaller difference between the parental alleles of sample 3 and implications on downstream differential analysis. Additional information has been added to “Operation” section regarding expected resource usage. This revised manuscript incorporates reviewer feedback and corrections to parts of text. EM-seq is now mentioned in the introduction section as a modern alternative to BS-seq. Additional methylation analysis software outside of the R/Bioconductor ecosystem are now referenced as potential alternatives. New features added to NanoMethViz since its original publication have been described and a note has been added to state backwards compatibility with legacy modification callers on the ONT platform. Software based on PacBio platforms that produce compatible modBAM files are now mentioned. The figure 2 caption has been updated to clarify that the grey bars in the heatmap portion of the plot connect data points on the same read. Under the “Genome-wide analysis” section the initial paragraph has been expanded to explain the utility of the tabix-indexed TSV format. Figure 3 caption has been updated to specify that averaging happens in bins, the text referring to the figure has been updated to specify that the plot is of a sample of 200 genes and an additional sentence has been added to state that the observed pattern correlates with the expected pattern of mostly active genes in the sample. Figure 4 caption has been updated with details on the binarisation, averaging and binning procedures. The binarisation has been re-emphasised in the “Differential methylation” section. Figure 5 has been corrected from describing genes to CpG islands. The analysis regarding the MDS plot has been further detailed to point out the smaller difference between the parental alleles of sample 3 and implications on downstream differential analysis. Additional information has been added to “Operation” section regarding expected resource usage. See the authors' detailed response to the review by Tim Triche Jr See the authors' detailed response to the review by Keegan Korthauer READ REVIEWER RESPONSES 1. Introduction DNA methylation is a key epigenetic regulator of gene expression in mammals, involving the addition of a methyl group to cytosine or adenine nucleotides. In mammals, the predominant form of DNA methylation is 5-methylcytosine (5mC) in CpG dinucleotides. CpG methylation is involved in many important epigenetic processes, including differential gene expression, X-chromosome inactivation, genomic imprinting, and maintenance of genome stability. 1 Changes in CpG methylation are implicated in a variety of different disease processes, including tumorigenesis and imprinting disorders such as Prader-Willi Syndrome and Angelman Syndrome. 2 Over the past couple of decades, multiple methods have been developed to measure DNA methylation, including bisulfite sequencing, 3 methylation arrays, 4 enzymatic methyl sequencing (EM-seq), 5 and more recently, third-generation sequencing technologies such as those offered by Oxford Nanopore Technologies (ONT) and Pacific Biosciences (PacBio). While bisulfite sequencing has long been the gold standard for DNA methylation analysis, it suffers from several limitations; these include DNA degradation from the process of bisulfite conversion, incomplete conversion of unmethylated cytosines, amplification bias from PCR, and short read lengths that pose difficulties for assembly and haplotyping. 6 By contrast, ONT’s nanopore sequencing and PacBio’s single-molecule real-time (SMRT) sequencing can directly sequence DNA molecules with all their modifications intact, and use basecalling algorithms to predict DNA modifications from the raw sequencing signal. Basecalling algorithms have the potential for bias, depending on the algorithm and training data used for the model; however, improvements are continually being made to generate more accurate models, and additionally, to detect other DNA modifications in other sequence contexts. 7 EM-seq was recently developed to provide a less harsh process of deaminating unmethylated cytosines, and has been shown to produce less fragmented DNA that is compatible with existing BS-seq pipelines due to the identical base conversion. Using EM-seq with short-reads would miss out on the benefits of long-read sequencing while using it with long-reads may be redundant for the purpose of methylation detection. However, EM-seq allows for PCR amplification which may be necessary for various applications. In this workflow, we will demonstrate how to use the NanoMethViz package 8 and other Bioconductor software to visualise and analyse methylation data generated by ONT long-read sequencing. The sequencing data is currently output in the modBAM file format, which contains the basecalled reads alongside tags for modification information. The NanoMethViz package provides a suite of tools for loading in this methylation data, visualising regional and genome-wide methylation patterns, and exporting data for identifying differentially methylated regions (DMRs) using other Bioconductor software such as bsseq, 9 DSS, 10 dmrseq 11 and edgeR . 12 Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as pycoMeth in Python 13 and modkit developed by ONT. Support for the output of external DMR detection software is not provided in NanoMethViz , but if they can be converted into a GenomicRanges object then they can be visualised using NanoMethViz functions. Since the initial release of NanoMethViz in October 2020, the latest version (v3.3.3) has added support for the now de facto standard modBAM format, as well as the output of the popular software modkit from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous “spaghetti” lines for improved clarity. Older data formats produced by nanopolish, 14 f5c 15 and Megalodon will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats. 2. Methods 2.1 Experimental setup In this workflow, we will analyse ultra-long-read Nanopore sequencing data from the neural stem cells of triplicate E14.5 female mice from Gocuk and Lancaster et al., 2024. 16 The mice were F1 crosses between an Xist knockout (X ΔA X) female 17 and a Castaneus strain (CAST) male. The resulting offspring have sufficiently different parental chromosomes to allow effective genome-wide haplotyping to distinguish the parent-of-origin for long-reads, allowing for the identification of genes that are imprinted or strain-specific. The Xist KO of the maternal genome also guarantees that X-inactivation takes place on the paternal X chromosome, allowing for the study of X-inactivation. The DNA was sequenced on R9.4.1 PromethION flow cells, basecalled with Dorado, aligned to the mm10 mouse reference genome, and phased with WhatsHap 18 to produce the phased modBAM ( Figure 1A ). For illustrative purposes, we use a subset of the data focusing on chromosome 7, which contains several known imprinted genes. Figure 1. Overview of the workflow. (A) Experimental setup for the data used in this workflow, from Gocuk and Lancaster et al., 2024. (B) Flowchart of the workflow for long-read methylation data visualisation and analysis using NanoMethViz and other Bioconductor packages including limma , dmrseq , bsseq , and edgeR . (C) Summary of data structures for the storage of methylation data used in different parts of the workflow. Xi: inactive X. Xa: active X. CAST: Castaneus. 5mC: 5-methylcytosine. MDS: multidimensional scaling. DMR: differentially methylated region. Figure created with BioRender.com . 2.2 Loading software and data We begin by loading the packages and downloading the input data which contains the modBAM files required for this workflow. library (dmrseq) library (dplyr) library (readr) library (plyranges) library (NanoMethViz) set.seed ( 1234 ) if ( ! dir.exists ( "input" )) { options ( timeout = 600 ) download.file ( "https://zenodo.org/records/12747551/files/input.tar.gz?download=1" , "input.tar.gz" ) utils :: untar ( "input.tar.gz" ) file.remove ( "input.tar.gz" ) } Currently, modBAM files are the preferred output of Dorado, the primary methylation caller offered by ONT. ModBAM files are BAM files containing reads with additional tags on each read storing information about methylation calls (the MM tag) alongside their methylation probabilities (the ML tag). Other software that produce modBAM files include Jasmine and ccsmeth 19 for PacBio HiFi data, as well as older ONT-compatible methylation callers such as nanopolish and megalodon. To use this data in NanoMethViz , we must construct an object of the ModBamResults class. The ModBamResults class is a container for storing methylation data from multiple samples, along with sample annotation and exon annotation. To create this object, we need to provide paths to the modBAM files, a sample table, and optionally exon annotation. # List the modBAM files by searching for files with the .bam extension in the input directory bam_files <- dir ( "input" , pattern = "*bam$" , full.names = TRUE ) bam_files ## [1] "input/nsc_1_mat.bam" "input/nsc_1_pat.bam" "input/nsc_2_mat.bam" ## [4] "input/nsc_2_pat.bam" "input/nsc_3_mat.bam" "input/nsc_3_pat.bam" The samples need to be annotated with information for NanoMethViz to use in aggregating data within experimental groups. The sample table must contain sample and group columns with optional additional columns for further annotation. The rows of this table must match the order of the input files. The group column is generally the default grouping column used in the NanoMethViz package. In this example, we have grouped our data by haplotype. samples <- read_tsv ( "input/sample_anno.tsv" , show_col_types = FALSE ) samples ## # A tibble: 6 × 4 ## sample group tissue haplotype ## ## 1 nsc_1_mat nsc_mat nsc mat ## 2 nsc_1_pat nsc_pat nsc pat ## 3 nsc_2_mat nsc_mat nsc mat ## 4 nsc_2_pat nsc_pat nsc pat ## 5 nsc_3_mat nsc_mat nsc mat ## 6 nsc_3_pat nsc_pat nsc pat Optionally we can add exon annotation to the object to generate tracks for gene annotation when plotting genomic regions/genes. The exon annotation must be a data.frame with columns gene_id , chr , strand , start , end , transcript_id , and symbol . Several helper functions are provided to retrieve exon annotations in the correct format for human (hg19, hg38) and mouse (mm10, GRCm39). In this example, we will use the get_exons_mm10() function to retrieve exon annotations for the mouse genome (mm10) and filter for chromosome 7. exon_anno % dplyr :: filter (chr == "chr7" ) exon_anno ## # A tibble: 60,146 × 7 ## gene_id chr strand start end transcript_id symbol ## ## 1 100009609 chr7 - 84935565 84941088 60883 Vmn2r65 ## 2 100009609 chr7 - 84943141 84943264 60883 Vmn2r65 ## 3 100009609 chr7 - 84943504 84943722 60883 Vmn2r65 ## 4 100009609 chr7 - 84946200 84947000 60883 Vmn2r65 ## 5 100009609 chr7 - 84947372 84947651 60883 Vmn2r65 ## 6 100009609 chr7 - 84963816 84964115 60883 Vmn2r65 ## 7 100009609 chr7 - 84935565 84941088 60884 Vmn2r65 ## 8 100009609 chr7 - 84943141 84943264 60884 Vmn2r65 ## 9 100009609 chr7 - 84943504 84943722 60884 Vmn2r65 ## 10 100009609 chr7 - 84946200 84947000 60884 Vmn2r65 ## # 60,136 more rows Once we have created the ModBamResult object, we can use the plot_gene() function to visualise the methylation patterns of a gene of interest. In this example, we will plot the methylation patterns of the Peg3 (paternally-expressed gene 3) gene on chromosome 7, which is known to be imprinted in mice. The plot contains a smoothed trendline of the group-aggregated methylation probabilities across the gene, along with a heatmap showing the methylation probabilities of individual CpG sites in each read, and a track showing the isoforms of the gene if exon annotation is provided ( Figure 2 ). mbr <- ModBamResult ( methy = ModBamFiles ( paths = bam_files, samples = samples $ sample ), samples = samples, exons = exon_anno, mod_code = "m" ) plot_gene (mbr, "Peg3" ) Figure 2. Gene-level plot of Peg3. This plot shows the methylation information along the Peg3 gene on chromosome 7. The top track shows a rolling-smoothed average of methylation probability across the region, aggregated across samples within each experimental group. The middle track shows a heatmap of the methylation probabilities within individual reads, separated by experimental group. Each row of the heatmap shows one or more non-overlapping read with a grey bar connecting data that came from the same read. The bottom track shows isoform annotations for Peg3 , with rectangles representing exons, lines representing introns and arrows representing the direction of transcription. CpG dinucleotides are often enriched around gene promoters, where methylation is generally correlated with silencing and hypomethylation with activation. In the plot, we see that there is a strong demethylation pattern on the paternal allele near the transcription start site (TSS) of the gene, allowing the gene to be expressed. The maternal allele is hypermethylated near the TSS, silencing the gene. This is a typical methylation pattern for an imprinted gene, and consistent with paternal expression of Peg3. 2.3 Genome-wide analysis While it is possible to use modBAM files to analyse specific regions of interest, genome-wide analysis requires the data to be in a tabix-indexed TSV file as it is easier to parse at scale ( Figure 1C ). This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory. We can convert the modBAM files to a tabix-indexed TSV file using the modbam_to_tabix() function. This function will create a tabix-indexed TSV file containing the methylation data from the modBAM files. This file can then be used as input to the NanoMethViz functions that require sorted genomic data. In this example, we will convert the ModBamResult object to a tabix-indexed TSV file and save it to the data directory. We will use a pre-generated file in the interest of time, but you can run the code below to generate the file. dir.create ( "data" , showWarnings = FALSE ) if ( ! file.exists ( "data/methy.tsv.bgz" )) { modbam_to_tabix (mbr, "data/methy.tsv.bgz" ) } Once we have the tabix-indexed TSV file, we can create a NanoMethResult object using the NanoMethResult() function. The NanoMethResult object contains the same information as the ModBamResult object but with the methylation data stored in a tabix-indexed TSV file. To create this object we need to provide paths to the tabix-indexed TSV file, along with the accompanying sample table and exon annotation we generated before. nmr <- NanoMethResult ( methy = "data/methy.tsv.bgz" , samples = samples, exons = exon_anno ) The NanoMethResult object behaves in the same way as ModBamResult for any plotting functions. For example we can use plot_gene() to visualise the methylation patterns of the Peg3 gene in exactly the same way but replacing the ModBamResult object with the NanoMethResult object. We should see the exact same plot as before. plot_gene (nmr, "Peg3" ) 2.4 Aggregating feature methylation data It is often informative to aggregate methylation data over a class of features to identify broad patterns of methylation across the features. This can help establish overall differences in methylation patterns between groups in a class of features such as genes, CpG islands, or enhancers. The NanoMethViz package provides a plot_agg_regions() function for visualising methylation data that has been aggregated across a set of genomic regions of interest, defined by a table of coordinates. For example, we may want to investigate the methylation patterns of a set of genes on chromosome 7. We can use the exons_to_genes() helper function to convert exon annotations already stored in the object to gene annotations and filter for only chromosome 7 genes ( Figure 3 ). For faster processing, we randomly subset 200 genes and use the plot_agg_regions() function to visualise the mean methylation proportions along the sampled genes. By default, the methylation proportion is calculated using a threshold of 0.5 modification probability. gene_anno <- exons_to_genes ( exons (nmr)) plot_agg_regions (nmr, regions = slice_sample (gene_anno, n = 200 ), group_col = "group" ) Figure 3. Aggregated gene-level plot. The mean methylation proportion is shown across a sample of 200 genes in chromosome 7, aggregated by experimental group. Methylation proportions are individual CpG sites are calculated along relative genomic positions, with fixed flanking regions, then averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline. The x-axis label gives the average width and standard deviation of widths of the features used. In this plot we can see that in the sample of 200 genes on chromosome 7 there tends to be demethylation near the TSS region and hypermethylation throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern. Another class of features of interest are CpG islands, which are regions of the genome that are rich in CpG dinucleotides. CpG islands are often associated with gene promoters and are predominantly unmethylated in normal cells. 20 We can use the get_cgi_mm10() function to retrieve CpG island annotations for the mouse genome (mm10) and filter for chromosome 7. We can then use the plot_agg_regions() function to visualise the mean methylation profile across CpG islands on chromosome 7 ( Figure 4 ). cgi_anno % filter (chr == "chr7" ) cgi_anno ## # A tibble: 1,193 × 14 ## bin chr start end gene_id length cpgNum gcNum perCpg perGc obsExp ## ## 1 609 chr7 3181031 3181267 CpG: 22 236 22 147 18.6 62.3 1 ## 2 610 chr7 3303442 3303817 CpG: 28 375 28 249 14.9 66.4 0.69 ## 3 610 chr7 3366695 3366942 CpG: 27 247 27 152 21.9 61.5 1.22 ## 4 611 chr7 3411983 3412269 CpG: 26 286 26 188 18.2 65.7 0.84 ## 5 611 chr7 3414874 3415855 CpG: 87 981 87 518 17.7 52.8 1.28 ## 6 611 chr7 3423522 3423834 CpG: 28 312 28 215 17.9 68.9 0.87 ## 7 612 chr7 3617298 3617534 CpG: 17 236 17 146 14.4 61.9 0.76 ## 8 612 chr7 3629691 3630056 CpG: 32 365 32 195 17.5 53.4 1.24 ## 9 612 chr7 3645002 3645963 CpG: 106 961 106 652 22.1 67.8 0.96 ## 10 612 chr7 3665238 3665517 CpG: 27 279 27 184 19.4 65.9 0.93 ## # 1,183 more rows ## # 3 more variables: transcript_id , strand , symbol plot_agg_regions (nmr, cgi_anno, group_col = "group" ) Figure 4. Aggregated CpG island-level plot. The mean methylation proportion is shown across CpG islands on chromosome 7, aggregated by experimental group. Methylation proportions of individual CpG sites are calculated along relative genomic positions, with fixed flanking regions and a 0.5 modification probability threshold. Mean methylation proportions are calculated in each experimental group along fixed width bins of relative positions to produce a smoothed trendline. As expected, we see a clear pattern of demethylation over CpG islands on chromosome 7, relative to neighbouring genomic regions. 2.5 Differential methylation NanoMethViz is primarily designed for visualising methylation data. In order to perform differential methylation analysis, we can use other Bioconductor packages that implement sophisticated statistical procedures, such as dmrseq . The dmrseq() function requires a BSseq object as input, so we convert the NanoMethResult object to a BSseq object using the methy_to_bsseq() function. This binarises the methylation data based on a threshold of 0.5 and creates counts of methylated and unmethylated reads at each CpG site. We remove any sites that are zero in every sample of either experimental group; these low coverage regions are generally not informative for differential methylation analysis. The BSseq object stores the methylation data as two matrices, the methylation matrix and the coverage matrix ( Figure 1C ), with the option to store additional information such as sample annotation and genomic regions. This conversion process usually takes some time, so we will load a pre-generated BSseq object. The code used to generate the object is provided below. if ( ! file.exists ( "data/bss.rds" )) { bss <- methy_to_bsseq (nmr) saveRDS (bss, "data/bss.rds" ) } else { bss <- readRDS ( "data/bss.rds" ) } pat_cov <- getCoverage (bss)[, which (bss $ group == "nsc_pat" )] mat_cov <- getCoverage (bss)[, which (bss $ group == "nsc_mat" )] low_cov <- ( rowSums (pat_cov == 0 ) == 3 ) | ( rowSums (mat_cov == 0 ) == 3 ) proportions ( table (low_cov)) ## low_cov ## FALSE TRUE ## 0.2853227 0.7146773 bss <- bss[ ! low_cov, ] 2.6 MDS plot Using the BSseq object, we can create a multi-dimensional scaling (MDS) plot to visualise the relative differences in methylation between the samples, a method commonly used in differential gene expression analysis. The MDS function within NanoMethViz uses the plotMDS() function from limma. 21 Since BSseq objects store the methylation data as two matrices, the methylation matrix and the coverage matrix, we need to convert the BSseq object such that each CpG site from each sample is represented by a single value in a matrix. This can be done using the bsseq_to_log_methy_ratio() function, which converts the BSseq object to a matrix of the log of the methylation ratio with a small count added to prevent division by zero. The plot_mds() function can then be used to create an MDS plot of the samples using the log methylation ratio matrix as input. The samples are coloured by group – in this case, maternal and paternal. Because the number of CpG sites is large, here we aggregate the methylation data over CpG islands to both reduce the size of the data and produce a more stable measure of methylation. This is done by providing the regions = cgi_anno argument to bsseq_to_log_methy_ratio() . Without the argument, the function will use individual CpG sites. After the data is aggregated, plot_mds() uses only the top 500 most variable features to create the MDS plot ( Figure 5 ). lmr <- bsseq_to_log_methy_ratio ( bss, regions = cgi_anno ) plot_mds (lmr, groups = bss $ group) Figure 5. MDS plot. The multi-dimensional plot is created based on the top 500 most variable CpG islands in on chromosome 7 in terms of log-methylation-ratio over the regions. The samples are coloured by group, and distances between samples reflects of the difference in the methylation profile across CpG islands in each sample. From this MDS, we see that there is clear separation between the maternal and paternal groups based on CpG islands on chromosome 7, suggesting that the most variable CpG islands are differentially methylated between the two groups. Given that this is autosomal data, the separation is likely due to imprinting or strain-specific effects. Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups. 2.7 Differentially methylated regions Another common analysis is to identify differentially methylated regions (DMRs) between experimental groups. It is often informative to identify DMRs rather than just single differentially-methylated CpG sites, as these may correspond to gene regulatory regions such as promoters, silencers and enhancers, and have biological relevance for differential epigenetic regulation. However, DMRs are not easy to identify, as DMR calling requires the identification of individual significant sites, some determination of whether nearby sites should be aggregated into a region, and a statistical test to determine if the region as a whole is differentially methylated. The dmrseq package can be used to identify DMRs between the two groups in our data. The dmrseq() function from the package requires a BSseq object as input, along with the name of the covariate to test for differential methylation. We will test for differential methylation between the maternal and paternal groups. The dmrseq() function returns a GRanges object containing the DMRs identified by the function. The GRanges object contains the genomic coordinates of the DMRs, along with information about the statistical significance of the DMRs. There are alternatives to dmrseq for identifying DMRs, such as bsseq , DSS and edgeR . For bsseq and DSS , the same BSseq object can be used as input, while edgeR requires a DGEList object as input ( Figure 1C ). The DGEList object can be created from the BSseq object using the bsseq_to_edger() function, or from the NanoMethResult object using the methy_to_edger() function ( Figure 1B ). bsseq , DSS and dmrseq all use a similar approach to identify DMRs: first, they use a statistical test to compare the methylation levels between the two groups at each CpG site, followed by a clustering step to identify regions of the genome with consistent differences in methylation levels for de novo DMR discovery. On the other hand, edgeR requires users to choose the regions to test for differential methylation, which is reflected by the regions over which they choose to summarise counts, and therefore cannot be used for de novo DMR discovery. dmrseq and edgeR produce p -values for each region, while bsseq and DSS only provide p -values for each CpG site along with an aggregated area statistic. if ( ! file.exists ( "data/regions.rds" )) { regions <- dmrseq :: dmrseq (bss, testCovariate = "group" , minNumRegion = 20 ) saveRDS (regions, "data/regions.rds" ) } else { regions <- readRDS ( "data/regions.rds" ) } A number of regions will be produced by dmrseq , including regions that were aggregated because they contained significant CpG sites but subsequently failed to reach statistical significance at a region level. It is difficult to directly interpret the regions returned by differential methylation analysis, and we commonly wish to identify these regions are possible control regions for genes. We do this by associating DMRs with genes using proximity to the gene transcription start site (TSS), first by constructing an annotation of a promoter region, then overlapping it with the DMRs. We use a liberal window of 10kb around the TSS to capture potential promoter regions, this is done by transforming the gene annotation to a GRanges object, then using the promoters() function from IRanges 22 to define the promoter region as 5kb upstream and 5kb downstream of the TSS. We then use the join_overlap_intersect() function from plyranges to find the DMRs that overlap with the gene TSS regions. This will return a GRanges object containing the regions where DMRs which overlap with the promoter region, and the associated gene in that region. gene_anno_gr <- as (gene_anno, "GRanges" ) gene_anno_gr_tss <- IRanges :: promoters (gene_anno_gr, upstream = 5000 , downstream = 5000 ) gene_dmr_overlaps <- plyranges :: join_overlap_intersect (regions, gene_anno_gr_tss) gene_dmr_overlaps ## GRanges object with 868 ranges and 9 metadata columns: ## seqnames ranges strand | L area beta ## | ## [1] chr7 6727308-6731838 * | 157 128.8218 -1.84082 ## [2] chr7 6727308-6731838 * | 157 128.8218 -1.84082 ## [3] chr7 143294268-143296757 * | 112 92.9051 -1.87215 ## [4] chr7 60003279-60005228 * | 60 50.9278 -1.82583 ## [5] chr7 60003279-60005228 * | 60 50.9278 -1.82583 ## … … … … … … … ## [864] chr7 126579062-126580889 * | 27 5.00269 0.0232921 ## [865] chr7 126580818-126580889 * | 27 5.00269 0.0232921 ## [866] chr7 126579942-126580889 * | 27 5.00269 0.0232921 ## [867] chr7 19696925-19697636 * | 23 2.65049 -0.0118438 ## [868] chr7 19696925-19697636 * | 23 2.65049 -0.0118438 ## stat pval qval index gene_id symbol ## ## [1] -40.6010 5.71657e-05 0.0401684 27111-27267 18616 Peg3 ## [2] -40.6010 5.71657e-05 0.0401684 27111-27267 57775 Usp29 ## [3] -32.5253 1.14331e-04 0.0401684 910828-910939 63830 Kcnq1ot1 ## [4] -20.1018 1.14331e-04 0.0401684 335287-335346 52480 Snhg14 ## [5] -20.1018 1.14331e-04 0.0401684 335287-335346 84704 Snurf ## … … … … … … … ## [864] 0.0925951 0.996341 0.997876 764165-764191 102465641 Mir7059 ## [865] 0.0925951 0.996341 0.997876 764165-764191 12752 Cln3 ## [866] 0.0925951 0.996341 0.997876 764165-764191 171504 Apobr ## [867] -0.0795915 0.996456 0.997876 81437-81459 11812 Apoc1 ## [868] -0.0795915 0.996456 0.997876 81437-81459 11816 Apoe ## ------- ## seqinfo: 1 sequence from an unspecified genome; no seqlengths After we identify the DMRs that overlap with the gene TSS regions, we can filter for the significant DMRs using the qval column. This is the adjusted p -value for the DMRs, calculated using the Benjamini-Hochberg procedure to control false-discovery rates for multiple-testing. We can then select the columns we are interested in, such as the gene symbol, chromosome, start and end positions of the DMRs, the strand of the gene, and the q-value of the DMRs. dmr_regions % dplyr :: rename ( chr = "seqnames" ) signif_regions % dplyr :: filter (qval % dplyr :: select (symbol, chr, start, end, strand, qval) ## # A tibble: 8 × 6 ## symbol chr start end strand qval ## ## 1 Peg3 chr7 6727308 6731838 * 0.0402 ## 2 Usp29 chr7 6727308 6731838 * 0.0402 ## 3 Kcnq1ot1 chr7 143294268 143296757 * 0.0402 ## 4 Snhg14 chr7 60003279 60005228 * 0.0402 ## 5 Snurf chr7 60003279 60005228 * 0.0402 ## 6 Mkrn3 chr7 62416953 62423032 * 0.0402 ## 7 Cdkn1c chr7 143459739 143462038 * 0.0402 ## 8 Peg12 chr7 62461469 62464053 * 0.0402 We now have a list of DMRs which overlap the TSS of genes on chromosome 7 and have a q-value < 0.05. The genes on this list are all known imprinted genes in the mouse, including Peg3 , which we plotted in the first section of this workflow. We can plot the methylations of these genes and highlight the DMRs by setting the plot_gene() function’s anno_regions argument to the regions identified. This will highlight the significant regions in the gene plot in a shaded band. Here we will plot Peg3 , Kcnq1ot1 , and Cdkn1c ( Figure 6 ). We can see that for all three of these genes, as required by our filtering criteria, the differentially methylated regions fall near the TSS. options ( "NanoMethViz.highlight_col" = "green" ) (patchwork :: wrap_elements ( plot_gene (nmr, "Peg3" , anno_regions = signif_regions)) / patchwork :: wrap_elements ( plot_gene (nmr, "Kcnq1ot1" , anno_regions = signif_regions)) / patchwork :: wrap_elements ( plot_gene (nmr, "Cdkn1c" , anno_regions = signif_regions))) Figure 6. Gene plots with DMR. The plots show the genes Peg3 , Kcnq1ot1 , and Cdkn1c along with green highlighted region denoting the DMR discovered by dmrseq . We can see that the DMR for Cdkn1c extends beyond the region that is plotted when we use plot_gene() . We can plot these DMRs using plot_region() , with 2000 bases of flanking sequence added to both sides of the DMR to better visualise the full scope of the differentially methylated region ( Figure 7 ). plot_region (nmr, "chr7" , 143459739-2000 , 143462038 + 2000 , anno_regions = signif_regions) Figure 7. Expanded region around Cdkn1c. This plot shows a more expanded region around the gene Cdkn1c to show the full DMR. We have now successfully used dmrseq to statistically identify differentially methylated regions around known imprinted genes. Additionally, we have used that information to visualise the methylation data of the genes associated with the DMRs, and identify maternal- and paternal-specific methylation of the TSS. 3. Summary In this workflow, we have demonstrated a complete end-to-end pipeline for analysing and visualising methylation data generated by ONT long-read sequencing using NanoMethViz , dmrseq and other Bioconductor packages. We have shown how to preprocess the data, load it into NanoMethViz , visualise the methylation patterns of genes and aggregated features, cluster samples using MDS plots, and identify DMRs between experimental groups. We have also shown how to associate DMRs with genes and visualise the methylation patterns of genes associated with DMRs. While the DMRs identified in this tutorial were all associated with known imprinted genes, this workflow could be used in other experimental contexts to identify candidate genes involved in disease pathogenesis, or discover new gene regulatory elements. Further analysis could include enrichment analysis of the differentially-methylated genes, to bring out pathways that may be up- or downregulated in different processes. Ultimately, this workflow demonstrates a toolkit for the exploration and analysis of methylation data from long-read sequencing, which can be applied to a range of resolution levels and biological contexts. While the workflow demonstrates analysis of 5mC data from the ONT platform, it can also be applied to other long-read DNA methylation data such as that produced by PacBio SMRT sequencing, or other modification types such as 5hmC or 6mA, as well as potentially RNA modifications, provided that data is made available in modBAM format. 4. Implementation This workflow makes use of various open-source R packages available from the R 23 and Bioconductor 24 projects, with version numbers shown below. sessionInfo () ## R version 4.4.0 (2024-04-24) ## Platform: aarch64-apple-darwin20 ## Running under: macOS Sonoma 14.3 ## ## Matrix products: default ## BLAS: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib ## LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.0 ## ## locale: ## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 ## ## time zone: Australia/Melbourne ## tzcode source: internal ## ## attached base packages: ## [1] stats4 stats graphics grDevices datasets utils methods ## [8] base ## ## other attached packages: ## [1] NanoMethViz_3.1.5 ggplot2_3.5.1 ## [3] plyranges_1.24.0 readr_2.1.5 ## [5] dplyr_1.1.4 dmrseq_1.24.1 ## [7] bsseq_1.40.0 SummarizedExperiment_1.34.0 ## [9] Biobase_2.64.0 MatrixGenerics_1.16.0 ## [11] matrixStats_1.3.0 GenomicRanges_1.56.1 ## [13] GenomeInfoDb_1.40.1 IRanges_2.38.1 ## [15] S4Vectors_0.42.1 BiocGenerics_0.50.0 ## ## loaded via a namespace (and not attached): ## [1] splines_4.4.0 ## [2] BiocIO_1.14.0 ## [3] bitops_1.0-8 ## [4] filelock_1.0.3 ## [5] tibble_3.2.1 ## [6] R.oo_1.26.0 ## [7] XML_3.99-0.17 ## [8] lifecycle_1.0.4 ## [9] lattice_0.22-6 ## [10] vroom_1.6.5 ## [11] magrittr_2.0.3 ## [12] limma_3.60.4 ## [13] rmarkdown_2.28 ## [14] yaml_2.3.10 ## [15] doRNG_1.8.6 ## [16] DBI_1.2.3 ## [17] RColorBrewer_1.1-3 ## [18] abind_1.4-5 ## [19] zlibbioc_1.50.0 ## [20] purrr_1.0.2 ## [21] R.utils_2.12.3 ## [22] RCurl_1.98-1.16 ## [23] rappdirs_0.3.3 ## [24] cpp11_0.5.0 ## [25] GenomeInfoDbData_1.2.12 ## [26] irlba_2.3.5.1 ## [27] permute_0.9-7 ## [28] DelayedMatrixStats_1.26.0 ## [29] codetools_0.2-20 ## [30] DelayedArray_0.30.1 ## [31] tidyselect_1.2.1 ## [32] outliers_0.15 ## [33] UCSC.utils_1.0.0 ## [34] farver_2.1.2 ## [35] ScaledMatrix_1.12.0 ## [36] BiocFileCache_2.12.0 ## [37] GenomicAlignments_1.40.0 ## [38] jsonlite_1.8.8 ## [39] annotatr_1.30.0 ## [40] e1071_1.7-14 ## [41] iterators_1.0.14 ## [42] foreach_1.5.2 ## [43] dbscan_1.2-0 ## [44] tools_4.4.0 ## [45] Rcpp_1.0.13 ## [46] glue_1.7.0 ## [47] SparseArray_1.4.8 ## [48] xfun_0.47 ## [49] mgcv_1.9-1 ## [50] HDF5Array_1.32.1 ## [51] withr_3.0.1 ## [52] BiocManager_1.30.25 ## [53] fastmap_1.2.0 ## [54] rhdf5filters_1.16.0 ## [55] fansi_1.0.6 ## [56] digest_0.6.37 ## [57] rsvd_1.0.5 ## [58] R6_2.5.1 ## [59] colorspace_2.1-1 ## [60] Cairo_1.6-2 ## [61] gtools_3.9.5 ## [62] RSQLite_2.3.7 ## [63] R.methodsS3_1.8.2 ## [64] utf8_1.2.4 ## [65] tidyr_1.3.1 ## [66] generics_0.1.3 ## [67] renv_1.0.7 ## [68] data.table_1.16.0 ## [69] rtracklayer_1.64.0 ## [70] class_7.3-22 ## [71] httr_1.4.7 ## [72] S4Arrays_1.4.1 ## [73] org.Mm.eg.db_3.19.1 ## [74] regioneR_1.36.0 ## [75] pkgconfig_2.0.3 ## [76] gtable_0.3.5 ## [77] blob_1.2.4 ## [78] XVector_0.44.0 ## [79] htmltools_0.5.8.1 ## [80] bookdown_0.40 ## [81] scales_1.3.0 ## [82] png_0.1-8 ## [83] knitr_1.48 ## [84] tzdb_0.4.0 ## [85] reshape2_1.4.4 ## [86] rjson_0.2.22 ## [87] nlme_3.1-166 ## [88] curl_5.2.2 ## [89] bumphunter_1.46.0 ## [90] proxy_0.4-27 ## [91] cachem_1.1.0 ## [92] rhdf5_2.48.0 ## [93] stringr_1.5.1 ## [94] BiocVersion_3.19.1 ## [95] parallel_4.4.0 ## [96] vipor_0.4.7 ## [97] AnnotationDbi_1.66.0 ## [98] ggrastr_1.0.2 ## [99] restfulr_0.0.15 ## [100] pillar_1.9.0 ## [101] grid_4.4.0 ## [102] vctrs_0.6.5 ## [103] BiocSingular_1.20.0 ## [104] dbplyr_2.5.0 ## [105] beachmat_2.20.0 ## [106] beeswarm_0.4.0 ## [107] evaluate_0.24.0 ## [108] GenomicFeatures_1.56.0 ## [109] cli_3.6.3 ## [110] locfit_1.5-9.10 ## [111] compiler_4.4.0 ## [112] Rsamtools_2.20.0 ## [113] rlang_1.1.4 ## [114] crayon_1.5.3 ## [115] rngtools_1.5.2 ## [116] labeling_0.4.3 ## [117] plyr_1.8.9 ## [118] forcats_1.0.0 ## [119] fs_1.6.4 ## [120] ggbeeswarm_0.7.2 ## [121] stringi_1.8.4 ## [122] TxDb.Mmusculus.UCSC.mm10.knownGene_3.10.0 ## [123] BiocParallel_1.38.0 ## [124] assertthat_0.2.1 ## [125] munsell_0.5.1 ## [126] Biostrings_2.72.1 ## [127] Matrix_1.7-0 ## [128] BSgenome_1.72.0 ## [129] hms_1.1.3 ## [130] patchwork_1.2.0 ## [131] sparseMatrixStats_1.16.0 ## [132] bit64_4.0.5 ## [133] Rhdf5lib_1.26.0 ## [134] KEGGREST_1.44.1 ## [135] statmod_1.5.0 ## [136] AnnotationHub_3.12.0 ## [137] memoise_2.0.1 ## [138] bit_4.0.5 4.1 Operation Using the provided example data, this workflow can be run with 16GB of RAM and 3GB of disk space on a computer with R v4.4.0, Bioconductor v3.19 and the developmental version of NanoMethViz v3.1.5 installed. On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated. Author contributions S.S., L.X. and J.L. developed the workflow, performed data analysis, generated figures and wrote the manuscript and T.C., K.B. and M.E.B. generated data analysed in the workflow. P.F.H., M.E.B., Q.G. and M.E.R. supervised the project and wrote the manuscript. All authors read and approved the final manuscript. Data availability Data files obtained from Gocuk and Lancaster et al. 2024 16 that were used in this workflow are available from: Zenodo: Long-read methylation data analysis with NanoMethViz and Bioconductor, DOI: 10.5281/zenodo.12747550 . File: input.tar.gz contains modBAM (aligned to mm10, split into haplotypes and subset to chromosome 7) and sample annotation information. License: CC0. Software availability The LongMod123 workflow package is available at https://github.com/mritchielab/LongMod123 and from Bioconductor. Acknowledgements We thank Kathleen Zeglinski for creating the NanoMethViz logo and members of the Epigenetics and Development Division at WEHI for their feedback on this workflow. References 1. Jin B, Li Y, Robertson KD: DNA Methylation: Superior or Subordinate in the Epigenetic Hierarchy? Genes Cancer. 2011 Jun; 2 (6): 607–617. PubMed Abstract | Publisher Full Text | Free Full Text 2. Robertson KD: DNA methylation and human disease. Nat. Rev. Genet. 2005 Aug; 6 (8): 597–610. Publisher Full Text 3. Frommer M, McDonald LE, Millar DS, et al. : A genomic sequencing protocol that yields a positive display of 5-methylcytosine residues in individual DNA strands. Proc. Natl. Acad. Sci. USA. 1992 Mar; 89 (5): 1827–1831. PubMed Abstract | Publisher Full Text | Free Full Text 4. Pidsley R, Zotenko E, Peters TJ, et al. : Critical evaluation of the Illumina MethylationEPIC BeadChip microarray for whole-genome DNA methylation profiling. Genome Biol. 2016 Oct; 17 (1): 208. PubMed Abstract | Publisher Full Text | Free Full Text 5. Vaisvila R, Ponnaluri VKC, Sun Z, et al. : Enzymatic methyl sequencing detects DNA methylation at single-base resolution from picograms of DNA. Genome Res. 2021 Jul; 31 (7): 1280–1289. PubMed Abstract | Publisher Full Text | Free Full Text 6. Gouil Q, Keniry A: Latest techniques to study DNA methylation. Essays Biochem. 2019 Dec; 63 (6): 639–648. PubMed Abstract | Publisher Full Text 7. Liu H, Zhou J, Tian W, et al. : DNA methylation atlas of the mouse brain at single-cell resolution. Nature. 2021 Oct; 598 (7879): 120–128. PubMed Abstract | Publisher Full Text | Free Full Text 8. Su S, Gouil Q, Blewitt ME, et al. : NanoMethViz: An R/Bioconductor package for visualizing long-read methylation data. PLoS Comput. Biol. 2021 Oct; 17 (10): e1009524. PubMed Abstract | Publisher Full Text | Free Full Text 9. Hansen KD, Langmead B, Irizarry RA: BSmooth: From whole genome bisulfite sequencing reads to differentially methylated regions. Genome Biol. 2012 Oct; 13 (10): R83. PubMed Abstract | Publisher Full Text | Free Full Text 10. Park Y, Wu H: Differential methylation analysis for BS-seq data under general experimental design. Bioinformatics. 2016 May; 32 (10): 1446–1453. PubMed Abstract | Publisher Full Text 11. Korthauer K, Chakraborty S, Benjamini Y, et al. : Detection and accurate false discovery rate control of differentially methylated regions from whole genome bisulfite sequencing. Biostatistics (Oxford, England). 2019 Jul; 20 (3): 367–383. PubMed Abstract | Publisher Full Text | Free Full Text 12. Chen Y, Pal B, Visvader JE, et al. : Differential methylation analysis of reduced representation bisulfite sequencing experiments using edgeR. F1000Res. 2018 Oct; 6 : 2055. PubMed Abstract | Publisher Full Text | Free Full Text 13. Snajder R, Leger A, Stegle O, et al. : pycoMeth: A toolbox for differential methylation testing from Nanopore methylation calls. Genome Biol. 2023 Apr; 24 (1): 83. PubMed Abstract | Publisher Full Text | Free Full Text 14. Simpson JT, Workman RE, Zuzarte PC, et al. : Detecting DNA cytosine methylation using nanopore sequencing. Nat. Methods. 2017 Apr; 14 (4): 407–410. Publisher Full Text 15. Gamaarachchi H, Lam CW, Jayatilaka G, et al. : GPU accelerated adaptive banded event alignment for rapid comparative nanopore signal analysis. BMC Bioinformatics. 2020 Dec; 21 (1): 343. PubMed Abstract | Publisher Full Text | Free Full Text 16. Gocuk SA, Lancaster J, Su S, et al. : Measuring X inactivation skew for retinal diseases with adaptive nanopore sequencing. Genome Res. 2024 Sep; gr.279396.124. In press. PubMed Abstract | Publisher Full Text 17. Royce-Tolland ME, Andersen AA, Koyfman HR, et al. : The A-repeat links ASF/SF2-dependent Xist RNA processing with random choice during X inactivation. Nat. Struct. Mol. Biol. 2010 Aug; 17 (8): 948–954. PubMed Abstract | Publisher Full Text | Free Full Text 18. Martin M, Patterson M, Garg S, et al. : WhatsHap: Fast and accurate read-based phasing. bioRxiv. 2016 Nov. Publisher Full Text 19. Ni P, Nie F, Zhong Z, et al. : DNA 5-methylcytosine detection and methylation phasing using PacBio circular consensus sequencing. Nat. Commun. 2023 Jul; 14 (1): 4054. PubMed Abstract | Publisher Full Text | Free Full Text 20. Deaton AM, Bird A: CpG islands and the regulation of transcription. Genes Dev. 2011 May; 25 (10): 1010–1022. PubMed Abstract | Publisher Full Text | Free Full Text 21. Ritchie ME, Phipson B, Wu D, et al. : Limma powers differential expression analyses for RNA-sequencing and microarray studies. Nucleic Acids Res. 2015 Apr; 43 (7): e47. PubMed Abstract | Publisher Full Text | Free Full Text 22. Lawrence M, Huber W, Pagès H, et al. : Software for Computing and Annotating Genomic Ranges. PLoS Comput. Biol. 2013 Aug; 9 (8): e1003118. PubMed Abstract | Publisher Full Text | Free Full Text 23. R Core Team: R: A language and environment for statistical computing. Vienna, Austria: R Foundation for Statistical Computing; 2024. 24. Huber W, Carey VJ, Gentleman R, et al. : Orchestrating high-throughput genomic analysis with Bioconductor. Nat. Methods. 2015; 12 (2): 115–121. PubMed Abstract | Publisher Full Text | Free Full Text Comments on this article Comments (1) Version 2 VERSION 2 PUBLISHED 24 Feb 2025 Revised Reader Comment 05 Mar 2025 Gabriele Zoppoli , University of Genoa Department of Internal Medicine and Medical Specialties, Genoa, Italy 05 Mar 2025 Reader Comment Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations ... Continue reading Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations on computational scaling to larger datasets Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations on computational scaling to larger datasets Competing Interests: Immunomica Ltd, co-ownership Close Report a concern Comment ADD YOUR COMMENT Author details Author details 1 Walter and Eliza Hall Institute of Medical Research, Parkville, Victoria, Australia Shian Su Roles: Conceptualization, Formal Analysis, Investigation, Methodology, Software, Visualization, Writing – Original Draft Preparation Lucinda Xiao Roles: Formal Analysis, Visualization, Writing – Original Draft Preparation James Lancaster Roles: Data Curation, Formal Analysis, Writing – Review & Editing Tamara Cameron Roles: Data Curation, Investigation, Writing – Review & Editing Kelsey Breslin Roles: Data Curation, Investigation, Writing – Review & Editing Peter F. Hickey Roles: Conceptualization, Methodology, Software, Supervision, Writing – Review & Editing Marnie E. Blewitt Roles: Conceptualization, Data Curation, Funding Acquisition, Investigation, Supervision, Writing – Review & Editing Quentin Gouil Roles: Conceptualization, Funding Acquisition, Supervision, Writing – Review & Editing Matthew E. Ritchie Roles: Conceptualization, Funding Acquisition, Supervision, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This work was supported by Australian National Health and Medical Research Council (NHMRC) Investigator Grants (GNT2007996 to Q.G., GNT1194345 to M.E.B. and GNT2017257 to M.E.R), Medical Research Future Fund Researcher Exchange and Development in Industry Fellowship (REDIF249 to M.E.R), Victorian State Government Operational Infrastructure Support and Australian Government NHMRC IRIISS. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Article Versions (2) version 2 Revised Published: 24 Feb 2025, 13:1243 https://doi.org/10.12688/f1000research.155204.2 version 1 Published: 17 Oct 2024, 13:1243 https://doi.org/10.12688/f1000research.155204.1 Copyright © 2025 Su S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Su S, Xiao L, Lancaster J et al. A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.12688/f1000research.155204.2 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS track receive updates on this article Track an article to receive email alerts on any updates to this article. TRACK THIS ARTICLE Share Open Peer Review Current Reviewer Status: ? Key to Reviewer Statuses VIEW HIDE Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Version 2 VERSION 2 PUBLISHED 24 Feb 2025 Revised Views 0 Cite How to cite this report: Triche Jr T. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368202 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368202 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 13 Mar 2025 Tim Triche Jr , University of Southern California, Michigan State University, Van Andel Institute, Grand Rapids, USA Approved VIEWS 0 https://doi.org/10.5256/f1000research.177831.r368202 The authors have addressed my concerns and those of Dr. Korthauer (while additionally noting that EMseq is largely superfluous for long reads!). The Peg3 DMR separation is clearly visible in the DMR plot and, for whatever reason, ... Continue reading READ ALL The authors have addressed my concerns and those of Dr. Korthauer (while additionally noting that EMseq is largely superfluous for long reads!). The Peg3 DMR separation is clearly visible in the DMR plot and, for whatever reason, multidimensional scaling seems to have weighted other features more heavily. Such are the perils of unsupervised nonlinear dimension reduction, of which this is a nice example. The dependency of runtime on the various components and inputs is a useful addition when considering what to expect and how to pilot a new analysis. The workflow is quite useful and my lab will accordingly be employing it for our work. I have no further reservations about this manuscript and appreciate the authors' efforts improving it. Competing Interests: No competing interests were disclosed. Reviewer Expertise: bioinformatics, epigenetics, loss of imprinting I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Triche Jr T. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368202 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368202 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Respond or Comment COMMENT ON THIS REPORT Views 0 Cite How to cite this report: Korthauer K. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368201 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368201 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 11 Mar 2025 Keegan Korthauer , Department of Statistics, The University of British Columbia Faculty of Science, BC Children's Hospital Research Institute, Vancouver, British Columbia, Canada Approved VIEWS 0 https://doi.org/10.5256/f1000research.177831.r368201 The authors have fully addressed all of my ... Continue reading READ ALL The authors have fully addressed all of my comments, and I now approve this version without reservation. Competing Interests: No competing interests were disclosed. Reviewer Expertise: Statistical genomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Korthauer K. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368201 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368201 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Respond or Comment COMMENT ON THIS REPORT Version 1 VERSION 1 PUBLISHED 17 Oct 2024 Views 0 Cite How to cite this report: Triche Jr T. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338943 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338943 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 09 Jan 2025 Tim Triche Jr , University of Southern California, Michigan State University, Van Andel Institute, Grand Rapids, USA Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.170344.r338943 The paper and workflow is excellent Contrasting Figure 3 and Figure 5, we see that parent of origin (allelic) methylation analysis is critically important for imprinted regions like PEG3. HOWEVER, the authors state that we can see ... Continue reading READ ALL The paper and workflow is excellent Contrasting Figure 3 and Figure 5, we see that parent of origin (allelic) methylation analysis is critically important for imprinted regions like PEG3. HOWEVER, the authors state that we can see a clear separation for all three replicates along allelic axes. This does not actually appear to be the case -- nsc_3 maternal and paternal are nearly indistinguishable. Searching through the text provides no further remarks on why this is so. For the sake of clarity, it would be highly desirable to discuss the result and its interpretation. dmrseq is great, but it can take a while. It would be ideal to provide users with some idea of what to expect in terms of timing, e.g. by using system.time() for steps that are compute intensive. BSseq conversion is an issue which deserves a separate article/workflow/discussion on how it could be optimized. Warning the reader is appreciated! With minor edits this is a superb manuscript. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: bioinformatics, epigenetics, loss of imprinting I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Triche Jr T. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338943 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338943 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 24 Feb 2025 Matthew Ritchie , Walter and Eliza Hall Institute of Medical Research, Parkville, Australia 24 Feb 2025 Author Response We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between ... Continue reading We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups.” We have checked that the similarity isn’t due to library size artifacts and that there is no larger separation present in the 3rd or 4th dimensions of the MDS. We investigated and found that at least in Peg3 the magnitude of difference between the alleles for that sample is equal to other samples, further investigation is beyond the scope of this workflow demonstration. We have also added more resource usage information into the “Operation” section to help readers determine the amount of resources and time they might need: “On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated.” We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups.” We have checked that the similarity isn’t due to library size artifacts and that there is no larger separation present in the 3rd or 4th dimensions of the MDS. We investigated and found that at least in Peg3 the magnitude of difference between the alleles for that sample is equal to other samples, further investigation is beyond the scope of this workflow demonstration. We have also added more resource usage information into the “Operation” section to help readers determine the amount of resources and time they might need: “On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated.” Competing Interests: No competing interests were disclosed. Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 24 Feb 2025 Matthew Ritchie , Walter and Eliza Hall Institute of Medical Research, Parkville, Australia 24 Feb 2025 Author Response We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between ... Continue reading We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups.” We have checked that the similarity isn’t due to library size artifacts and that there is no larger separation present in the 3rd or 4th dimensions of the MDS. We investigated and found that at least in Peg3 the magnitude of difference between the alleles for that sample is equal to other samples, further investigation is beyond the scope of this workflow demonstration. We have also added more resource usage information into the “Operation” section to help readers determine the amount of resources and time they might need: “On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated.” We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups.” We have checked that the similarity isn’t due to library size artifacts and that there is no larger separation present in the 3rd or 4th dimensions of the MDS. We investigated and found that at least in Peg3 the magnitude of difference between the alleles for that sample is equal to other samples, further investigation is beyond the scope of this workflow demonstration. We have also added more resource usage information into the “Operation” section to help readers determine the amount of resources and time they might need: “On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated.” Competing Interests: No competing interests were disclosed. Close Report a concern COMMENT ON THIS REPORT Views 0 Cite How to cite this report: Korthauer K. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338940 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338940 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 20 Dec 2024 Keegan Korthauer , Department of Statistics, The University of British Columbia Faculty of Science, BC Children's Hospital Research Institute, Vancouver, British Columbia, Canada Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.170344.r338940 This article details a workflow for analyzing long-read DNA methylation analysis using the Bioconductor package NanoMethViz and additional Bioconductor packages. The article illustrates the main functionality of this software and companion tools using a small subset of a published ONT ... Continue reading READ ALL This article details a workflow for analyzing long-read DNA methylation analysis using the Bioconductor package NanoMethViz and additional Bioconductor packages. The article illustrates the main functionality of this software and companion tools using a small subset of a published ONT study of murine imprinting, including: data import, plotting modification probabilities in local annotated regions, summarizing methylation proportions across genomic region sets, and converting to methylated and unmethylated read counts to take advantage of other Bioconductor tools to construct multidimensional scaling plots and visualize differentially methylated regions. The workflow centers on the NanoMethViz software, which is has already been detailed in a PLOS Computational Biology article from 2021 1 . However, this workflow provides advances in (1) providing a detailed vignette using a real-world example, and (2) illustrates several extensions that allow for seamless integration of complementary tools for analysis of DNA methylation data. I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. I have also detailed minor comments below. Minor comments: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. The text references a “Figure C” – is this referring to Figure 1C? The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023 2 ) that would be helpful to mention. Is the rationale for developing the new software tool clearly explained? Partly Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes References 1. Su S, Gouil Q, Blewitt ME, Cook D, et al.: NanoMethViz: An R/Bioconductor package for visualizing long-read methylation data. PLoS Comput Biol . 2021; 17 (10): e1009524 PubMed Abstract | Publisher Full Text 2. Snajder R, Leger A, Stegle O, Bonder MJ: pycoMeth: a toolbox for differential methylation testing from Nanopore methylation calls. Genome Biol . 2023; 24 (1): 83 PubMed Abstract | Publisher Full Text Competing Interests: No competing interests were disclosed. Reviewer Expertise: Statistical genomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Korthauer K. Reviewer Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338940 ) The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338940 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Author Response 24 Feb 2025 Matthew Ritchie , Walter and Eliza Hall Institute of Medical Research, Parkville, Australia 24 Feb 2025 Author Response We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the ... Continue reading We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. Response: We agree and have added the following paragraph at the end of the Introduction to make this more explicit. "Since the initial release of `NanoMethViz` in October 2020, the latest version (v3.3.3) has added support for the now *de facto* standard modBam format, as well as the output of the popular software `Modkit` from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous "spaghetti" lines for improved clarity. Older data formats produced by `nanopolish`, `f5c` and `Megalodon` will remain compatible with `NanoMethViz` and the new features are fully backwards compatible with these formats." Comment: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. Response: We have added mention of other software that produce modBAM output, including Jasmine for the PacBio platform: “Other software that produce modBAM files include `Jasmine` and `ccsmeth` for PacBio HiFi data, as well as older ONT-compatible methylation callers such as `nanopolish` and `megalodon`.“ Additionally we have added the following regarding older formats: “Older data formats produced by `Nanopolish`, `f5c` and `Megalodon` will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats.” Comment: In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Response: The introduction has been updated with mention and brief discussion of EM-seq. Comment: Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Response: The latest developmental version of NanoMethViz (v3.3.3) now displays “Mean Modification Probability” as the y-axis for the gene and region plots and the figures have been updated accordingly. Comment: Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? Response: The interpretation of the heatmap for read-level data has been clarified in the figure caption for Fig 2 with the additional sentence: “Each row of the heatmap shows one or more non-overlapping reads with a grey bar connecting data that came from the same read.” Comment: It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. Response: Thank you for bringing this to our attention. The pink and blue shapes are image artifacts that should not be in the figure - these will be removed in the revised version. Comment: The text references a “Figure C” – is this referring to Figure 1C? Response: Yes - thank you for spotting the missing reference, which has been updated to Figure 1C. Comment: The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. Response: Additional sentences have been added to justify why tabix conversion is necessary: “This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory.” Comment: It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Response: A sentence in the Figure 3 caption has been extended to clarify that the values are averages of methylation proportions in bins along relative position, the preceding text before the figure specifies the 0.5 threshold for binarisation: “averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline.” Comment: Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. Response: Yes, the sample will be a mix of expressed and unexpressed genes in this random selection (if we had matching RNA-seq data, we could have filtered based on expression to select only expressed genes more precisely). The methylation pattern we see here suggests that there is a good number of expressed genes in this random sample and we have updated the text to mention this: “In this plot we see that in the sample of 200 genes on chromosome 7 there tends to be demethylated near the TSS region and hypermethylated throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in the promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern." Comment: What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? Response: When converting to BSSeq a 0.5 threshold is used. But in the aggregate plots the user is able to set their own threshold for binarisation. An argument to set the threshold for BSSeq object conversion will be added in future versions of the package. Comment: The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023) that would be helpful to mention. Response: We have added mentions of software external to Bioconductor, along with suggestions of how they may be imported into the workflow: "Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as `pycoMeth` in Python and `modkit` developed by ONT. Support for the output of external DMR detection software is not provided in `NanoMethViz`, but if they can be converted into a `GenomicRanges` object then they can be visualised using `NanoMethViz` functions." We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. Response: We agree and have added the following paragraph at the end of the Introduction to make this more explicit. "Since the initial release of `NanoMethViz` in October 2020, the latest version (v3.3.3) has added support for the now *de facto* standard modBam format, as well as the output of the popular software `Modkit` from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous "spaghetti" lines for improved clarity. Older data formats produced by `nanopolish`, `f5c` and `Megalodon` will remain compatible with `NanoMethViz` and the new features are fully backwards compatible with these formats." Comment: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. Response: We have added mention of other software that produce modBAM output, including Jasmine for the PacBio platform: “Other software that produce modBAM files include `Jasmine` and `ccsmeth` for PacBio HiFi data, as well as older ONT-compatible methylation callers such as `nanopolish` and `megalodon`.“ Additionally we have added the following regarding older formats: “Older data formats produced by `Nanopolish`, `f5c` and `Megalodon` will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats.” Comment: In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Response: The introduction has been updated with mention and brief discussion of EM-seq. Comment: Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Response: The latest developmental version of NanoMethViz (v3.3.3) now displays “Mean Modification Probability” as the y-axis for the gene and region plots and the figures have been updated accordingly. Comment: Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? Response: The interpretation of the heatmap for read-level data has been clarified in the figure caption for Fig 2 with the additional sentence: “Each row of the heatmap shows one or more non-overlapping reads with a grey bar connecting data that came from the same read.” Comment: It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. Response: Thank you for bringing this to our attention. The pink and blue shapes are image artifacts that should not be in the figure - these will be removed in the revised version. Comment: The text references a “Figure C” – is this referring to Figure 1C? Response: Yes - thank you for spotting the missing reference, which has been updated to Figure 1C. Comment: The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. Response: Additional sentences have been added to justify why tabix conversion is necessary: “This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory.” Comment: It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Response: A sentence in the Figure 3 caption has been extended to clarify that the values are averages of methylation proportions in bins along relative position, the preceding text before the figure specifies the 0.5 threshold for binarisation: “averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline.” Comment: Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. Response: Yes, the sample will be a mix of expressed and unexpressed genes in this random selection (if we had matching RNA-seq data, we could have filtered based on expression to select only expressed genes more precisely). The methylation pattern we see here suggests that there is a good number of expressed genes in this random sample and we have updated the text to mention this: “In this plot we see that in the sample of 200 genes on chromosome 7 there tends to be demethylated near the TSS region and hypermethylated throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in the promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern." Comment: What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? Response: When converting to BSSeq a 0.5 threshold is used. But in the aggregate plots the user is able to set their own threshold for binarisation. An argument to set the threshold for BSSeq object conversion will be added in future versions of the package. Comment: The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023) that would be helpful to mention. Response: We have added mentions of software external to Bioconductor, along with suggestions of how they may be imported into the workflow: "Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as `pycoMeth` in Python and `modkit` developed by ONT. Support for the output of external DMR detection software is not provided in `NanoMethViz`, but if they can be converted into a `GenomicRanges` object then they can be visualised using `NanoMethViz` functions." Competing Interests: No competing interests were disclosed. Close Report a concern Respond or Comment COMMENTS ON THIS REPORT Author Response 24 Feb 2025 Matthew Ritchie , Walter and Eliza Hall Institute of Medical Research, Parkville, Australia 24 Feb 2025 Author Response We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the ... Continue reading We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. Response: We agree and have added the following paragraph at the end of the Introduction to make this more explicit. "Since the initial release of `NanoMethViz` in October 2020, the latest version (v3.3.3) has added support for the now *de facto* standard modBam format, as well as the output of the popular software `Modkit` from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous "spaghetti" lines for improved clarity. Older data formats produced by `nanopolish`, `f5c` and `Megalodon` will remain compatible with `NanoMethViz` and the new features are fully backwards compatible with these formats." Comment: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. Response: We have added mention of other software that produce modBAM output, including Jasmine for the PacBio platform: “Other software that produce modBAM files include `Jasmine` and `ccsmeth` for PacBio HiFi data, as well as older ONT-compatible methylation callers such as `nanopolish` and `megalodon`.“ Additionally we have added the following regarding older formats: “Older data formats produced by `Nanopolish`, `f5c` and `Megalodon` will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats.” Comment: In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Response: The introduction has been updated with mention and brief discussion of EM-seq. Comment: Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Response: The latest developmental version of NanoMethViz (v3.3.3) now displays “Mean Modification Probability” as the y-axis for the gene and region plots and the figures have been updated accordingly. Comment: Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? Response: The interpretation of the heatmap for read-level data has been clarified in the figure caption for Fig 2 with the additional sentence: “Each row of the heatmap shows one or more non-overlapping reads with a grey bar connecting data that came from the same read.” Comment: It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. Response: Thank you for bringing this to our attention. The pink and blue shapes are image artifacts that should not be in the figure - these will be removed in the revised version. Comment: The text references a “Figure C” – is this referring to Figure 1C? Response: Yes - thank you for spotting the missing reference, which has been updated to Figure 1C. Comment: The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. Response: Additional sentences have been added to justify why tabix conversion is necessary: “This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory.” Comment: It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Response: A sentence in the Figure 3 caption has been extended to clarify that the values are averages of methylation proportions in bins along relative position, the preceding text before the figure specifies the 0.5 threshold for binarisation: “averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline.” Comment: Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. Response: Yes, the sample will be a mix of expressed and unexpressed genes in this random selection (if we had matching RNA-seq data, we could have filtered based on expression to select only expressed genes more precisely). The methylation pattern we see here suggests that there is a good number of expressed genes in this random sample and we have updated the text to mention this: “In this plot we see that in the sample of 200 genes on chromosome 7 there tends to be demethylated near the TSS region and hypermethylated throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in the promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern." Comment: What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? Response: When converting to BSSeq a 0.5 threshold is used. But in the aggregate plots the user is able to set their own threshold for binarisation. An argument to set the threshold for BSSeq object conversion will be added in future versions of the package. Comment: The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023) that would be helpful to mention. Response: We have added mentions of software external to Bioconductor, along with suggestions of how they may be imported into the workflow: "Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as `pycoMeth` in Python and `modkit` developed by ONT. Support for the output of external DMR detection software is not provided in `NanoMethViz`, but if they can be converted into a `GenomicRanges` object then they can be visualised using `NanoMethViz` functions." We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. Response: We agree and have added the following paragraph at the end of the Introduction to make this more explicit. "Since the initial release of `NanoMethViz` in October 2020, the latest version (v3.3.3) has added support for the now *de facto* standard modBam format, as well as the output of the popular software `Modkit` from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous "spaghetti" lines for improved clarity. Older data formats produced by `nanopolish`, `f5c` and `Megalodon` will remain compatible with `NanoMethViz` and the new features are fully backwards compatible with these formats." Comment: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. Response: We have added mention of other software that produce modBAM output, including Jasmine for the PacBio platform: “Other software that produce modBAM files include `Jasmine` and `ccsmeth` for PacBio HiFi data, as well as older ONT-compatible methylation callers such as `nanopolish` and `megalodon`.“ Additionally we have added the following regarding older formats: “Older data formats produced by `Nanopolish`, `f5c` and `Megalodon` will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats.” Comment: In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Response: The introduction has been updated with mention and brief discussion of EM-seq. Comment: Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Response: The latest developmental version of NanoMethViz (v3.3.3) now displays “Mean Modification Probability” as the y-axis for the gene and region plots and the figures have been updated accordingly. Comment: Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? Response: The interpretation of the heatmap for read-level data has been clarified in the figure caption for Fig 2 with the additional sentence: “Each row of the heatmap shows one or more non-overlapping reads with a grey bar connecting data that came from the same read.” Comment: It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. Response: Thank you for bringing this to our attention. The pink and blue shapes are image artifacts that should not be in the figure - these will be removed in the revised version. Comment: The text references a “Figure C” – is this referring to Figure 1C? Response: Yes - thank you for spotting the missing reference, which has been updated to Figure 1C. Comment: The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. Response: Additional sentences have been added to justify why tabix conversion is necessary: “This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory.” Comment: It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Response: A sentence in the Figure 3 caption has been extended to clarify that the values are averages of methylation proportions in bins along relative position, the preceding text before the figure specifies the 0.5 threshold for binarisation: “averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline.” Comment: Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. Response: Yes, the sample will be a mix of expressed and unexpressed genes in this random selection (if we had matching RNA-seq data, we could have filtered based on expression to select only expressed genes more precisely). The methylation pattern we see here suggests that there is a good number of expressed genes in this random sample and we have updated the text to mention this: “In this plot we see that in the sample of 200 genes on chromosome 7 there tends to be demethylated near the TSS region and hypermethylated throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in the promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern." Comment: What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? Response: When converting to BSSeq a 0.5 threshold is used. But in the aggregate plots the user is able to set their own threshold for binarisation. An argument to set the threshold for BSSeq object conversion will be added in future versions of the package. Comment: The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023) that would be helpful to mention. Response: We have added mentions of software external to Bioconductor, along with suggestions of how they may be imported into the workflow: "Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as `pycoMeth` in Python and `modkit` developed by ONT. Support for the output of external DMR detection software is not provided in `NanoMethViz`, but if they can be converted into a `GenomicRanges` object then they can be visualised using `NanoMethViz` functions." Competing Interests: No competing interests were disclosed. Close Report a concern COMMENT ON THIS REPORT Comments on this article Comments (1) Version 2 VERSION 2 PUBLISHED 24 Feb 2025 Revised Reader Comment 05 Mar 2025 Gabriele Zoppoli , University of Genoa Department of Internal Medicine and Medical Specialties, Genoa, Italy 05 Mar 2025 Reader Comment Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations ... Continue reading Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations on computational scaling to larger datasets Extremely interesting. I wonder how it may be adapted to low-pass nanopore sequencing of cfDNA, e.g. in cancer or other cfDNA applications. Also, it may be worth to add considerations on computational scaling to larger datasets Competing Interests: Immunomica Ltd, co-ownership Close Report a concern Comment ADD YOUR COMMENT keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Reviewer Reports Invited Reviewers 1 2 Version 2 (revision) 24 Feb 25 read read Version 1 17 Oct 24 read read Keegan Korthauer , The University of British Columbia Faculty of Science, BC Children's Hospital Research Institute, Vancouver, Canada Tim Triche Jr , Van Andel Institute, Grand Rapids, USA Comments on this article All Comments (1) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Triche Jr T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 13 Mar 2025 | for Version 2 Tim Triche Jr , University of Southern California, Michigan State University, Van Andel Institute, Grand Rapids, USA 0 Views copyright © 2025 Triche Jr T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions The authors have addressed my concerns and those of Dr. Korthauer (while additionally noting that EMseq is largely superfluous for long reads!). The Peg3 DMR separation is clearly visible in the DMR plot and, for whatever reason, multidimensional scaling seems to have weighted other features more heavily. Such are the perils of unsupervised nonlinear dimension reduction, of which this is a nice example. The dependency of runtime on the various components and inputs is a useful addition when considering what to expect and how to pilot a new analysis. The workflow is quite useful and my lab will accordingly be employing it for our work. I have no further reservations about this manuscript and appreciate the authors' efforts improving it. Competing Interests No competing interests were disclosed. Reviewer Expertise bioinformatics, epigenetics, loss of imprinting I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (0) Triche Jr T. Peer Review Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368202) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368202 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Korthauer K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 11 Mar 2025 | for Version 2 Keegan Korthauer , Department of Statistics, The University of British Columbia Faculty of Science, BC Children's Hospital Research Institute, Vancouver, British Columbia, Canada 0 Views copyright © 2025 Korthauer K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions The authors have fully addressed all of my comments, and I now approve this version without reservation. Competing Interests No competing interests were disclosed. Reviewer Expertise Statistical genomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (0) Korthauer K. Peer Review Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.177831.r368201) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-1243/v2#referee-response-368201 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Triche Jr T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 09 Jan 2025 | for Version 1 Tim Triche Jr , University of Southern California, Michigan State University, Van Andel Institute, Grand Rapids, USA 0 Views copyright © 2025 Triche Jr T. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions The paper and workflow is excellent Contrasting Figure 3 and Figure 5, we see that parent of origin (allelic) methylation analysis is critically important for imprinted regions like PEG3. HOWEVER, the authors state that we can see a clear separation for all three replicates along allelic axes. This does not actually appear to be the case -- nsc_3 maternal and paternal are nearly indistinguishable. Searching through the text provides no further remarks on why this is so. For the sake of clarity, it would be highly desirable to discuss the result and its interpretation. dmrseq is great, but it can take a while. It would be ideal to provide users with some idea of what to expect in terms of timing, e.g. by using system.time() for steps that are compute intensive. BSseq conversion is an issue which deserves a separate article/workflow/discussion on how it could be optimized. Warning the reader is appreciated! With minor edits this is a superb manuscript. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise bioinformatics, epigenetics, loss of imprinting I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (1) Author Response 24 Feb 2025 Matthew Ritchie, Walter and Eliza Hall Institute of Medical Research, Parkville, Australia We thank the reviewer for their encouraging feedback. We have added new text to clarify the interpretation of the MDS plot: “Sample 3 shows only a small difference between the haplotypes, indicating that both its alleles have very similar methylation patterns. Given the level of separation of the groups relative to the similarity of alleles on sample 3, we expect to find some but not many differentially methylated regions between the maternal and paternal groups.” We have checked that the similarity isn’t due to library size artifacts and that there is no larger separation present in the 3rd or 4th dimensions of the MDS. We investigated and found that at least in Peg3 the magnitude of difference between the alleles for that sample is equal to other samples, further investigation is beyond the scope of this workflow demonstration. We have also added more resource usage information into the “Operation” section to help readers determine the amount of resources and time they might need: “On a M3 Macbook Pro with 36GB of RAM, the workflow without pre-generated data takes approximately 8 minutes to run. The time consuming steps are the conversion of the modBAM to tabix-tsv (~80s), the conversion from tabix-tsv to BSseq (~40s) and running dmrseq (~140s). Other time-intensive steps include the aggregate plots over 200 genes (~10s) and over CpG islands (~25s). The input data to this workflow is 1.5GB of modBAM files while in the full dataset there is 60GB of modBAM generated from 3 PromethION flowcells. Run times for conversion functions are expected scale linearly with the size of the input data, run time for dmrseq is expected to scale linearly with the number of genomic sites to be tested, and run time for aggregate plots is expected to scale linearly with the number and average width of the features to be aggregated.” View more View less Competing Interests No competing interests were disclosed. reply Respond Report a concern Triche Jr T. Peer Review Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338943) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338943 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2024 Korthauer K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 20 Dec 2024 | for Version 1 Keegan Korthauer , Department of Statistics, The University of British Columbia Faculty of Science, BC Children's Hospital Research Institute, Vancouver, British Columbia, Canada 0 Views copyright © 2024 Korthauer K. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (1) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions This article details a workflow for analyzing long-read DNA methylation analysis using the Bioconductor package NanoMethViz and additional Bioconductor packages. The article illustrates the main functionality of this software and companion tools using a small subset of a published ONT study of murine imprinting, including: data import, plotting modification probabilities in local annotated regions, summarizing methylation proportions across genomic region sets, and converting to methylated and unmethylated read counts to take advantage of other Bioconductor tools to construct multidimensional scaling plots and visualize differentially methylated regions. The workflow centers on the NanoMethViz software, which is has already been detailed in a PLOS Computational Biology article from 2021 1 . However, this workflow provides advances in (1) providing a detailed vignette using a real-world example, and (2) illustrates several extensions that allow for seamless integration of complementary tools for analysis of DNA methylation data. I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. I have also detailed minor comments below. Minor comments: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. The text references a “Figure C” – is this referring to Figure 1C? The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023 2 ) that would be helpful to mention. Is the rationale for developing the new software tool clearly explained? Partly Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes References 1. Su S, Gouil Q, Blewitt ME, Cook D, et al.: NanoMethViz: An R/Bioconductor package for visualizing long-read methylation data. PLoS Comput Biol . 2021; 17 (10): e1009524 PubMed Abstract | Publisher Full Text 2. Snajder R, Leger A, Stegle O, Bonder MJ: pycoMeth: a toolbox for differential methylation testing from Nanopore methylation calls. Genome Biol . 2023; 24 (1): 83 PubMed Abstract | Publisher Full Text Competing Interests No competing interests were disclosed. Reviewer Expertise Statistical genomics I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (1) Author Response 24 Feb 2025 Matthew Ritchie, Walter and Eliza Hall Institute of Medical Research, Parkville, Australia We thank the reviewer for their detailed feedback. We have responded to their comments in point-by-point form below. Comment: I feel the article would be strengthened by explicitly highlighting the advances made to the software since its release (e.g. supporting updated file types, adding conversion functions), as this type of work is too often devalued even though it is just as important to scientific progress as developing brand new tools. Response: We agree and have added the following paragraph at the end of the Introduction to make this more explicit. "Since the initial release of `NanoMethViz` in October 2020, the latest version (v3.3.3) has added support for the now *de facto* standard modBam format, as well as the output of the popular software `Modkit` from ONT. Helper functions have been added to retrieve exon level and CpG island annotation for the mouse genome (mm10, GRCm39) and human genomes (hg19, hg38). A heatmap has been incorporated into the main plots to visualise read-wise methylation data and replaces the previous "spaghetti" lines for improved clarity. Older data formats produced by `nanopolish`, `f5c` and `Megalodon` will remain compatible with `NanoMethViz` and the new features are fully backwards compatible with these formats." Comment: The NanoMethViz package and workflow take as input the modBAM files currently output by ONT long-read sequencing processing software Dorado. It may be helpful to the reader to indicate whether other software currently output this file format (including ONT tools as well as PacBio tools). Does NanoMethViz also provide functionality for output of any other format to facilitate reanalysis of prior studies or integrative analysis? Or are there tools to convert alternate/legacy file formats to modBAM? Although not necessary to offer this functionality, it may be helpful to the reader to know whether this is possible. Response: We have added mention of other software that produce modBAM output, including Jasmine for the PacBio platform: “Other software that produce modBAM files include `Jasmine` and `ccsmeth` for PacBio HiFi data, as well as older ONT-compatible methylation callers such as `nanopolish` and `megalodon`.“ Additionally we have added the following regarding older formats: “Older data formats produced by `Nanopolish`, `f5c` and `Megalodon` will remain compatible with NanoMethViz and the new features are fully backwards compatible with these formats.” Comment: In the overview of DNA methylation measurement technologies in the introduction, when discussing the limitations of bisulfite sequencing, Enzymatic Methyl sequencing (EM-seq) should also be mentioned as alternative short-read sequencing approach. Response: The introduction has been updated with mention and brief discussion of EM-seq. Comment: Suggest to write out the default y-axis label in plots like the top panel of Figure 2 as “Modification probability” or “Mod probability” for clarity. Response: The latest developmental version of NanoMethViz (v3.3.3) now displays “Mean Modification Probability” as the y-axis for the gene and region plots and the figures have been updated accordingly. Comment: Please clarify the meaning of the thin grey bar in middle panel of Figure 2 – presumably this delineates the existence of a read, but either no CpG present or no methylation probability estimate? Response: The interpretation of the heatmap for read-level data has been clarified in the figure caption for Fig 2 with the additional sentence: “Each row of the heatmap shows one or more non-overlapping reads with a grey bar connecting data that came from the same read.” Comment: It is not clear what the tiny pink and blue shapes represent in bottom panel of Figure 2. Response: Thank you for bringing this to our attention. The pink and blue shapes are image artifacts that should not be in the figure - these will be removed in the revised version. Comment: The text references a “Figure C” – is this referring to Figure 1C? Response: Yes - thank you for spotting the missing reference, which has been updated to Figure 1C. Comment: The utility of the tabix file was not immediately clear to me on first read of the first paragraph of section 2.3 – the addition of a sentence that explicitly states that the tabix file contains the read-level modification probabilities across all sites for all samples (or modified to correct my understanding as necessary) may be helpful. Response: Additional sentences have been added to justify why tabix conversion is necessary: “This is because modBAM files store read-level data that include irrelevant sequences and alignment information, requiring the traversal of unnecessary data. Each modBAM entry contains information about multiple CpG sites, with subsequent reads potentially overlapping previous ones. In contrast, the tabix-indexed TSV file format represent a single CpG site per row, sorted in genomic order. This sorting ensures that once a genomic region has been processed, it does not need to be revisited. Consequently, this structure enables more efficient parsing and querying strategies for genome-wide analyses, such as streaming aggregated site-level data without retaining sites in memory.” Comment: It’s not clear how the methylation proportions as displayed in Figure 3 are calculated. Is this the proportion of samples in each group that had an average modification probability of 0.5 or higher at that CpG, averaged over all samples? Response: A sentence in the Figure 3 caption has been extended to clarify that the values are averages of methylation proportions in bins along relative position, the preceding text before the figure specifies the 0.5 threshold for binarisation: “averaged across all genes in each experimental group in bins along the relative positions to produce a smoothed trendline.” Comment: Figure 3 is interpreted as “In this plot we can see that active genes on chromosome 7 tend to be demethylated near the TSS region and hypermethylated throughout the gene body.” However, I understand it to be a plot of 200 randomly selected genes. As a result, I expect that some of the 200 genes are active but some are not. Response: Yes, the sample will be a mix of expressed and unexpressed genes in this random selection (if we had matching RNA-seq data, we could have filtered based on expression to select only expressed genes more precisely). The methylation pattern we see here suggests that there is a good number of expressed genes in this random sample and we have updated the text to mention this: “In this plot we see that in the sample of 200 genes on chromosome 7 there tends to be demethylated near the TSS region and hypermethylated throughout the gene body. This is consistent with the proposed function of methylation in gene regulation, where methylation in the promoter region of genes is associated with gene silencing, while transcription of active genes is associated with recruitment of methylating mechanisms to the gene body. So the aggregate signal for this random sample of genes suggests some are actively expressed given that the trend follows this expected methylation pattern." Comment: What assumptions are made when converting a NanoMethResult object to a BSseq object (e.g. methylated if greater than 0.5 probability)? Can this be changed by the user? Response: When converting to BSSeq a 0.5 threshold is used. But in the aggregate plots the user is able to set their own threshold for binarisation. An argument to set the threshold for BSSeq object conversion will be added in future versions of the package. Comment: The article mentions alternatives to dmrseq that, like dmrseq, were also developed for short-read sequencing data. However, there are alternatives for DMR detection that were developed specifically for ONT long-read sequencing (e.g. Snajder et al 2023) that would be helpful to mention. Response: We have added mentions of software external to Bioconductor, along with suggestions of how they may be imported into the workflow: "Outside of the Bioconductor ecosystem, other popular software exist with DMR detection capabilities, such as `pycoMeth` in Python and `modkit` developed by ONT. Support for the output of external DMR detection software is not provided in `NanoMethViz`, but if they can be converted into a `GenomicRanges` object then they can be visualised using `NanoMethViz` functions." View more View less Competing Interests No competing interests were disclosed. reply Respond Report a concern Korthauer K. Peer Review Report For: A streamlined workflow for long-read DNA methylation analysis with NanoMethViz and Bioconductor [version 2; peer review: 2 approved] . F1000Research 2025, 13 :1243 ( https://doi.org/10.5256/f1000research.170344.r338940) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-1243/v1#referee-response-338940 Alongside their report, reviewers assign a status to the article: Approved - the paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations - A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved - fundamental flaws in the paper seriously undermine the findings and conclusions Adjust parameters to alter display View on desktop for interactive features Includes Interactive Elements View on desktop for interactive features Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Stay Updated Sign up for content alerts and receive a weekly or monthly email with all newly published articles Register with F1000Research Already registered? Sign in Not now, thanks close PLEASE NOTE If you are an AUTHOR of this article, please check that you signed in with the account associated with this article otherwise we cannot automatically identify your role as an author and your comment will be labelled as a “User Comment”. If you are a REVIEWER of this article, please check that you have signed in with the account associated with this article and then go to your account to submit your report, please do not post your review here. If you do not have access to your original account, please contact us . All commenters must hold a formal affiliation as per our Policies . The information that you give us will be displayed next to your comment. User comments must be in English, comprehensible and relevant to the article under discussion. We reserve the right to remove any comments that we consider to be inappropriate, offensive or otherwise in breach of the User Comment Terms and Conditions . Commenters must not use a comment for personal attacks. When criticisms of the article are based on unpublished data, the data should be made available. I accept the User Comment Terms and Conditions Please confirm that you accept the User Comment Terms and Conditions. Affiliation ✕ refresh Please enter your institution. Note: To add your institution or organisation, start typing the name and then select the correct name from the list. Where applicable, the name will appear in both the original language and in English. Do not paste in the name. If the name does not appear in the drop-down list, we will display the information you have entered. ✕ refresh Country/Region * USA UK Canada China France Germany Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Cuba Cyprus Czech Republic Democratic Republic of the Congo Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Federated States of Micronesia Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo (Serbia and Montenegro) Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Minor Outlying Islands of the United States Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Is South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand The Gambia The Netherlands Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu UK USA Uganda Ukraine United Arab Emirates United States Virgin Islands Uruguay Uzbekistan Vanuatu Venezuela Vietnam Wallis and Futuna West Bank and Gaza Strip Western Sahara Yemen Zambia Zimbabwe Please select your country/region. You must enter a comment. Competing Interests Please disclose any competing interests that might be construed to influence your judgment of the article's or peer review report's validity or importance. Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Please state your competing interests The comment has been saved. An error has occurred. Please try again. Cancel Post var lTitle = "A streamlined workflow for long-read DNA...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/13-1243/v2" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/13-1243/v2&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/13-1243/v2" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Su S et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/13-1243/v2/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/13-1243", templates : { twitter : "A streamlined workflow for long-read DNA methylation analysis.... Su S et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/13-1243/v2" } }; if (typeof(addthis) != "undefined"){ addthis.addEventListener('addthis.ready', checkCount); addthis.addEventListener('addthis.menu.share', checkCount); } $(".f1r-shares-twitter").attr("href", "https://twitter.com/intent/tweet?text=" + addthis_share.templates.twitter); $(".f1r-shares-facebook").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + addthis_share.url); $(".f1r-shares-linkedin").attr("href", addthis_config.services_custom[0].url); $(".f1r-shares-reddit").attr("href", addthis_config.services_custom[2].url); $(".f1r-shares-mendelay").attr("href", addthis_config.services_custom[1].url); function checkCount(){ setTimeout(function(){ $(".addthis_button_expanded").each(function(){ var count = $(this).text(); if (count !== "" && count != "0") $(this).removeClass("is-hidden"); else $(this).addClass("is-hidden"); }); }, 1000); } close How to cite this report {{reportCitation}} Cancel Copy Citation Details $(function(){R.ui.buttonDropdowns('.dropdown-for-downloads');}); $(function(){R.ui.toolbarDropdowns('.toolbar-dropdown-for-downloads');}); $.get("/articles/acj/155204/177831") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "177831"); $(document).ready(function() { $( "#frame1" ).on('load', function() { var mydiv = $(this).contents().find("div"); var h = mydiv.height(); console.log(h) }); var tooltipLivingFigure = jQuery(".interactive-living-figure-label .icon-more-info"), titleLivingFigure = tooltipLivingFigure.attr("title"); tooltipLivingFigure.simpletip({ fixed: true, position: ["-115", "30"], baseClass: 'small-tooltip', content:titleLivingFigure + " " }); tooltipLivingFigure.removeAttr("title"); $("body").on("click", ".cite-living-figure", function(e) { e.preventDefault(); var ref = $(this).attr("data-ref"); $(this).closest(".living-figure-list-container").find("#" + ref).fadeIn(200); }); $("body").on("click", ".close-cite-living-figure", function(e) { e.preventDefault(); $(this).closest(".popup-window-wrapper").fadeOut(200); }); $(document).on("mouseup", function(e) { var metricsContainer = $(".article-metrics-popover-wrapper"); if (!metricsContainer.is(e.target) && metricsContainer.has(e.target).length === 0) { $(".article-metrics-close-button").click(); } }); var articleId = $('#articleId').val(); if($("#main-article-count-box").attachArticleMetrics) { $("#main-article-count-box").attachArticleMetrics(articleId, { articleMetricsView: true }); } }); var figshareWidget = $(".new_figshare_widget"); if (figshareWidget.length > 0) { window.figshare.load("f1000", function(Widget) { // Select a tag/tags defined in your page. In this tag we will place the widget. _.map(figshareWidget, function(el){ var widget = new Widget({ articleId: $(el).attr("figshare_articleId") //height:300 // this is the height of the viewer part. [Default: 550] }); widget.initialize(); // initialize the widget widget.mount(el); // mount it in a tag that's on your page // this will save the widget on the global scope for later use from // your JS scripts. This line is optional. //window.widget = widget; }); }); } close Error Close Add Reset F1000.MICROSERVICES.AFFILIATION = ''; $(document).ready(function () { $('.js-affiliations-form').each((index, form) => { new AffiliationForm({ formId: form.id, institutionErrorSelector: '.comment-enter-institution', departmentErrorSelector: '.comment-enter-department', placeSelector: '.js-add-comment-place', stateSelector: '.js-add-comment-state', zipCodeSelector: '.js-add-comment-zipcode', countrySelector: '.js-add-comment-country', countryErrorSelector: '.comment-enter-country', }); }); }); $(document).ready(function () { var reportIds = { "370177": 0, "370176": 0, "370179": 0, "370178": 0, "368201": 10, "368202": 6, "338935": 0, "338934": 0, "370173": 0, "338941": 0, "368892": 0, "370172": 0, "338940": 26, "370175": 0, "338943": 39, "370174": 0, "338942": 0, "338937": 0, "338936": 0, "368891": 0, "370171": 0, "338939": 0, "368890": 0, "370170": 0, "338938": 0, }; $(".referee-response-container,.js-referee-report").each(function(index, el) { var reportId = $(el).attr("data-reportid"), reportCount = reportIds[reportId] || 0; $(el).find(".comments-count-container,.js-referee-report-views").html(reportCount); }); var uuidInput = $("#article_uuid"), oldUUId = uuidInput.val(), newUUId = "ae66197f-de7d-4d3a-a2b2-87ddaf2e499f"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "[email protected]", infoEmail: "[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });

Text is read by the "Ask this paper" AI Q&A widget below. Extraction quality varies by source — PMC NXML preserves structure cleanly, OA-HTML may include some navigation residue, and OA-PDF can have broken hyphenation. The publisher copy (via DOI) is the canonical version.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2025) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00
unpaywall
last seen: 2026-05-23T02:00:01.238055+00:00
License: CC-BY-4.0