Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip

preprint OA: closed
Full text JSON View at publisher
Full text 152,167 characters · extracted from preprint-html · click to expand
Improving rigor and reproducibility in chromatin... | 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/14-625" }, "headline": "Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with...", "datePublished": "2025-06-25T15:37:22", "dateModified": "2025-06-25T15:37:22", "author": [ { "@type": "Person", "name": "Viktoria Haghani" }, { "@type": "Person", "name": "Aditi Goyal" }, { "@type": "Person", "name": "Alan Zhang" }, { "@type": "Person", "name": "Osman Sharifi" }, { "@type": "Person", "name": "Natasha Mariano" }, { "@type": "Person", "name": "Dag Yasui" }, { "@type": "Person", "name": "Ian Korf" }, { "@type": "Person", "name": "Janine LaSalle" } ], "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": " Background As genome sequencing technologies advance, the growing accumulation of sequencing data in public databases highlights the need for more robust and adaptable analysis workflows for chromatin immunoprecipitation assays. These workflows must promote reproducibility and replicability of results while effectively leveraging publicly available data to enhance biological insights. Methods Here, we present Rocketchip, a Python-based command-line tool that integrates existing software through Snakemake, enabling efficient, automated, and reproducible analysis of both newly generated chromatin immunoprecipitation data, including chromatin immunoprecipitation followed by sequencing (ChIP-seq), cleavage under targets and release using nuclease (CUT&RUN), and cleavage under targets and tagmentation (CUT&Tag) as well as existing datasets. Results Rocketchip can analyze chromatin immunoprecipitation data using any available software combination for any reference genome. It enhances the utilization of existing datasets, promotes replicability in analyses, and serves as a platform for benchmarking algorithms. Conclusions By facilitating the reanalysis of existing data and allowing for flexible analysis of newly generated data, Rocketchip allows researchers to identify and apply the most accurate and efficient analytical approaches to their data. " } { "@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/14-625/v1", "name": "Improving rigor and reproducibility in chromatin immunoprecipitation..." } } ] } Home Browse Improving rigor and reproducibility in chromatin immunoprecipitation... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Haghani V, Goyal A, Zhang A et al. Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.12688/f1000research.164319.1 ) 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 Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] Viktoria Haghani https://orcid.org/0000-0002-3700-4027 1,2 , Aditi Goyal 2 , Alan Zhang 2 , [...] Osman Sharifi 1,2 , Natasha Mariano 2 , Dag Yasui 1 , Ian Korf 2 , Janine LaSalle https://orcid.org/0000-0002-3480-2031 1 Viktoria Haghani https://orcid.org/0000-0002-3700-4027 1,2 , Aditi Goyal 2 , [...] Alan Zhang 2 , Osman Sharifi 1,2 , Natasha Mariano 2 , Dag Yasui 1 , Ian Korf 2 , Janine LaSalle https://orcid.org/0000-0002-3480-2031 1 PUBLISHED 25 Jun 2025 Author details Author details 1 Department of Medical Microbiology and Immunology, University of California Davis, Davis, California, 95616, USA 2 Department of Molecular and Cellular Biology, University of California Davis, Davis, California, 95616, USA Viktoria Haghani Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Software, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Aditi Goyal Roles: Conceptualization, Data Curation, Methodology, Software, Validation, Writing – Review & Editing Alan Zhang Roles: Methodology, Software, Validation, Visualization, Writing – Review & Editing Osman Sharifi Roles: Conceptualization, Methodology, Writing – Review & Editing Natasha Mariano Roles: Validation, Writing – Review & Editing Dag Yasui Roles: Methodology, Supervision, Writing – Review & Editing Ian Korf Roles: Conceptualization, Data Curation, Investigation, Methodology, Resources, Software, Supervision, Validation, Writing – Review & Editing Janine LaSalle Roles: Conceptualization, Funding Acquisition, Methodology, Project Administration, Resources, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS Abstract Background As genome sequencing technologies advance, the growing accumulation of sequencing data in public databases highlights the need for more robust and adaptable analysis workflows for chromatin immunoprecipitation assays. These workflows must promote reproducibility and replicability of results while effectively leveraging publicly available data to enhance biological insights. Methods Here, we present Rocketchip, a Python-based command-line tool that integrates existing software through Snakemake, enabling efficient, automated, and reproducible analysis of both newly generated chromatin immunoprecipitation data, including chromatin immunoprecipitation followed by sequencing (ChIP-seq), cleavage under targets and release using nuclease (CUT&RUN), and cleavage under targets and tagmentation (CUT&Tag) as well as existing datasets. Results Rocketchip can analyze chromatin immunoprecipitation data using any available software combination for any reference genome. It enhances the utilization of existing datasets, promotes replicability in analyses, and serves as a platform for benchmarking algorithms. Conclusions By facilitating the reanalysis of existing data and allowing for flexible analysis of newly generated data, Rocketchip allows researchers to identify and apply the most accurate and efficient analytical approaches to their data. READ ALL READ LESS Keywords ChIP-seq, CUT&RUN, CUT&Tag, bioinformatics, workflow, snakemake Corresponding Author(s) Janine LaSalle ( [email protected] ) Close Corresponding author: Janine LaSalle Competing interests: No competing interests were disclosed. Grant information: This work was supported by the National Institutes of Health [R01 AA027075 to J.M.L.]; and the Autism Science Foundation and Rett Syndrome Research Trust [22-001 to V.H]. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Haghani V 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: Haghani V, Goyal A, Zhang A et al. Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.12688/f1000research.164319.1 ) First published: 25 Jun 2025, 14 :625 ( https://doi.org/10.12688/f1000research.164319.1 ) Latest published: 25 Jun 2025, 14 :625 ( https://doi.org/10.12688/f1000research.164319.1 ) Introduction As genome sequencing technologies and their applications continue to rapidly evolve to include epigenomic information, a vast amount of sequencing data is accumulating. 1 Journals now commonly mandate the deposition of raw sequence data to public databases, such as the International Nucleotide Sequence Database Collaboration Sequence Read Archive (SRA), generating a substantial volume of sequencing data. 2 These mandates are further supported by funding agencies, such as the National Institutes of Health (NIH), which requires NIH-funded research to publish sequence data as part of their Genomic Data Sharing Policy. 3 Therefore, there is an increasing need for more comprehensive and biologically relevant data analysis workflows that promote reproducibility of results and allow for increased leverage and comparisons of publicly available data. Although mandated availability of data is beneficial to science, data analysis pipelines are often complicated, with divergent results due to variation in analysis steps, parameter usage, software used, and software version. These problems can partly be solved by workflow managers, which control for analysis step order, software versions via virtual environments, software parameters, etc. This is especially important for workflows requiring multiple analysis steps, such as sequence data produced by chromatin immunoprecipitation assays, where small differences in analytical steps can yield different results. Chromatin immunoprecipitation followed by sequencing (ChIP-seq) is a technique commonly used to identify protein binding sites in the genome. 4 , 5 Briefly, DNA associated proteins are chemically fixed onto DNA with a crosslinking agent. The resulting chromatin is then fragmented by either sonication or enzymatic digestion into 100-500 base pair fragments. Next, chromatin fragments bearing the protein of interest are immunoprecipitated using protein-specific antibodies. Typically, ChIP-seq experiments utilize two controls: (1) an input control to correct for differences in sonication and genomic DNA sequence bias and (2) a mock IP to account for nonspecific interactions of the antibody used. 6 – 8 Ultimately, the chemical cross-link is reversed, allowing the DNA bound by the protein to be purified and then sequenced. In addition to ChIP-seq, other chromatin immunoprecipitation assays, such as cleavage under targets and release using nuclease (CUT&RUN) and cleavage under targets and tagmentation (CUT&Tag) are similarly utilized to assess protein binding sites. 9 , 10 In CUT&RUN, antibody binding occurs directly on protein-bound DNA fragments within intact nuclei, with DNA fragmentation accomplished enzymatically using a fusion protein containing Protein A and micrococcal nuclease (MNase), in contrast with ChIP-seq’s reliance on sonication for DNA fragmentation. In CUT&Tag, a fusion protein combines Protein A and Tn5 transposase, allowing for simultaneous tagging and binding of sequencing adapters to protein-bound DNA fragments. Following the unique approaches of ChIP-seq, CUT&RUN, and CUT&Tag in isolating protein-bound DNA, the generated DNA sequence data is aligned to a reference genome, and a peak caller is typically used to identify regions of interest. These peaks are “broad” for proteins with large areas of interactions with DNA, such as histones and DNA methylation interacting proteins (e.g. H3K27me3, H3K36me3, H3K9me3 H3K4me1, etc.). Conversely, proteins that act as transcription factors with sequence specific regions of interaction and select histone marks produce “narrow” peaks (e.g. c-Myc, CTCF, REST, H3K27ac, H3K4me3). Analyzing these different types of DNA binding proteins can sometimes call for different computational controls, requiring researchers to identify analysis software best suited for analyzing their data. Given the variation in how peaks are generated, there is a significant amount of statistical noise in these experiments, which can hinder the efficacy of peak calling algorithms. This is further complicated by sequencing issues associated with strand bias, GC content, PCR amplification, library preparation, primer choice, sequencing platform, and antibody choice. 8 , 11 – 20 Consequently, it is increasingly difficult to reproduce or replicate experimental findings. From this point forward, “reproducibility” refers to an individual’s or group’s ability to generate the same findings as another study, whereas “replicability” represents an individual’s or group’s ability to recreate findings multiple times using the same data input. Overall, this highlights the need for consistent and controlled data analysis practices, ensuring reproducibility and replicability of results. Here, we present Rocketchip, available at https://github.com/vhaghani26/rocketchip , to address key aspects of these problems. Rocketchip reduces variation in data analysis methodologies, increase reproducibility and replicability of experimental results, and encourage greater usage of publicly available sequence data. Methods Implementation Rocketchip is an automated bioinformatics workflow written in the Python-based (v3.10.12) workflow manager, Snakemake (v7.32.4) 21 ( Figure 1 ). Rocketchip takes full advantage of Snakemake’s capabilities to ensure a highly flexible and adaptable workflow. By consolidating Snakemake rules from various software tools into a single file tailored to the user’s data, Rocketchip supports the seamless incorporation of new tools and updates. This design is crucial in the rapidly evolving field of bioinformatics, allowing Rocketchip to stay current with the latest advancements without requiring a complete overhaul of the existing pipeline. Additionally, Rocketchip efficiently handles large-scale genomic studies by leveraging Snakemake’s ability to process hundreds of files and utilize parallelization based on available computational resources. This makes it suitable for handling extensive datasets on high-performance computing (HPC) systems, ensuring that users can perform complex analyses with optimal resource allocation. Furthermore, Rocketchip utilizes Snakemake’s error-handling capabilities, including a log of standard error outputs per sample, enabling users to investigate and address specific data processing issues as well as utilizing the capability to resume workflows from the point of failure rather than re-running the entire pipeline. This error-handling capability is further enhanced by the inclusion of two FastQC steps in Rocketchip’s workflow, one at the beginning and one after deduplication, to provide additional checkpoints for assessing sequence quality and detecting potential issues. Figure 1. Rocketchip pipeline for ChIP-seq data analysis. Rocketchip begins by downloading raw sequencing data and the reference genome, followed by an initial quality control check. Next, the raw data is aligned to the reference genome using the user’s choice of alignment software, and PCR duplicates are optionally removed. A second quality control check is performed after deduplication to assess alignment quality and any remaining artifacts. Aligned data is then converted into bigwig files for visualization, and peak calling is performed using customizable options for peak type and control usage. The final outputs include processed data ready for downstream analysis or visualization in genome browsers. Operation Rocketchip downloads ChIP-seq data directly from the SRA, the largest publicly available sequence database, using the SRA Toolkit (sra-tools, 3.0.9). 2 , 22 The SRA Toolkit downloads data via the prefetch and fasterq-dump functions, then splits the raw DNA sequence read file into respective paired-end (PE) read files using the flag --split-files and converts them into FASTQ file formats, whereas for single-end (SE) read files, the SRA Toolkit is utilized solely for the download and conversion of raw read data into FASTQ format. Rocketchip also presents the option for users to use local (i.e. non-SRA sourced) ChIP-seq data by providing their own FASTQ files. In parallel, Rocketchip downloads and processes a reference genome of the user’s choice from the UCSC Genome Browser. 23 After downloading and converting files, files are stored in the local file system in FASTA and FASTQ formats. Users also have the option of storing their own custom genomes and sequencing reads that are not yet publicly available. In Rocketchip, raw sequence data undergoes a quality control step using FastQC (v0.12.1) with default parameters to assess potential problems that could impact downstream analysis, including levels of data duplication, base pair quality, adapter contamination, and overall sequence quality. 24 This initial FastQC step provides users with the ability to investigate samples if downstream analysis fails, which can occur if there are problems involving sequence quality, contamination, or high levels of data duplication. Raw sequence data is then aligned to the reference genome using the user’s choice of alignment software from BWA-MEM (v0.7.17), Bowtie2 (v2.5.2), or STAR (v2.7.11a), each with the default parameters. 25 – 27 Intermediate data files are processed as necessary for deduplication. PCR duplicates are removed from sequence data using a user’s choice of deduplication software from Samtools (v1.18) with --mode s (i.e. standard PCR duplicate detection), Picard (v3.1.1) using MarkDuplicates, Sambamba (v1.0.0) with default parameters, or no deduplication. 28 – 30 Deduplicated data files are subject to another quality control step using FastQC to provide further information, such as alignment quality, validating processing steps (i.e. success of deduplication), and detecting any remaining biases or artifacts (e.g. GC content, adapter contamination, etc.) to ensure overall data integrity. Next, Deeptools’ (v3.5.4) bamCoverage function with default parameters is used to convert data from the BAM file format to the bigwig file format, which can be used for visualization of ChIP-seq data in the UCSC Genome Browser or other visualization tools. 31 Finally, in Rocketchip, peaks are called with a user’s choice of software from MACS3 (v3.0.0b3) with the --bdg option, Genrich (v0.6.1) using default parameters, PePr (v1.1.24) using default parameters, or CisGenome (v2.0). 32 – 35 For CisGenome, if a control was used, the seqpeak command was employed with the default options. Without a control, CisGenome ran two rounds of peak calling using the hts_peakdetectorv2 command with options “-w 100 -s 25 -c 10 -br 1 -brl 30 -ssf 1.” Peak-calling options in Rocketchip include narrow versus broad peak calling and use of a control where appropriate. Software version control is handled using Conda to ensure reproducibility of results and compatibility between software versions. 36 Software options were chosen based on options for command line use, ease of installation, and their standard use in the field. Users interested in using Rocketchip can install the source code via PyPi (i.e. `pip install Rocketchip`). Rocketchip requires a minimum Python version >=3.6. Associated dependencies are Conda installable and are stored in an environment file ( https://github.com/vhaghani26/rocketchip/blob/main/environment.yml ) with recommended software versions compatible with Rocketchip. This allows user flexibility in installing only dependencies of interest (e.g. only MACS3 instead of MACS3, Genrich, and PePr) and changing dependency versions if desired for algorithm benchmarking purposes or to ensure compatibility with the user’s environment during installation. After installation, the user must create a project YAML file containing relevant project details, including which genome to use for alignment, sample names and paths if using local data, and software selections for the workflow to execute. Rocketchip will use this input to generate a Snakefile tailored specifically to the user’s data, project details, and requested software combination with appropriate parameters. Then, the user will run the Snakefile using Snakemake’s command-line interface arguments, which are briefly detailed in the Rocketchip GitHub repository ( https://github.com/vhaghani26/rocketchip ). Overall, this approach offers users flexibility to efficiently test various software combinations for their data. It simplifies the execution of an entire workflow into just a few steps: installation, creating a project file, running the Rocketchip command, and executing the workflow with Snakemake. Additionally, it enhances the reproducibility of results by documenting all inputs, outputs, and software versions, while leveraging the automated nature of Snakemake’s workflow execution. Use cases Conducting ChIP-seq data analysis via all software combinations In order to ensure that all combinations of software can be integrated seamlessly and used for ChIP-seq data analysis, we selected a deeply sequenced experimental ChIP-seq study targeting a transcription factor, MeCP2, in mouse main olfactory epithelium conducted by Rube et al. 2016, hereafter referred to as “Rube”, 37 and a ChIP-seq study targeting NRF2 in human non-small lung cells conducted by Namani et al. 2019, hereafter referred to as “Namani”. 38 To facilitate this comprehensive assessment, these data sets were run through Rocketchip using all four peak callers, namely MACS3, CisGenome, Genrich, and PePr. This was used in combination with each of the three aligners, BWA-MEM, Bowtie2, and STAR and four deduplication techniques, Samtools, Sambamba, Picard, and no deduplication. Additionally, to validate that Rocketchip can be run with or without a control (i.e. input or IgG control), this analysis was conducted with both the usage and omission of the corresponding control for each data set, with the exceptions of CisGenome and PePr, which can only be run if a control is used in the analysis. Each test was run three times to assess Rocketchip’s ability to replicate experimental results. Each algorithm demonstrated varying peak-calling efficiency, influenced by several key factors ( Figure 2 , Supplementary Table 1). Most notably, the source of the data (i.e, Namani vs. Rube) revealed dramatic differences in the performance of peak-calling algorithms. For the Rube data, MACS3 consistently yielded the highest number of called peaks. All methods of deduplication produced comparable peak counts. Bowtie2 and BWA-MEM performed similarly, identifying slightly more peaks compared to STAR. CisGenome called the fewest peaks, significantly influenced by the deduplicator and aligner used. Without deduplication, CisGenome identified the fewest peaks across any software combination, while peak counts increased with any deduplication method. When STAR was used as the aligner with CisGenome, peak counts were the lowest. BWA-MEM yielded a higher peak count than Bowtie2 but exhibited more non-deterministic behavior compared to Bowtie2 and STAR. For Genrich, peak counts increased when the control was omitted during peak calling. In contrast to CisGenome, Genrich had the highest peak counts when no deduplication was used and when STAR was used for alignment. The other deduplicators and aligners showed negligible differences in peak counts. When using PePr for peak calling on the Rube data, no deduplication yielded the highest peak count, with other deduplication methods yielding similar results. Unlike the other algorithms, each aligner performed differently with PePr, with STAR identifying the most peaks, followed by BWA-MEM and then Bowtie2. Both the narrow- and broad-peak-calling algorithms yielded negligible differences, except for CisGenome, which had less deterministic results when peaks were defined as narrow and run through Rocketchip. Figure 2. Peak counts for all software combinations. ChIP-seq data from Namani et al. 2019 and Rube et al. 2016 were run through all software combinations in Rocketchip three times each. The data source (i.e. Rube vs. Namani) is yellow, with the light yellow corresponding to the Namani data and darker yellow corresponding to the Rube data. A subset of analyses were run with a control vs. no control. This is represented by light pink for a control being used during peak-calling and dark pink if a control was omitted during peak-calling. The data was run through the software combinations as both a broad peak (light orange) and narrow peak (dark orange) to evaluate algorithm performances, though the Namani data uses NRF2, which is characterized best by narrow peaks, and the Rube data uses MeCP2, which is characterized best by broad peaks. The aligners are represented in red, with Bowtie2 being a light red, BWA-MEM being a medium shade of red, and STAR being a dark red. The peak-caller is highlighted in green with shades of green getting progressively darker for Cisgenome, Genrich, MACS3, and PePr. Similarly, the deduplicator is represented by shades of purple, with no deduplication (“None”) being the lightest, followed by Picard, Sambamba, and then Samtools, which is the darkest. Because each combination was run three times, each of the three trials is plotted by shades of blue. The first trial is a light shade of blue, the second trial is a medium shade, and the third trial is the darkest shade. Raw peak counts were log2 transformed and plotted in the heatmap. Darker red corresponds to higher peak counts while darker blue corresponds to lower peak counts. Gray corresponds to “NA” values, as PePr and CisGenome cannot be run without a control. Raw peak counts can be found in Supplementary Table 1. The heatmap was created using R (v4.2.3) with a kernel (r-irkernel v1.3.2) in Jupyter Notebook (v1.0.0) using the following packages: ComplexHeatmap (v2.14.0), dplyr (v1.1.4), tidyr (v1.3.1), reshape2 (v1.4.4), stringr (v1.5.1), and MASS (v7.3.60.0.1). For the Namani data, notable contrasts in peak-calling outcomes were observed across various algorithms. Genrich consistently yielded the highest number of peaks, contrasting with the Rube data where MACS3 showed higher peak counts. Interestingly, PePr consistently produced the lowest peak counts for the Namani dataset despite performing second best for the Rube data. The choice of aligner did not significantly impact peak counts overall; however, omitting deduplication generally resulted in slightly higher peak counts across all peak-callers. Unlike the Rube data, where the distinction between narrow- and broad-peak calling showed minimal differences across algorithms, the Namani data exhibited variability based on this distinction. Specifically, MACS3 identified higher peak counts under the assumption of broad peaks compared to narrow peaks. In addition to assessing the results of the different algorithms, we also assessed Rocketchip’s ability to replicate experimental findings. Both the Namani and Rube data sets were run through every software combination in Rocketchip three times, totaling 288 software combinations with three trials per combination. Among the 288 software combinations tested, 274 combinations (95.14%) demonstrated perfect replication of peak counts across all three trials (i.e. every trial yielded identical peak counts). Surprisingly, despite identical software versions, computational resources, and inputs, certain combinations of data and software were non-deterministic, with 4.86% (14 out of 288) exhibiting variability in peak counts ( Table 1 ). Given that non-deterministic results were observed exclusively for the Rube data, this data was downsampled to 5,000 reads per sample using Seqtk (v1.4) and rerun through every combination 100 times to further assess the source of variation. While variation in peak counts persisted, the maximum range between the minimum and maximum observed peaks was limited to one across all combinations (see Supplementary Table 2). Notably, the software combinations that produced non-deterministic results differed from those in the initial analysis. Therefore, we hypothesize that the low level of variation observed in our results may stem from runtime errors. Table 1. Variation in called peaks. Project Control Peak type Aligner Peak caller Deduplicator Trial 1 peak count Trial 2 peak count Trial 3 peak count Difference in range of called peaks Rube No Control Broad STAR Genrich Sambamba 252158 252160 252158 2 MACS3 Sambamba 1157882 1157876 1157881 6 Narrow STAR Genrich Sambamba 252160 252158 252159 2 MACS3 Sambamba 1168346 1168345 1168346 1 With Control Broad STAR Genrich Sambamba 127543 127542 127542 1 MACS3 No Deduplication 1002670 1002671 1002670 1 Sambamba 1004045 1004044 1004045 1 PePr Sambamba 568556 568556 568554 2 Narrow STAR Genrich Sambamba 127542 127543 127543 1 MACS3 Sambamba 1143542 1143541 1143542 1 PePr No Deduplication 1713483 1713484 1713484 1 Sambamba 721309 721307 721309 2 BWA-MEM Cisgenome Picard 175097 15553 15553 159544 Sambamba 17690 15553 35909 20356 Overall, these findings underscore four critical points. First, the choice of software combination, including the algorithm, deduplication method, and aligner, has a significant impact on peak-calling outcomes. Second, even with strict control of factors impacting the analysis, we still observe some variability in peak calling, albeit in a small subset of cases. Third, dataset-specific nuances significantly impact the performance of different software combinations, resulting in a differing consensus on what the “best” software combination is. Finally, the results validate that all available software combinations can be successfully executed within Rocketchip, ensuring flexibility and robustness in ChIP-seq analyses. Benchmarking peak detection on simulated data and evaluating algorithm performance using F1 scores, precision, and sensitivity Benchmarking algorithm performance on real biological data is challenging, as true binding sites are not known. To illustrate Rocketchip’s ability to benchmark algorithm performance, six simulated test data sets were designed for each combination of PE and SE reads with narrow and broad peaks. Each data set has two replicates and a synthetic genome composed of uniformly distributed base pairs. The dataset is modeled to have precisely 1000 peaks with varying numbers of 150 base pair long reads per peak to represent various peak coverage depths for different data sets: 4X, 8X, 16X, 32X, 64X, and 128X. Peaks were evenly distributed 2500 base pairs apart for narrow peaks and 5000 base pairs apart for broad peaks. Read locations within peaks were simulated with a Gaussian distribution centered on the peak summit, spanning 400 base pairs for narrow peaks and 1500 base pairs for broad peaks. Reads were dispersed with a standard deviation of 0.1 to ensure variability around the peak summit. A study assessing PCR duplication in ChIP-seq found that PCR duplication ranged from 2.94-55.38% among their tested ChIP-seq data sets, ultimately concluding that a rate of 20% duplication or less is most effective for read mapping. 39 Thus, PCR duplicates were simulated at a 20% rate. Input controls, which represent sonicated DNA fragments, were modeled as randomly distributed genomic reads. This dataset was run through all combinations in Rocketchip, including the inclusion and exclusion of the input control, which accounts for genomic noise and is believed to improve accuracy. CisGenome and PePr require a control, so they were only tested with the input control. We varied read type (PE and SE) and peak type (narrow and broad) to systematically evaluate software performance across all combinations. The objective of this experiment was to assess accuracy, precision, and sensitivity of each combination, where accuracy, which is measured using F1 scores, measures how well peaks match true binding sites, precision indicates the proportion of true peaks among identified peaks, and sensitivity measures the proportion of true peaks detected. F1, precision, and sensitivity scores were calculated based on true positive (TP), false positive (FP), or false negative (FN) base pairs within peaks. TP represents overlapping base pairs between expected and observed peaks, FP represents base pairs in observed peaks not matching expected peaks, and FN represents base pairs in expected peaks not observed. F1 scores were calculated as [2TP/(2TP + FP + FN)], precision as [TP/(TP + FP)], and sensitivity as [TP/(TP + FN)]. For Cisgenome and PePr, TP, FP, and FN were set to zero, as they cannot be run without a control, indicating an inability to be accurate, precise, or sensitive without using a control. The results of this experiment revealed that, generally, narrow peak-calling had higher accuracy, precision, and sensitivity than broad peak-calling ( Figure 3 ). Interestingly, the peak callers with the highest F1, precision, and sensitivity scores, Genrich and MACS3, performed better when run without an input control compared to with a control. MACS3 and Genrich had the highest accuracy, precision, and sensitivity, followed by PePr and Cisgenome, which is consistent with the analyses using the Rube and Namani data. No major differences were observed based on the aligner or deduplicator used in any of the analysis. Overall, this analysis provides further insights into the algorithm performances, allowing for more robust and informed decisions in ChIP-seq data analysis. Figure 3. Accuracy, precision, and sensitivity measures for rocketchip software combinations. Simulated ChIP-seq data was run through all software combinations in Rocketchip. For each heatmap, the endedness of the data (PE vs. SE) is pink, with the light pink corresponding to PE data and dark pink corresponding to SE data. The data was run using broad peak (light orange) and narrow peak (dark orange) algorithms depending on whether broad or narrow peaks were modeled, respectively. The aligners are represented in red, with Bowtie2 being a light red, BWA-MEM being a medium shade of red, and STAR being a dark red. The peak-caller is highlighted in green with shades of green getting progressively darker for Cisgenome, Genrich, MACS3, and PePr. Similarly, the deduplicator is represented by shades of purple, with no deduplication (“None”) being the lightest, followed by Picard, Sambamba, and then Samtools, which is the darkest. The peak coverage, ranging from 4X-128X is depicted using shades of blue, with the shade getting darker as peak coverage increases for the given data set. Darker red shading in the plotted heatmap values corresponds to higher accuracy, precision, or sensitivity, while darker blue corresponds to lower accuracy, precision, or sensitivity. (A) The plotted values represent the calculated F1 scores when incorporating a control during peak-calling. (B) The plotted values represent the calculated F1 scores when omitting a control during peak-calling. (C) The plotted values represent the calculated precision scores when incorporating a control during peak-calling. (D) The plotted values represent the calculated precision scores when omitting a control during peak-calling. (E) The plotted values represent the calculated sensitivity scores when incorporating a control during peak-calling. (F) The plotted values represent the calculated sensitivity scores when omitting a control during peak-calling. The heatmaps were created using R (v4.2.3) with a kernel (r-irkernel v1.3.2) in Jupyter Notebook (v1.0.0) using the following packages: ComplexHeatmap (v2.14.0), dplyr (v1.1.4), tidyr (v1.3.1), reshape2 (v1.4.4), stringr (v1.5.1), and MASS (v7.3.60.0.1). Demonstrating rocketchip’s compatibility with experimental ChIP-seq data from varying genomes Rocketchip was tested for compatibility with a range of genomes from the UCSC Genome Browser, which includes the seven commonly used genomes displayed by default in the “Genomes” tab: human (hg38), mouse (mm10), rat (rn6), zebrafish (danRer11), fruitfly (dm6), worm (ce11), and yeast (sacCer3). Three published ChIP-seq data sets on the SRA with varying read coverage were selected per genome and run through Rocketchip ( Figure 4 ). 40 – 51 All experiments used PE data and were conducted using BWA-MEM for alignment, Samtools for deduplication, and MACS3 for peak-calling. These experiments were run on an HPC with 64 CPUs and 250 GB of memory available, running one job at a time without parallelization. To ensure consistency, genome copies were deleted between runs using the same genome to ensure that the run time accounts for the full workflow. The results of this experiment validated Rocketchip’s compatibility with the seven primary genomes from the UCSC Genome Browser and use of sequence data hosted on the SRA. Additionally, it provides users with estimates of how long Rocketchip should run for different genomes to allow for appropriate computational resource requests. Run times ranged from 0.55 hours to 20.54 hours depending on the genome size and read data used. Figure 4. Rocketchip execution times per genome. This is a horizontal bar plot representing how long (in hours) each sample per genome took to run. The label on the bars represents the time in strictly hours (i.e. not hours and minutes) that each sample took to run through the pipeline from beginning to end assuming no prior storage of any data required of the analysis. The color of the bars corresponds to which organism the sample comes from and which genome it was run with: red for dm6, orange for hg38, green for mm10, turquoise for rn6, blue for ce11, purple for sacCer3, and pink for danRer11. The bar plot was created using R (v4.2.3) with a kernel (r-irkernel v1.3.2) in Jupyter Notebook (v1.0.0) using the following packages: ggplot2 (v3.4.4) and dplyr (v1.1.4). Conducting CUT&RUN and CUT&Tag data analysis with rocketchip As of June 18, 2024, there are 363,213 ChIP-seq, 494,128 CUT&RUN, and 19,492 CUT&Tag data sets available on the SRA. Due to the increasing use of CUT&RUN and CUT&Tag, we wanted to assess Rocketchip’s ability to effectively process data generated by these mapping techniques. Therefore, we applied Rocketchip to CUT&RUN and CUT&Tag data generated by Akdogan-Ozdilek et al. that sought to characterize the zebrafish epigenome during embryogenesis. 52 This data set was chosen due to the thorough documentation of the results and high sequence data quality. In evaluating the performance of Rocketchip for CUT&RUN and CUT&Tag data analysis, we assessed several key metrics, including the percentage of reads aligned, sequence duplication percentages, and peak counts ( Table 2 ). The alignment percentage was chosen as a metric due to its significance in assessing the overall data processing efficiency and alignment accuracy. Alignment percentage serves as a key indicator of how effectively Rocketchip handles the unique characteristics of CUT&RUN and CUT&Tag data sets, ensuring that a substantial proportion of reads are appropriately mapped to the reference genome and available for further analysis. Sequence duplication percentages were also evaluated, as they indicate Rocketchip’s ability to reduce data redundancy while maintaining data quality throughout the pipeline. Additionally, peak counts provide insight into Rocketchip’s ability identify and quantify expected protein binding sites. Comparisons between processed read counts and peak counts demonstrate that Rocketchip scales appropriately with the number of reads remaining after data processing, reflecting its capacity to accurately assess and interpret the genomic data. Table 2. Evaluation of rocketchip using CUT&RUN and CUT&Tag data. SRA ID Origin Endedness Metadata Raw reads % Aligned (Akdogan-Ozdilek et al.) % Aligned (Rocketchip) Sequence duplication Read counts after processing Peak counts SRR14850825 CUT&RUN Single 6hpf_H3K4me3_rep1 31,343,063 77.19% 95.68% 40.94% 17,710,734 144732 SRR14850826 CUT&RUN Single 6hpf_H3K4me3_rep2 70,960,918 76.16% 95.41% 53.75% 31,313,977 SRR14850827 CUT&RUN Single 6hpf_H3K27me3_rep1 26,960,471 70.93% 95.97% 59.18% 10,560,814 71402 SRR14850828 CUT&RUN Single 6hpf_H3K27me3_rep2 27,851,277 70.16% 95.34% 58.47% 11,026,320 SRR14850829 CUT&RUN Single 6hpf_H3K9me3_rep1 22,214,067 22.03% 96.25% 42.26% 12,345,779 139743 SRR14850830 CUT&RUN Single 6hpf_H3K9me3_rep2 43,462,568 23.13% 96.19% 48.13% 21,685,002 SRR14850831 CUT&RUN Paired 6hpf_pol2_rep1 9,842,850 73.38% 92.91% 6.85% 17,037,027 29723 SRR14850832 CUT&RUN Paired 6hpf_pol2_rep2 5,707,930 72.58% 92.45% 4.78% 10,050,071 SRR14850833 CUT&RUN Paired 6hpf_IgG 8,094,912 59.14% 78.45% 12.87% 11,065,472 SRR14870792 CUT&Tag Paired 6hpf_H2AZ_Rep1 1,233,216 91.34% 84.53% 49.67% 1,049,096 45588 SRR14870793 CUT&Tag Paired 6hpf_H2AZ_Rep2 1,447,412 90.22% 82.65% 53.82% 1,104,820 SRR14870794 CUT&Tag Paired 6hpf_H2AZ_Rep3 3,135,635 90.80% 78.47% 40.58% 2,923,649 SRR14870795 CUT&Tag Paired 24hpf_H2AZ_Rep1 23,376,962 93.17% 85.90% 61.00% 15,657,482 74207 SRR14870796 CUT&Tag Paired 24hpf_H2AZ_Rep2 28,652,092 94.05% 85.68% 72.26% 13,612,305 SRR14870797 CUT&Tag Paired 24hpf_H2AZ_Rep3 23,810,168 93.61% 85.51% 66.74% 13,536,403 The CUT&RUN data set consisted of nine samples. Six samples were SE reads and corresponded to two replicates each for detection of H3K4me3, H3K27me3, and H3K9me3 (SRR14850825 and SRR14850826, SRR14850827 and SRR14850828, and SRR14850829 and SRR14850830, respectively). The remaining three sets were PE read samples that corresponded to two replicates for the detection of RNA polymerase II and mock IP control using the IgG antibody (SRR14850831 and SRR14850832, and SRR14850833, respectively). The study that originally produced these data sets employed Bowtie2 to align sequences, Samtools to filter aligned sequences, and HOMER for peak-calling. Rocketchip was run using Bowtie2, Samtools, and MACS3 for broad peak-calling. As the data was partially SE and partially PE reads, analyses were conducted separately, with the control being used for the PE analysis due to compatibility. Sequence duplication percentages varied across samples, with some samples exhibiting high duplication rates, which is indicative of data redundancy that Rocketchip managed effectively. Comparisons between processed read counts and peak counts demonstrated that Rocketchip scales appropriately with the number of reads remaining after data processing, reflecting its capacity to accurately assess and interpret genomic data. Original alignment percentages were compared to those obtained via Rocketchip. A paired t-test was conducted using each SRA input as an observation, yielding a p -value of 0.00302, with Rocketchip consistently producing significantly better alignment percentages for the CUT&RUN data compared to the original analysis. The mean difference in the alignment percentages was 32.66%. We also noted that Rocketchip detected a substantial number of peaks in relation to the processed reads, indicating its ability to effectively parse and process signal (peaks) versus biological noise. We hypothesize that the alignment accuracy differences are related to the use of different Bowtie2 versions, as the original study used Bowtie 2.4.1 to align their CUT&RUN data, whereas Rocketchip used version 2.5.2. The GitHub change log for Bowtie2 version 2.5.1, one version earlier than the one Rocketchip uses, notes: “fixed an issue affecting bowtie2 alignment accuracy” and “fixed a segmentation fault that would occur while aligning SRA data.” This highlights the need to revisit and utilize publicly available data, as software updates can improve data processing and thus yield more accurate results. This also highlights Rocketchip’s ability to accurately and effectively process CUT&RUN data. The CUT&Tag data set used for testing in Rocketchip was comprised of six PE read samples. There are three replicates each of H2A.Z at 6 hours and 24 hours post fertilization (SRR14870792, SRR14870793, and SRR14870794 and SRR14870795, SRR14870796, and SRR14870797, respectively). The original study used Bowtie2 for alignment, Samtools for filtering, Picard for deduplication, and MACS2 for peak-calling. We ran Rocketchip using Bowtie2, Samtools, and MACS3. Similar to the CUT&RUN data, sequence duplication percentages varied, and Rocketchip was able to efficiently process the data without encountering any errors. Original alignment percentages were compared to those obtained via Rocketchip. A paired t-test was conducted using each SRA input as an observation, yielding a p -value of 0.00015, with Rocketchip resulting in lower alignment percentages for the CUT&Tag data compared to the original analysis. The magnitude of difference in alignment percentages, however, was less than that of the CUT&RUN data, as the mean difference by Rocketchip was -8.41% for CUT&Tag as opposed to +32.66% for CUT&RUN. However, the alignment percentages achieved in our Rocketchip CUT&Tag analysis still surpassed every alignment percentage reported in the original study for their CUT&RUN data, suggesting that Rocketchip is suitable for analyzing CUT&Tag data. We hypothesize that the alignment difference may be due to the usage of both Samtools and Picard in the original CUT&Tag analysis as opposed to just using Samtools in Rocketchip. Discussion Rocketchip is a distinct, novel, and innovative tool due to its unique approach to automating and allowing for flexibility in ChIP-seq, CUT&RUN, and CUT&Tag data analysis workflows. Unlike traditional methods that often require manual intervention and lack reproducibility, Rocketchip provides a straightforward solution by integrating existing software to automatically run analyses for large-scale datasets. Researchers can easily interchange analysis components and rerun their analysis to identify the most appropriate software options for their data. Additionally, Rocketchip was designed to be user-friendly, making it more accessible to researchers with limited bioinformatics expertise compared to traditional methods that require users to navigate software installation, parameter determination, and command inputs from scratch, promoting broader utilization of publicly available sequence data. In our analyses of Rocketchip using published experimental ChIP-seq, CUT&RUN, and CUT&Tag data, we demonstrated Rocketchip’s ability to handle diverse software combinations seamlessly, which is critical given the variability observed in peak-calling efficiency across different datasets and software tools. We found that the choice of peak caller, aligner, and deduplication method significantly influenced peak-calling outcomes in a data-specific manor. These disparities persisted even when identical software combinations were employed, highlighting the significant impact of dataset-specific factors on the results. This can likely be attributed to NRF2 exhibiting a narrow-peak pattern, while MeCP2 exhibits a broad-peak pattern with a low signal-to-noise ratio. 37 , 38 , 53 These variations underscore the importance of selecting the appropriate software combination tailored to specific experimental contexts. Rocketchip demonstrated a notable ability to replicate results across multiple runs, achieving a perfect replication rate of 95.14% across 288 software combinations tested (i.e. 274/288 combinations yielded identical peak counts in all three trials conducted for each combination). However, 4.86% of the combinations (14/288) exhibited variability in peak counts, highlighting instances of non-deterministic behavior despite using the same software versions, computational resources, and input data. This inconsistency underscores the complexity of peak calling algorithms and their sensitivity to specific data and software combinations. In our follow-up analysis with the downsampled Rube data, peak counts once again showed non-deterministic behavior, but variations were limited to a maximum range of one peak across all combinations. Interestingly, the software combinations yielding these inconsistent results differed from those in the initial analysis, indicating that runtime errors or concurrency errors related to multithreading may contribute to the observed variability. Ultimately, the persistence of any variation in results using Rocketchip highlights the need for the further investigation of determinism in algorithms commonly used for analyzing genomic data. Furthermore, there is a seemingly constant push to standardize pipelines and tools, but these analyses demonstrate that standardization is likely not possible due to differences in genomic data. There is, therefore, an increasing need for flexible workflows that provide a streamlined approach to facilitate robust data analysis. In our analyses of Rocketchip using simulated data, we evaluated the accuracy, precision, and sensitivity of various software combinations. Notably, our results indicate that peak-calling performance varied significantly with different configurations and peak types, particularly at lower coverage levels. Consistent trends observed across both simulated and experimental datasets, including the Rube and Namani data, highlight the importance of careful selection of software in the analysis of ChIP-seq data. While synthetic datasets provide a controlled environment for testing algorithm performance, they inherently lack the complexity of real biological samples, necessitating further investigation in more diverse biological contexts. For the CUT&RUN analysis, Rocketchip significantly improved the percentage of mapped reads, likely due to the use of the updated Bowtie2 version. However, for CUT&Tag, Rocketchip resulted in lower read alignment that could not be easily explained by differences in the aligner or deduplicator used prior to peak-calling. This unsolved discrepancy highlights the necessity of documenting software versions and parameters used in analyses to enable replication of results. When using Rocketchip, a few possible limitations to Rocketchip should be considered. First, it should be noted that broad and narrow-peak-calling must be done in separate Rocketchip runs. This is due to the inherent variability in how peaks are represented via read counts. Similarly, SE and PE data sets must be run separately, as these data types are processed differently at the start of the analysis. Additionally, updating software may yield incompatibilities between dependencies; however, Rocketchip ensures version control via Conda to eliminate potential problems with version incompatibilities. Future goals for Rocketchip include packaging Rocketchip source code and all dependencies to be Conda installable. We are also interested in updating Rocketchip to facilitate cloud computing options on a per rule basis (i.e. submitting each rule as its own job). We also look forward to expanding Rocketchip’s selection of software, including other peak-calling algorithms, to provide further user customization options. For instance, WASP 54 has recently become a leading method for deduplication of sequence data. It takes an allele-aware approach to mapping reads back to the reference genome, and discards reads that fail to map to the same region of the genome when the complementary read is considered. This approach reduces false positives for allele imbalance and can help improve peak quality in ChIP-seq data. This algorithm has already been incorporated into STAR alignment. Thus, we aim to release a future version of Rocketchip with an option of using WASP, which will thereby circumvent the following deduplication step in the pipeline. Currently, Rocketchip’s core function is to provide researchers with flexibility using different avenues to analyze their data, eventually resulting in the identification of enriched regions (i.e. binding sites). However, differences in experimental design pose challenges for downstream analysis because ChIP-seq can be used for various purposes, such as motif finding, differential binding analysis, or classifying the epigenomic landscape. For instance, experimental uses of ChIP-seq can vary from characterizing the motif of a newly identified transcription factor to understanding protein binding behavior across different concentrations of protein expression and more. Essentially, the diversity in ChIP-seq applications highlights the difficulty of creating a one-size-fits-all solution for post-peak-calling analysis. Nevertheless, Rocketchip’s adaptability allows it to serve as a robust tool for a wide range of research goals, leaving downstream analysis customizable based on the specific needs of researchers. Should researchers choose to implement motif-finding for their data, a plethora of options are available for use, including HOMER 55 , HOCOMOCO, 56 MEME SUITE, 57 XXmotif, 58 etc. Other options for downstream analysis include differential binding analysis using tools such as BEDTools 59 or GenomicRanges 60 and gene ontology/enrichment analysis using tools such as Enrichr 61 and GOnet. 62 Future goals for analyses using Rocketchip include conducting a meta-analysis of all published data sets for a specific transcription factor. With increased sample sizes and varying coverage, this may yield improved accuracy of transcription factor motifs and in vivo binding properties across a variety of different tissue types and conditions. Additionally, we hope to conduct tests on simulated ChIP-seq data to better understand what factors impact ChIP-seq data and how they do so. This includes modeling narrow vs. broad peak regions, as well as varying peak density and coverage, GC-rich regions, overlapping and bimodal peak regions, and levels of PCR duplication. Synthetic data with these modeled characteristics can be run through the various software combinations within Rocketchip to better understand which tools are better suited for different types of data. Ultimately, this would further researchers’ ability to better tailor specific analysis tools to their data. Software availability - Source code available from: https://github.com/vhaghani26/rocketchip - Archived software available from: https://doi.org/10.5281/zenodo.15319648 - License: MIT License. Ethics and consent Ethical approval and consent were not required. Data availability No data associated with this article. Extended data Zenodo: Rocketchip_Supplementary_Files: Archive Data, https://doi.org/10.5281/zenodo.15399822 63 - This project contains the following extended data: ○ Supplementary Table 1. Peak Counts for all Software Combinations. ChIP-seq data from Namani et al. 2019 and Rube et al. 2016 were run through all software combinations in Rocketchip three times each. The “File Name” column corresponds to the full name of the Snakefile used to generate the peak counts. “Project” defines whether the entry corresponds to the Rube or Namani project data. “Control” delineates whether a control (“with_control”) or no control (“no_control”) was used during peak-calling. “Peak Type” defines whether the analysis was run modeling a “narrow” or “broad” peak pattern. “Aligner” notes which aligner was used for the analysis. “Peak Caller” notes which peak caller was used in the analysis. “Deduplicator” notes which deduplicator, including none (“no_deduplication”), was used in the analysis. “Test” represents the trial number, with “test1” being the first, “test2” being the second, and “test3” being the third trial for that test. “Peak Counts” documents the total peak number identified in the analysis. These results were plotted as a heatmap in Figure 2 . ○ Supplementary Table 2. Deep Dive into Variation in Called Peaks. ChIP-seq data from Rube et al. 2016 was run through all software combinations in Rocketchip 100 times each. This table depicts all combinations of software and data in which peak counts were not replicated perfectly each of the three runs, exhibiting variation in peak-calling. “Project” details the source of the data set. “Control” refers to whether a control was used or excluded during peak-calling. “Aligner”, “Peak Caller”, and “Deduplicator” correspond to the sequence aligner, peak caller, and deduplicator tool used for the Rocketchip run, respectively. “Difference in Range of Called Peaks” represents the range between the minimum and maximum peak counts, highlighting the magnitude of variation in peak-calling across each of the 100 trial runs. Data is available under Creative Commons Zero v1.0 Universal license. Acknowledgements The authors would like to thank C. Titus Brown, Katie Lee, Brandon Hom, and Aryss Hearne for their computational expertise, statistical expertise, and guidance. References 1. Bansal V, Boucher C: Sequencing Technologies and Analyses: Where Have We Been and Where Are We Going? iScience. 2019; Vol. 18 : pp. 37–41. Elsevier Inc. PubMed Abstract | Publisher Full Text | Free Full Text 2. Leinonen R, Sugawara H, Shumway M: The Sequence Read Archive.2011; 39 (November 2010): 2010–2012. 3. National Institutes of Health: Genomics Data Sharing Policy Overview.[cited 2023 Sep 18]. Reference Source 4. Johnson DS, Mortazavi A, Myers RM, et al. : Genome-Wide Mapping of in vivo Protein-DNA Interactions. Science (1979). 2007; 316 (5830): 1497–1502. Publisher Full Text 5. Robertson G, Hirst M, Bainbridge M, et al. : Genome-wide profiles of STAT1 DNA association using chromatin immunoprecipitation and massively parallel sequencing. Nat. Methods. 2007; 4 (8): 651–657. PubMed Abstract | Publisher Full Text 6. Xu J, Kudron MM, Victorsen A, et al. : To mock or not: A comprehensive comparison of mock IP and DNA input for ChIP-seq. Nucleic Acids Res. 2021; 49 (3): e17–e13. Publisher Full Text 7. Kidder BL, Hu G, Zhao K: ChIP-Seq: Technical considerations for obtaining high-quality data. Nat. Immunol. 2011; 12 : 918–922. PubMed Abstract | Publisher Full Text | Free Full Text 8. Liang K, Keles undüz: Normalization of ChIP-seq data with control.2012; 13 . Reference Source 9. Skene PJ, Henikoff S: An efficient targeted nuclease strategy for high-resolution mapping of DNA binding sites. 10. Kaya-Okur HS, Wu SJ, Codomo CA, et al. : CUT&Tag for efficient epigenomic profiling of small samples and single cells. Nat. Commun. 2019 Dec 1; 10 (1): 1930. PubMed Abstract | Publisher Full Text | Free Full Text 11. Guo Y, Li J, Li CI, et al. : The effect of strand bias in Illumina short-read sequencing data. BMC Genomics. 2012; 13 (1): 1–11. Publisher Full Text 12. Benjamini Y, Speed TP: Summarizing and correcting the GC content bias in high-throughput sequencing. Nucleic Acids Res. 2012; 40 (10): e72–e14. Publisher Full Text 13. Sato MP, Ogura Y, Nakamura K, et al. : Comparison of the sequencing bias of currently available library preparation kits for Illumina sequencing of bacterial genomes and metagenomes. DNA Res. 2019; 26 (5): 391–398. PubMed Abstract | Publisher Full Text | Free Full Text 14. Quail MA, Smith M, Coupland P, et al. : A tale of three next generation sequencing platforms: comparison of Ion Torrent, Pacific Biosciences and Illumina MiSeq sequencers. BMC Genomics. 2012; 13 (1): 341. BMC Genomics. Publisher Full Text 15. Aird D, Ross MG, Chen WS, et al. : Analyzing and minimizing PCR amplification bias in Illumina sequencing libraries. Genome Biol. 2011; 12 (2): R18. Reference Source 16. Gohl DM, Magli A, Garbe J, et al. : Measuring sequencer size bias using REcount: A novel method for highly accurate Illumina sequencing-based quantification. Genome Biol. 2019; 20 (1): 1–17. Publisher Full Text 17. Ross MG, Russ C, Costello M, et al. : Characterizing and measuring bias in sequence data. Genome Biol. 2013; 02 (5): 1. Reference Source 18. Schirmer M, Ijaz UZ, D’Amore R, et al. : Insight into biases and sequencing errors for amplicon sequencing with the Illumina MiSeq platform. Nucleic Acids Res. 2015; 43 (6): e37. PubMed Abstract | Publisher Full Text | Free Full Text 19. Wardle FC, Tan H: A ChIP on the shoulder? Chromatin immunoprecipitation and validation strategies for ChIP antibodies. F1000Res. 2015; Vol. 4 . F1000 Research Ltd. 20. Teng M, Irizarry RA: Accounting for GC-content bias reduces systematic errors and batch effects in ChIP-seq data. Genome Res. 2017 Nov 1; 27 (11): 1930–1938. PubMed Abstract | Publisher Full Text | Free Full Text 21. Koster J, Rahmann S: Snakemake — a scalable bioinformatics workflow engine. Bioinformatics. 2012; 28 (19): 2520–2522. PubMed Abstract | Publisher Full Text 22. National Center for Biotechnology Information: Sequence Read Archive Toolkit.[cited 2023 Sep 18]. Reference Source 23. Kent WJ, Sugnet CW, Furey TS, et al. : The Human Genome Browser at UCSC.2002; 996–1006. 24. Andrews S: FastQC: A Quality Control Tool for High Throughput Sequencing Data.2010. Reference Source 25. Li H, Durbin R: Fast and accurate short read alignment with Burrows–Wheeler transform. Bioinformatics. 2009; 25 (14): 1754–1760. PubMed Abstract | Publisher Full Text | Free Full Text 26. Langmead B, Salzberg SL: Fast gapped-read alignment with Bowtie 2. Nat. Methods. 2012 Apr; 9 (4): 357–359. PubMed Abstract | Publisher Full Text | Free Full Text 27. Dobin A, Davis CA, Schlesinger F, et al. : STAR: Ultrafast universal RNA-seq aligner. Bioinformatics. 2013 Jan; 29 (1): 15–21. PubMed Abstract | Publisher Full Text | Free Full Text 28. Li H, Handsaker B, Wysoker A, et al. : The Sequence Alignment/Map format and SAMtools. Bioinformatics. 2009; 25 (16): 2078–2079. PubMed Abstract | Publisher Full Text | Free Full Text 29. Broad Institute: Picard Toolkit.2019 [cited 2023 Sep 18]. Reference Source 30. Tarasov A, Vilella AJ, Cuppen E, et al. : Sambamba: fast processing of NGS alignment formats. Reference Source 31. Ram F, Friederike D, Diehl S: deepTools: a flexible platform for exploring deep-sequencing data. Nucleic Acids Res. 2014; 42 : W187–W191. Publisher Full Text 32. Zhang Y, Liu T, Meyer CA, et al. : Model-based analysis of ChIP-Seq (MACS). Genome Biol. 2008; 9 (9): R137. PubMed Abstract | Publisher Full Text | Free Full Text 33. Gaspar J: Genrich: Detecting Sites of Genomic Enrichment.2021 [cited 2023 Sep 18]. Reference Source 34. Zhang Y, Lin YH, Johnson TD, et al. : PePr: A peak-calling prioritization pipeline to identify consistent or differential peaks from replicated ChIP-Seq data. Bioinformatics. 2014 Sep 15; 30 (18): 2568–2575. PubMed Abstract | Publisher Full Text | Free Full Text 35. Ji H, Jiang H, Ma W, et al. : An integrated software system for analyzing ChIP-chip and ChIP-seq data. Nat. Biotechnol. 2008 Nov; 26 (11): 1293–1300. PubMed Abstract | Publisher Full Text | Free Full Text 36. Anaconda Software Distribution: Conda Computer Software.2023 [cited 2023 Sep 18]. Reference Source 37. Rube HT, Lee W, Hejna M, et al. : Sequence features accurately predict genome-wide MeCP2 binding in vivo. Nat. Commun. 2016; 7 . PubMed Abstract | Publisher Full Text | Free Full Text 38. Namani A, Liu K, Wang S, et al. : Genome-wide global identification of NRF2 binding sites in A549 non-small cell lung cancer cells by ChIP-Seq reveals NRF2 regulation of genes involved in focal adhesion pathways. Aging. 2019; 11 (24): 12600–12623. PubMed Abstract | Publisher Full Text | Free Full Text 39. Tian S, Peng S, Kalmbach M, et al. : Identification of factors associated with duplicate rate in ChIP-seq data. PLoS One. 2019 Apr 1; 14 (4): e0214723. PubMed Abstract | Publisher Full Text | Free Full Text 40. Richart L, Picod-Chedotel ML, Wassef M, et al. : XIST loss impairs mammary stem cell differentiation and increases tumorigenicity through Mediator hyperactivation. Cell. 2022 Jun 9; 185 (12): 2164–2183.e25. PubMed Abstract | Publisher Full Text 41. Morita T, Hayashi K: Actin-related protein 5 functions as a novel modulator of MyoD and MyoG in skeletal muscle and in rhabdomyosarcoma. elife. 2022 Mar 1; 11 . PubMed Abstract | Publisher Full Text | Free Full Text 42. Pradhan SJ, Reddy PC, Smutny M, et al. : Satb2 acts as a gatekeeper for major developmental transitions during early vertebrate embryogenesis. Nat. Commun. 2021 Dec 1; 12 (1): 6094. PubMed Abstract | Publisher Full Text | Free Full Text 43. Sidlowski P, Czerwinski A, Liu Y, et al. : OLA1 Phosphorylation Governs the Mitochondrial Bioenergetic Function of Pulmonary Vascular Cells. Am. J. Respir. Cell Mol. Biol. 2023 Apr 1; 68 (4): 395–405. PubMed Abstract | Publisher Full Text | Free Full Text 44. Jaura R, Yeh SY, Montanera KN, et al. : Extended intergenic DNA contributes to neuron-specific expression of neighboring genes in the mammalian nervous system. Nat. Commun. 2022 Dec 1; 13 (1): 2733. PubMed Abstract | Publisher Full Text | Free Full Text 45. Edwards SL, Erdenebat P, Morphis AC, et al. : Insulin/IGF-1 signaling and heat stress differentially regulate HSF1 activities in germline development. Cell Rep. 2021 Aug 31; 36 (9): 109623. PubMed Abstract | Publisher Full Text | Free Full Text 46. Rawal Y, Qiu H, Hinnebusch AG: Distinct functions of three chromatin remodelers in activator binding and preinitiation complex assembly. PLoS Genet. 2022 Jul 6; 18 (7): e1010277. PubMed Abstract | Publisher Full Text | Free Full Text 47. Bellec M, Dufourt J, Hunt G, et al. : The control of transcriptional memory by stable mitotic bookmarking. Nat. Commun. 2022 Dec 1; 13 (1): 1176. PubMed Abstract | Publisher Full Text | Free Full Text 48. Wu M, Xu Y, Li J, et al. : Genetic and epigenetic orchestration of Gfi1aa-Lsd1-cebpa in zebrafish neutrophil development. Development. 2021 Sep 1; 148 (17). PubMed Abstract | Publisher Full Text 49. Wei W, Liu Y, Qiu Y, et al. : Characterization of Acetylation of Histone H3 at Lysine 9 in the Trigeminal Ganglion of a Rat Trigeminal Neuralgia Model. Oxidative Med. Cell. Longev. 2022; 2022 . PubMed Abstract | Publisher Full Text | Free Full Text 50. Xu W, He C, Kaye EG, et al. : Dynamic control of chromatin-associated m6A methylation regulates nascent RNA synthesis. Mol. Cell. 2022 Mar 17; 82 (6): 1156–1168.e7. PubMed Abstract | Publisher Full Text | Free Full Text 51. Pelletier A, Mayran A, Gouhier A, et al. : Pax7 pioneer factor action requires both paired and homeo DNA binding domains. Nucleic Acids Res. 2021 Jul 21; 49 (13): 7424–7436. PubMed Abstract | Publisher Full Text | Free Full Text 52. Akdogan-Ozdilek B, Duval KL, Meng FW, et al. : Identification of chromatin states during zebrafish gastrulation using CUT&RUN and CUT&Tag. Dev. Dyn. 2022 Apr 1; 251 (4): 729–742. PubMed Abstract | Publisher Full Text | Free Full Text 53. Chorley BN, Campbell MR, Wang X, et al. : Identification of novel NRF2-regulated genes by ChiP-Seq: Influence on retinoid X receptor alpha. Nucleic Acids Res. 2012 Aug; 40 (15): 7416–7429. PubMed Abstract | Publisher Full Text | Free Full Text 54. Van De Geijn B, Mcvicker G, Gilad Y, et al. : WASP: Allele-specific software for robust molecular quantitative trait locus discovery. Nat. Methods. 2015; Vol. 12 : p. 1061–3. Nature Publishing Group. PubMed Abstract | Publisher Full Text | Free Full Text 55. Heinz S, Benner C, Spann N, et al. : Simple Combinations of Lineage-Determining Transcription Factors Prime cis-Regulatory Elements Required for Macrophage and B Cell Identities. Mol. Cell. 2010 May 28; 38 (4): 576–589. PubMed Abstract | Publisher Full Text | Free Full Text 56. Kulakovskiy IV, Vorontsov IE, Yevshin IS, et al. : HOCOMOCO: Towards a complete collection of transcription factor binding models for human and mouse via large-scale ChIP-Seq analysis. Nucleic Acids Res. 2018 Jan 1; 46 (D1): D252–D259. PubMed Abstract | Publisher Full Text | Free Full Text 57. Bailey TL, Boden M, Buske FA, et al. : MEME Suite: Tools for motif discovery and searching. Nucleic Acids Res. 2009; 37 (SUPPL. 2): W202–W208. PubMed Abstract | Publisher Full Text | Free Full Text 58. Luehr S, Hartmann H, Söding J: The XXmotif web server for eXhaustive, weight matriX-based motif discovery in nucleotide sequences. Nucleic Acids Res. 2012 Jul; 40 (W1): W104–W109. Publisher Full Text 59. Quinlan AR, Hall IM: BEDTools: A flexible suite of utilities for comparing genomic features. Bioinformatics. 2010; 26 (6): 841–842. PubMed Abstract | Publisher Full Text | Free Full Text 60. Lawrence M, Huber W, Pagès H, et al. : Software for Computing and Annotating Genomic Ranges. PLoS Comput. Biol. 2013; 9 (8). 61. Kuleshov MV, Jones MR, Rouillard AD, et al. : Enrichr: a comprehensive gene set enrichment analysis web server 2016 update. Nucleic Acids Res. 2016 Jul 8; 44 (1): W90–W97. PubMed Abstract | Publisher Full Text | Free Full Text 62. Pomaznoy M, Ha B, Peters B: GOnet: A tool for interactive Gene Ontology analysis. BMC Bioinformatics. 2018 Dec 7; 19 (1): 470. PubMed Abstract | Publisher Full Text | Free Full Text 63. Haghani V: vhaghani26/Rocketchip_Supplementary_Files: Archive Data (archive). Zenodo. 2025. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 25 Jun 2025 ADD YOUR COMMENT Comment Author details Author details 1 Department of Medical Microbiology and Immunology, University of California Davis, Davis, California, 95616, USA 2 Department of Molecular and Cellular Biology, University of California Davis, Davis, California, 95616, USA Viktoria Haghani Roles: Conceptualization, Data Curation, Formal Analysis, Funding Acquisition, Investigation, Methodology, Project Administration, Software, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Aditi Goyal Roles: Conceptualization, Data Curation, Methodology, Software, Validation, Writing – Review & Editing Alan Zhang Roles: Methodology, Software, Validation, Visualization, Writing – Review & Editing Osman Sharifi Roles: Conceptualization, Methodology, Writing – Review & Editing Natasha Mariano Roles: Validation, Writing – Review & Editing Dag Yasui Roles: Methodology, Supervision, Writing – Review & Editing Ian Korf Roles: Conceptualization, Data Curation, Investigation, Methodology, Resources, Software, Supervision, Validation, Writing – Review & Editing Janine LaSalle Roles: Conceptualization, Funding Acquisition, Methodology, Project Administration, Resources, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This work was supported by the National Institutes of Health [R01 AA027075 to J.M.L.]; and the Autism Science Foundation and Rett Syndrome Research Trust [22-001 to V.H]. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Article Versions (1) version 1 Published: 25 Jun 2025, 14:625 https://doi.org/10.12688/f1000research.164319.1 Copyright © 2025 Haghani V 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 Haghani V, Goyal A, Zhang A et al. Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.12688/f1000research.164319.1 ) 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 1 VERSION 1 PUBLISHED 25 Jun 2025 Views 0 Cite How to cite this report: Bomsztyk K. Reviewer Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r395202 ) The direct URL for this report is: https://f1000research.com/articles/14-625/v1#referee-response-395202 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 Aug 2025 Karol Bomsztyk , University of Washington, Seattle, USA Approved VIEWS 0 https://doi.org/10.5256/f1000research.180810.r395202 The authors developed a useful tool for analysis of ChIP-seq, CUT&RUN and CUT&TAG data. The work was carefully done, the tool is well described. Importantly, we tested the Rocketchip tool and it works well. We plan to ... Continue reading READ ALL The authors developed a useful tool for analysis of ChIP-seq, CUT&RUN and CUT&TAG data. The work was carefully done, the tool is well described. Importantly, we tested the Rocketchip tool and it works well. We plan to use it going forward. As such others in the filed will also find it useful. The vast repositories of multi-omics sequencing datasets continue to grow at an impressive pace. Yet, these datasets remain relatively underutilized, as the development of computational tools has lagged behind the rapid expansion of multi-omics data. The present work is carefully executed, and the Rocketchip tool is clearly described and reasonably well validated. My lab tested Rocketchip on one of our own ChIP-seq datasets and obtained results comparable to our traditional workflow, while saving time. Thus, others in the field are also likely to find it useful. Although the authors list several limitations, I suggest adding the following points for consideration: 1. Reproducibility and applicability across data types – Demonstrate that Rocketchip can be used reproducibly and replicably for other bulk multi-omics sequencing data types, such as RNA-seq, ATAC-seq, and DNA methylation sequencing. 2. Cross-method performance comparison – Provide a side-by-side comparison of Rocketchip’s performance when analyzing ChIP-seq vs. CUT&RUN and/or ChIP-seq vs. CUT&Tag datasets generated from the same samples (e.g., Daly A, et al., 2024 [Ref 1]). 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 References 1. Daly A, Schiffman A, Hoffmann A, Smale S: Examining NF-κB genomic interactions by ChIP-seq and CUT&Tag. bioRxiv . 2024. Publisher Full Text Competing Interests: No competing interests were disclosed. Reviewer Expertise: Multi-omics of disease. 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 Bomsztyk K. Reviewer Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r395202 ) The direct URL for this report is: https://f1000research.com/articles/14-625/v1#referee-response-395202 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: Shao Z. Reviewer Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r398558 ) The direct URL for this report is: https://f1000research.com/articles/14-625/v1#referee-response-398558 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 08 Aug 2025 Zhengyao Shao , Pharmacology, University of California San Diego, San Diego, California, USA Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.180810.r398558 In this protocol by Haghani et al, the authors developed an automated bioinformatics workflow, named Rocketchip, which analyses local ChIP-seq data or ChIP-seq data from NCBI and SRA. Overall, this protocol is well written and the GitHub repository is well ... Continue reading READ ALL In this protocol by Haghani et al, the authors developed an automated bioinformatics workflow, named Rocketchip, which analyses local ChIP-seq data or ChIP-seq data from NCBI and SRA. Overall, this protocol is well written and the GitHub repository is well documented. I only have a few minor concerns: Correct me if I am mistaken: In the section: Use cases Conducting -> ChIP-seq data analysis via all software combinations, my impression is that Spliced Transcripts Alignment to a Reference (STAR) is more often used to map the transcriptome data to the genome rather than ChIP-seq data. I am not sure whether it is reasonable to use or mention this aligner here, which might be somewhat misleading. Especially the authors did find that 'When STAR was used as the aligner with CisGenome, peak counts were the lowest'. Although I do appreciate the efforts that the authors made to evaluate the number/efficiency of peak counts for all software combinations, yet I wonder whether the authors have compared the differences between those identified peaks: are most of them overlapping or each algorithm is able to identify their unique peaks. Lastly, I am curious about the ability and performance of identifying weak-signal peaks, on top of the F1, precision, and sensitivity scores of this platform, given that the binding strength of chromatin associated proteins and histone modification abundances have large variation across the whole genome. 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: Epigenetic, molecular genetic 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 Shao Z. Reviewer Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r398558 ) The direct URL for this report is: https://f1000research.com/articles/14-625/v1#referee-response-398558 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 Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 25 Jun 2025 ADD YOUR COMMENT 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 1 25 Jun 25 read read Zhengyao Shao , University of California San Diego, San Diego, USA Karol Bomsztyk , University of Washington, Seattle, USA Comments on this article All Comments (0) 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 Bomsztyk 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 Aug 2025 | for Version 1 Karol Bomsztyk , University of Washington, Seattle, USA 0 Views copyright © 2025 Bomsztyk 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 developed a useful tool for analysis of ChIP-seq, CUT&RUN and CUT&TAG data. The work was carefully done, the tool is well described. Importantly, we tested the Rocketchip tool and it works well. We plan to use it going forward. As such others in the filed will also find it useful. The vast repositories of multi-omics sequencing datasets continue to grow at an impressive pace. Yet, these datasets remain relatively underutilized, as the development of computational tools has lagged behind the rapid expansion of multi-omics data. The present work is carefully executed, and the Rocketchip tool is clearly described and reasonably well validated. My lab tested Rocketchip on one of our own ChIP-seq datasets and obtained results comparable to our traditional workflow, while saving time. Thus, others in the field are also likely to find it useful. Although the authors list several limitations, I suggest adding the following points for consideration: 1. Reproducibility and applicability across data types – Demonstrate that Rocketchip can be used reproducibly and replicably for other bulk multi-omics sequencing data types, such as RNA-seq, ATAC-seq, and DNA methylation sequencing. 2. Cross-method performance comparison – Provide a side-by-side comparison of Rocketchip’s performance when analyzing ChIP-seq vs. CUT&RUN and/or ChIP-seq vs. CUT&Tag datasets generated from the same samples (e.g., Daly A, et al., 2024 [Ref 1]). 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 References 1. Daly A, Schiffman A, Hoffmann A, Smale S: Examining NF-κB genomic interactions by ChIP-seq and CUT&Tag. bioRxiv . 2024. Publisher Full Text Competing Interests No competing interests were disclosed. Reviewer Expertise Multi-omics of disease. 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) Bomsztyk K. Peer Review Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r395202) 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/14-625/v1#referee-response-395202 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Shao Z. 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. 08 Aug 2025 | for Version 1 Zhengyao Shao , Pharmacology, University of California San Diego, San Diego, California, USA 0 Views copyright © 2025 Shao Z. 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 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 In this protocol by Haghani et al, the authors developed an automated bioinformatics workflow, named Rocketchip, which analyses local ChIP-seq data or ChIP-seq data from NCBI and SRA. Overall, this protocol is well written and the GitHub repository is well documented. I only have a few minor concerns: Correct me if I am mistaken: In the section: Use cases Conducting -> ChIP-seq data analysis via all software combinations, my impression is that Spliced Transcripts Alignment to a Reference (STAR) is more often used to map the transcriptome data to the genome rather than ChIP-seq data. I am not sure whether it is reasonable to use or mention this aligner here, which might be somewhat misleading. Especially the authors did find that 'When STAR was used as the aligner with CisGenome, peak counts were the lowest'. Although I do appreciate the efforts that the authors made to evaluate the number/efficiency of peak counts for all software combinations, yet I wonder whether the authors have compared the differences between those identified peaks: are most of them overlapping or each algorithm is able to identify their unique peaks. Lastly, I am curious about the ability and performance of identifying weak-signal peaks, on top of the F1, precision, and sensitivity scores of this platform, given that the binding strength of chromatin associated proteins and histone modification abundances have large variation across the whole genome. 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 Epigenetic, molecular genetic 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 (0) Shao Z. Peer Review Report For: Improving rigor and reproducibility in chromatin immunoprecipitation assay data analysis workflows with Rocketchip [version 1; peer review: 1 approved, 1 approved with reservations] . F1000Research 2025, 14 :625 ( https://doi.org/10.5256/f1000research.180810.r398558) 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/14-625/v1#referee-response-398558 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 = "Improving rigor and reproducibility in chromatin...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-625/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-625/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-625/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Haghani V 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/14-625/v1/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/14-625", templates : { twitter : "Improving rigor and reproducibility in chromatin immunoprecipitation.... Haghani V et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-625/v1" } }; 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/164319/180810") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "180810"); $(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 = { "396802": 0, "395202": 13, "396803": 0, "395200": 0, "396800": 0, "395201": 0, "396801": 0, "398551": 0, "398558": 22, "398559": 0, "398556": 0, "398557": 0, "398554": 0, "398555": 0, "398552": 0, "398553": 0, "398560": 0, "395198": 0, "396798": 0, "395199": 0, "396799": 0, "395196": 0, "396796": 0, "395197": 0, "396797": 0, "395194": 0, "396794": 0, "395195": 0, "396795": 0, "395193": 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 = "0cc8a13a-41c8-4534-9850-e7783e9da0e2"; 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