CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks

preprint OA: closed
Full text JSON View at publisher
Full text 118,192 characters · extracted from preprint-html · click to expand
CBN2Path: an R/Bioconductor package for the... | 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-834" }, "headline": "CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian...", "datePublished": "2025-08-29T14:51:44", "dateModified": "2025-08-29T14:51:44", "author": [ { "@type": "Person", "name": "William Choi-Kim" }, { "@type": "Person", "name": "Sayed-Rzgar Hosseini" } ], "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": "Conjunctive Bayesian Networks (CBN) are probabilistic graphical models used to describe mutation accumulation processes such as tumorigenesis. Several CBN models exist, which have enabled the analysis and modeling of cancer progression pathways using cross-sectional genomic data. However, these models are implemented in different languages with heterogeneous input and output formats. Moreover, the recent developments towards robust inference of cancer progression pathways (i.e., the R-CBN and B-CBN models), highlight the need for departure from the maximum-likelihood-based frameworks (i.e., the CT-CBN and H-CBN models), which requires substantial implementational adjustments. Thus, we introduce the CBN2Path R/Bioconductor package that not only provides a unifying interface to accommodate all CBN models, but it also offers the necessary functionalities to facilitate robust inference, analysis and visualization of cancer progression pathways." } { "@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-834", "name": "CBN2Path: an R/Bioconductor package for the analysis of cancer progression..." } } ] } Home Browse CBN2Path: an R/Bioconductor package for the analysis of cancer progression... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Choi-Kim W and Hosseini SR. CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.12688/f1000research.168810.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 CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] William Choi-Kim https://orcid.org/0009-0000-3902-4745 1,2 , Sayed-Rzgar Hosseini https://orcid.org/0000-0002-2308-6754 1,3 William Choi-Kim https://orcid.org/0009-0000-3902-4745 1,2 , Sayed-Rzgar Hosseini https://orcid.org/0000-0002-2308-6754 1,3 PUBLISHED 29 Aug 2025 Author details Author details 1 McWilliams School of Biomedical Informatics, The University of Texas Health Science Center (UTHealth-Houston), Houston, Texas, USA 2 Cy-Fair High School, Cypress, Texas, USA 3 Departments of Mathematical Sciences & Biology, Indiana State University, Terre Haute, Indiana, USA William Choi-Kim Roles: Methodology, Software, Validation, Visualization, Writing – Review & Editing Sayed-Rzgar Hosseini Roles: Conceptualization, Methodology, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the RPackage gateway. This article is included in the Bioconductor gateway. Abstract Conjunctive Bayesian Networks (CBN) are probabilistic graphical models used to describe mutation accumulation processes such as tumorigenesis. Several CBN models exist, which have enabled the analysis and modeling of cancer progression pathways using cross-sectional genomic data. However, these models are implemented in different languages with heterogeneous input and output formats. Moreover, the recent developments towards robust inference of cancer progression pathways (i.e., the R-CBN and B-CBN models), highlight the need for departure from the maximum-likelihood-based frameworks (i.e., the CT-CBN and H-CBN models), which requires substantial implementational adjustments. Thus, we introduce the CBN2Path R/Bioconductor package that not only provides a unifying interface to accommodate all CBN models, but it also offers the necessary functionalities to facilitate robust inference, analysis and visualization of cancer progression pathways. READ ALL READ LESS Keywords R/Bioconductor Package, Conjunctive Bayesian Networks, CT-CBN, H-CBN, B-CBN, R-CBN, Cancer Progression Pathways, Fitness Landscapes Corresponding Author(s) Sayed-Rzgar Hosseini ( [email protected] ) Close Corresponding author: Sayed-Rzgar Hosseini Competing interests: No competing interests were disclosed. Grant information: This work was supported by the new faculty start-up (indexed as STPRZG) offered by the college of Arts & Sciences at Indiana State University. The funders had no role in preparing this article. Copyright: © 2025 Choi-Kim W and Hosseini SR. 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: Choi-Kim W and Hosseini SR. CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.12688/f1000research.168810.1 ) First published: 29 Aug 2025, 14 :834 ( https://doi.org/10.12688/f1000research.168810.1 ) Latest published: 29 Aug 2025, 14 :834 ( https://doi.org/10.12688/f1000research.168810.1 ) Introduction Tumorigenesis is a stepwise process driven by a sequence of molecular changes that are described as pathways of cancer progression. Conjunctive Bayesian Networks (CBN) are probabilistic graphical models designed for the analysis and modeling of these pathways. 1 CBN models have evolved into different varieties such as CT-CBN, 2 H-CBN, 3 B-CBN, 4 and R-CBN, 5 each addressing different aspects of this task. However, the software corresponding to these methods is not well integrated because they are implemented in different languages with heterogeneous input and output formats. This necessitates a unifying platform that integrates these models and enables the standardization of input and output formats. Evam-tools 6 is an R package that takes the initial steps towards this end. However, it does not include the B-CBN model or the recently developed R-CBN algorithm, which focuses on robust inference of cancer progression pathways. 5 Importantly, the B-CBN and R-CBN algorithms for pathway quantification necessitate exhaustive consideration and weighting of all potential dependency structures (posets) within the mutational quartets. This requires reimplementation of the CBN models and adjustment of downstream pathway analysis and modeling functions. Therefore, here we introduce the CBN2Path R package that not only includes the original implementation of the CBN models (e.g., CT-CBN and H-CBN) in a unifying interface but also accommodates the necessary modifications to support robust CBN algorithms (e.g., B-CBN and R-CBN). Importantly, CBN2Path includes a collection of functions required to quantify predictability, 7 analyze robustness, 5 and visualize mutational pathways from pre-processed cross-sectional genomic data. It is important to note that the R-CBN method has great potential for wide application in future predictive models because of its unique ability to offer an optimal balance between robustness and predictability. 5 Thus, we anticipate that CBN2Path will be a commonly used package in the field, particularly by providing a platform to facilitate future applications of the R-CBN model. Methods Implementation CBN2Path is implemented as a standard R package and hosted in the Bioconductor repository. Furthermore, the developed version of CBN2Path is available on GitHub. All functions were documented, and examples were included. The main functions included in CBN2Path are listed in Table 1 , and their features and capabilities are described in detail in the tutorial (vignette) accompanied by the package. CBN2Path can be installed and used mainly on Unix platforms. if ( ! require ( "BiocManager" , quietly = TRUE )) install.packages ( "BiocManager" ) BiocManager :: install ( "CBN2Path" ) Table 1. The main functions available in CBN2Path. The main functions are listed and categorized into five parts: i) input preparation, ii) CBN models, iii) pathway quantification, iv) fitness landscape analysis, and v) the downstream analysis. For each function, the name (the first column), description (the second column) and the returned value (the third column) are provided. Function name Description Value Part I: Input Preparation readPoset Reads .poset files The poset matrix readPattern Reads .pat files The genotype matrix readLambda Reads .lambda files The list of λ parameters genotypeMatrixMutator Adds false-positive and false negatives errors to a binary genotype matrix A mutated binary genotype matrix Part II: CBN Models ctcbnSingle Runs the CT-CBN model for a given genotype matrix and a single poset (the original implementation) The λ parameters, likelihood and the MLE poset hcbnSingle Runs the H-CBN model for a given genotype matrix and a single poset (the original implementation) The λ parameters, likelihood and the MLE poset Ctcbn Runs the CT-CBN model for a given genotype matrix and a list of posets (the new implementation) A list of λ parameters and likelihood values Hcbn Runs the H-CBN model for a given genotype matrix and a list of posets (the new implementation) A list of λ parameters and likelihood values Bcbn Runs the B-CBN model for a given genotype matrix A list of MCMC-sampled DAGs visualizeCBNModel Generates a graphical representation of a given poset The DAG corresponding to the given poset Part III: Pathway Quantification pathProbCBN Quantifies the pathway probabilities for a given poset and λ vector The pathway probability distribution ( P ( Π )) pathProbQuartetCTCBN Quantifies the CT-CBN based probabilities for all pathways of length 4 The pathway probability distribution ( P ( Π )) pathProbQuartetHCBN Quantifies the H-CBN based probabilities for all pathways of length 4 The pathway probability distribution ( P ( Π )) pathProbQuartetRCBN Quantifies the R-CBN based probabilities for all pathways of length 4 The pathway probability distribution ( P ( Π )) pathProbQuartetBCBN Quantifies the B-CBN based probabilities for all pathways of length 4 The pathway probability distribution ( P ( Π )) visualizeProbabilities Generates graphical representation of all potential pathways of a given length and their probabilities A plot of the pathways and their probabilities Part IV: Fitness Landscape Analysis pathProbSSWM Quantifies the pathway probabilities for a given fitness landscape using the SSWM assumption The pathway probability distribution ( P ( Π )) visualizeFitnessLandscape Visualizes a given fitness landscape A color-coded plot of a given fitness landscape Part V: Downstream Analyses Predictability Quantifies the predictability for a given pathway probability distribution The predictability score ( Φ ) jensenShannonDivergence Quantifies the Jensen-Shannon Divergence between two probability distributions The Jensen-Shannon Divergence (JSD) value pathwayCompatibilityQuartet Quantifies the compatibility vector for all pathways of length 4 The pathway compatibility vector ( c ( Π )) During the installation of CBN2Path, other packages that it depends on are automatically installed, including coda, cowplot, doMC, foreach, ggplot2, ggraph, grDevices, graphics, igraph, magrittr, patchwork, rlang, R6, stats, and tidygraph. Operation CBN2Path provides a unifying interface to implement different CBN models, which are utilized to facilitate the quantification, visualization, and analysis of mutational pathways. The CBN2Path has three main functionalities. (a) The original implementation of the CT-CBN and H-CBN models, in which case the associated workflow for pathway quantification, is shown in Figure 1 . In this setting, the genotype matrix and a given poset are used as inputs for the CBN models (Step 1), which output the estimated λ values and MLE poset structure. Subsequently, these outputs are used as inputs for pathway quantification and visualization functions (Step 2), which outputs the ultimate pathway probability distributions. These outputs are then utilized by downstream analysis functions (Step 3), which quantify the different properties of the pathway probability distributions, such as predictability, robustness, and compatibility. (b) The second workflow was specifically designed to analyze mutational quartets ( Figure 2 ). In this setting, only a genotype matrix is required as the input, and specifying a given poset is not required. Basically, all potential 219 posets are considered and so the CT-CBN model is executed 219 times, leading to 219 different λ vectors, which are used to estimate 219 different probability distributions that will be aggregated to derive the ultimate probability distribution. The posets are weighted using an MCMC approach in the B-CBN-based approach, whereas they are weighted using their reciprocal rank in the R-CBN approach. 5 Note that in the second workflow, unlike in the first one, there is no sequential input-output arrangement; rather, we have one single input (the genotype matrix) and one single output (the ultimate probability distribution), and the intermediate functions are called internally without a direct interface with the user. (c) CBN2Path also provides the necessary functions for visualizing fitness landscapes and quantifying their associated pathway probabilities using evolutionary models that operate based on the Strong-Selection Weak-Mutation (SSWM) assumption ( Figure 3 ). Figure 1. Workflow I. CBN models (CT-CBN or H-CBN) take the genotype matrix and a given poset as input, and then output the estimated λ vector and the MLE poset (step 1), which will be used by the pathway inference functions to produce the inferred pathway probability distribution (step 2) that will be subsequently used by other downstream functions to measure different properties of the pathway probabilities (step 3). Figure 2. Workflow II. The R-CBN and B-CBN approaches require an alternative workflow for quantifying the pathway probability distributions, which only takes a genotype matrix as the input. Basically, under all 219 potential posets, the λ parameters are estimated using CT-CBN. Consequently, 219 different probability distributions are derived, which are then aggregated to generate the ultimate pathway probability distribution that will be used by the downstream functions for further analyses. Note that the B-CBN method utilizes an MCMC approach for weighting the posets, which is needed in the aggregation step. 4 In contrast, in the R-CBN method, the likelihood outputted from the CT-CBN model under each of the 219 posets are considered, and pathways are weighted based on their reciprocal rank in terms of likelihood. Furthermore, R-CBN weights the pathways and updates their probabilities using their corresponding edge (marginal) probabilities. 5 Note that in the workflow II there is no sequential input-output arrangement, but rather we have one single input (the genotype matrix) and one single output (the ultimate probability distribution). In other words, the intermediate functions are called internally, without a direct interface with the user. Figure 3. Analysis and visualization of fitness landscapes. CBN2Path enables visualization of fitness landscapes and quantifying pathway probability distributions based on evolutionary models under the Strong-Selection Weak-Mutation (SSWM) assumption. 7 Use cases Workflow I: CT-CBN and H-CBN based quantification of pathway probabilities Preparing the input data As shown in Figure 2 , the original implementation of the CT-CBN and H-CBN models requires two input files: i) a “.pat” file, which contains binary genotype data, and ii) a “.poset” file that encodes a given poset. CBN2Path avoids reading files but accepts two matrices that are obtained after reading the above files. Importantly, to store input posets and genotype matrices, CBN2Path implements its own data structure, Spock, which includes read_pattern and read_poset methods to read, respectively the “.pat” and “.poset” files in the spock-data type. library (CBN2Path) example_path <- getExamples ()[ 1 ] input_poset <- readPoset (example_path) input_pattern <- readPattern (example_path) input_1 <- Spock $ new ( poset = input_poset $ sets, numMutations = input_poset $ mutations, genotypeMatrix = input_pattern ) Alternatively, input matrices can be created directly without reading from a file. For example: # The poset dag <- matrix ( c ( 3 , 3 , 4 , 4 , 1 , 2 , 1 , 2 ), 4 , 2 ) # The genotype matrix set.seed ( 100 ) gen_1 <- c ( rep ( 0 , 150 ), sample ( c ( 0 , 1 ), 25 , replace = TRUE ), rep ( 0 , 25 )) gen_2 <- c ( rep ( 0 , 175 ), sample ( c ( 0 , 1 ), 25 , replace = TRUE )) gen_3 <- c ( rep ( 0 , 50 ), sample ( c ( 0 , 1 ), 100 , replace = TRUE ), rep ( 1 , 50 )) gen_4 <- c ( sample ( c ( 0 , 1 ), 100 , replace = TRUE ), rep ( 0 , 50 ), rep ( 1 , 50 )) g_mat <- matrix ( c (gen_1, gen_2, gen_3, gen_4), 200 , 4 ) g_mat <- cbind ( 1 , g_mat) # Preparing input of the ct-cbn/h-cbn methods input_2 <- Spock $ new ( poset = dag, numMutations = 4 , genotypeMatrix = g_mat ) Note that the first column of the genotype matrix must always be one, whereas each of the other columns corresponds to a given mutational event. Therefore, the number of columns in the genotype matrix must be equal to the number of mutations considered plus one. In the second example, the genotypes are generated such that the mutation orders never violate the restrictions in the temporal ordering between mutations imposed by the corresponding poset. For example, mutations 1 and 2 occur when mutations 3 and 4 have already occurred. To allow violation of the restrictions, one can use the genotypeMatrixMutator function to add false positives and false negatives of a given rate. In the following example, the g_mat matrix is converted to the g_mat_mut matrix by adding false positive and false negative rates of 0.3 and 0.2, respectively: temp <- g_mat[, 2 : 5 ] temp_mut <- genotypeMatrixMutator (temp, 0.3 , 0.2 ) g_mat_mut <- cbind ( 1 , temp_mut) # Preparing input of the ct-cbn/h-cbn methods input_3 <- Spock $ new ( poset = dag, numMutations = 4 , genotypeMatrix = g_mat_mut ) Note that the first column of the genotype matrix must always remain one. Therefore, we did not pass the first column to genotypeMatrixMutator function. Running the CBN models Having prepared the input files, it is now easy to run the CBN models using ctcbnSingle and hcbnSingle . # CT-CBN results_c1 <- ctcbnSingle (input_1) results_c2 <- ctcbnSingle (input_2) results_c3 <- ctcbnSingle (input_3) # H-CBN results_h1 <- hcbnSingle (input_1) results_h2 <- hcbnSingle (input_2) results_h3 <- hcbnSingle (input_3) Below, we can see how to obtain the estimated λ values and the corresponding likelihood for the first example. # The estimated lambda values ml_lambda_c1 <- results_c1[[ 1 ]] $ lambda # The likelihood loglikelihood_c1 <- results_c1[[ 1 ]] $ summary[ 4 ] Furthermore, the maximum-likelihood poset can be identified and visualized using visualizeCBNModel function. # The MLE poset ml_poset_c1 <- results_c1[[ 1 ]] $ poset $ sets # visualizing the MLE visualizeCBNModel (ml_poset_c1) It is important to mention that we have an alternative implementation of the CBN models, namely the ctcbn and hcbn functions, which accept a list of posets as input and accordingly produce a list of λ vectors, a list of likelihood values, and a list of MLE posets. This strategy is utilized in the second workflow, which is specifically suited for analyzing mutational quartets and pathways of length four. # The collection of all 219 potential posets posets <- readRDS ( system.file ( "extdata" , "Posets.rds" , package = "CBN2Path" )) # Input preparation input_4 <- Spock $ new ( poset = posets, numMutations = 4 , genotypeMatrix = g_mat ) # Running the ctcbn function results_c4 <- ctcbn (input_4) # Running the hcbn function results_h4 <- hcbn (input_4) Note that the collection of all 219 potential posets for analyzing mutational quartets is already accessible within the package, which is read and stored in the first line of the above code. Inferring pathway probability distributions The output of the CBN models, namely the estimated λ values and the MLE poset, can be used as the input of the pathProbCBN function, which quantifies the pathway probability distribution ( P ( Π )). In the example below, the results of the second example obtained in the previous section (results_c2 and results_h2) are used. # The first input: The MLE poset (the output of the CBN models) dag_c2 <- results_c2[[ 1 ]] $ poset $ sets dag_h2 <- results_h2[[ 1 ]] $ poset $ sets #The second input: The estimated Lambda values (the output of the CBN models) lambda_c2 <- as.numeric (results_c2[[ 1 ]] $ lambda) lambda_h2 <- as.numeric (results_h2[[ 1 ]] $ lambda) # Quantifying the pathway probability distributions prob_c2 <- pathProbCBN (dag_c2, lambda_c2, 4 ) prob_h2 <- pathProbCBN (dag_h2, lambda_h2, 4 ) In this example, prob_c2 and prob_h2 are vectors of length 24, each representing one of the 24 pathways. Downstream analyses The quantified pathway probability distributions are used as the input of other functions used in the downstream steps for visualization ( visualizeProbabilities ) and quantification of the predictability ( predictability ), or measuring the divergence between probability distributions ( jensenShannonDivergence ): # Visualization of pathways and their probabilities visualizeProbabilities (prob_c2) visualizeProbabilities (prob_h2) # Quantification of predictability score for a given probability distribution pred_c2 <- predictability (prob_c2, 4 ) pred_h2 <- predictability (prob_h2, 4 ) # Quantification of the Jensen-Shannon Divergence (JSD) between a pair of distributions jsd <- jensenShannonDivergence (prob_c2, prob_h2) Workflow II: B-CBN and R-CBN based inference of pathway probability distributions The second workflow for quantifying pathway probabilities was designed specifically for implementing the R-CBN and B-CBN algorithms to enable the robust inference of pathway probability distributions. It is specifically suited for analyzing mutational quartets and pathways of length 4. The ctcbn function that takes the exhaustive list of 219 posets as input is an integral part of this workflow, which makes it easy to work with, as the user only needs to input a genotype matrix. Running the R-CBN model R-CBN weighs the 219 posets based on their reciprocal rank in terms of likelihood, and a second pathway-based weighting layer is employed. However, the user only needs to work directly with the pathProbQuartetRCBN function, because intermediate functions such as posetWeightingRCBN , pathwayWeightingRCBN , edgeMarginalized , pathEdgeMapper and pathNormalization are taken care of internally. g_mat2 <- g_mat[, 2 : 5 ] prob_r2 <- pathProbQuartetRCBN (g_mat2) Note that this function only needs a genotype matrix as the input and does not require the first column of the matrix to be one; therefore, we needed to remove the first column from the gMat matrix that we previously produced. Running the B-CBN model Although the B-CBN algorithm is fundamentally different from the R-CBN algorithm, particularly in terms of how the posets are weighted, which strongly affects the internal implementation of the intermediate functions, the user interface is exactly the same. The pathProbQuartetBCBN function is defined as prob_b2 <- pathProbQuartetBCBN (g_mat2) CBN2Path also provides a similar implementation for CT-CBN and H-CBN. prob_c2 <- pathProbQuartetCTCBN (g_mat2) prob_h2 <- pathProbQuartetHCBN (g_mat2) Having determined the pathway probabilities, downstream analysis can be performed similarly to those in the first workflow. Furthermore, pathway compatibilities ( c ( Π )) can be measured directly from a genotype matrix, and their correlation with pathway probabilities ( P ( Π )) can be calculated as pathway_c2 <- pathwayCompatibilityQuartet (g_mat2) rho_c2 <- cor (pathway_c2, prob_c2, method = "spearman" ) Analyzing fitness landscapes CBN2Path also provides functions for the analysis and visualization of fitness landscapes. For example, after assigning a fitness vector f to the set of binary genotypes of length four, which can be enumerated by the generateMatrixGenotypes function, we can calculate the corresponding pathway probability distribution under the SSWM-based evolutionary model using the pathProbSSWM function as follows: f <- c ( 0 , 0.1 , 0.2 , 0.1 , 0.2 , 0.4 , 0.3 , 0.2 , 0.2 , 0.1 , 0 , 0.6 , 0.4 , 0.3 , 0.2 , 1 ) g <- generateMatrixGenotypes ( 4 ) Prob_w <- pathProbSSWM (f, 4 ) Furthermore, the fitness landscape can be visually inspected using the visualizeFitnessLandscape function, as follows: visualizeFitnessLandscape (f) Conclusions In summary, CBN2Path provides a unifying platform for the efficient implementation of the CT-CBN, H-CBN, B-CBN, and R-CBN methods, which facilitates robust quantification, visualization, and analysis of cancer progression pathways from pre-processed binary mutational data. Software availability • Source code available from: https://github.com/rockwillck/CBN2Path • Software will be available from: https://bioconductor.org/packages/CBN2Path • Archived software available from: https://doi.org/10.5281/zenodo.16791480 • License: MIT . References 1. Beerenwinkel N, Eriksson N, Sturmfels B: Conjunctive Bayesian networks. Bernoulli. November 2007; 13 (4): 893–909. 1350-7265. Publisher Full Text Reference Source 2. Beerenwinkel N, Sullivant S: Markov models for accumulating mutations. Biometrika. September 2009; 96 (3): 645–661. 0006-3444, 1464-3510. Publisher Full Text Reference Source 3. Gerstung M, Baudis M, Moch H, et al. : Quantifying cancer progression with conjunc- tive Bayesian networks. Bioinf (Oxf). November 2009; 25 (21): 2809–2815. 1367-4811. PubMed Abstract | Publisher Full Text | Free Full Text Reference Source 4. Sakoparnig T, Beerenwinkel N: Efficient sampling for Bayesian inference of conjunctive Bayesian networks. Bioinformatics. September 2012; 28 (18): 2318–2324. 1367-4811, 1367-4803. PubMed Abstract | Publisher Full Text Reference Source 5. Hosseini S-R: Robust inference of cancer progression pathways using Conjunctive Bayesian Networks.July 2025. Reference Source 6. Diaz-Uriarte R, Herrera-Nieto P: EvAM-Tools: tools for evolutionary accumulation and cancer progression models. Bioinformatics. December 2022; 38 (24): 5457–5459. 1367-4803, 1367-4811. PubMed Abstract | Publisher Full Text | Free Full Text Reference Source 7. Hosseini S-R, Diaz-Uriarte R, Markowetz F, et al. : Estimating the predictability of cancer evolution. Bioinformatics. July 2019; 35 (14): i389–i397. 1367-4803, 1367-4811. PubMed Abstract | Publisher Full Text | Free Full Text Reference Source Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 29 Aug 2025 ADD YOUR COMMENT Comment Author details Author details 1 McWilliams School of Biomedical Informatics, The University of Texas Health Science Center (UTHealth-Houston), Houston, Texas, USA 2 Cy-Fair High School, Cypress, Texas, USA 3 Departments of Mathematical Sciences & Biology, Indiana State University, Terre Haute, Indiana, USA William Choi-Kim Roles: Methodology, Software, Validation, Visualization, Writing – Review & Editing Sayed-Rzgar Hosseini Roles: Conceptualization, Methodology, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This work was supported by the new faculty start-up (indexed as STPRZG) offered by the college of Arts & Sciences at Indiana State University. The funders had no role in preparing this article. Article Versions (1) version 1 Published: 29 Aug 2025, 14:834 https://doi.org/10.12688/f1000research.168810.1 Copyright © 2025 Choi-Kim W and Hosseini SR. 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 Choi-Kim W and Hosseini SR. CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.12688/f1000research.168810.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 29 Aug 2025 Views 0 Cite How to cite this report: Liu H. Reviewer Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r455075 ) The direct URL for this report is: https://f1000research.com/articles/14-834/v1#referee-response-455075 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 26 Feb 2026 Haibo Liu , University of Massachusetts Chan Medical School, Worcester, Massachusetts, USA Not Approved VIEWS 0 https://doi.org/10.5256/f1000research.186025.r455075 Choi-Kim and Hosseini presented their R/Bioconductor package CBN2Path, which provides a unified interface to access previous proposed conjunctive Bayesian Network models to analyze cancer progression pathways. This is potentially a useful package by democratizing the advanced models for cancer ... Continue reading READ ALL Choi-Kim and Hosseini presented their R/Bioconductor package CBN2Path, which provides a unified interface to access previous proposed conjunctive Bayesian Network models to analyze cancer progression pathways. This is potentially a useful package by democratizing the advanced models for cancer studies to R users. However, the current versions of the manuscript and package are premature, given the bugs in the code and lack of clear presentation. It is unclear whether the authors reimplement the original algorithms used by various of CBN models. Please give a little more background information about the existing implementation of these models in the Introduction section. If the author reimplemented the models in R and C languages, can the authors demonstrate the results output by their package are consistent with the original implementations for a real dataset? Scalability concern: The Bayesian network-based method is usually computing intensive. Could the author discuss the scalability of their methods? How big genotype matrices can be handled in a reasonable run time? Please discuss the limitations of the package. Issues with the R/C code: https://github.com/rockwillck/CBN2Path/blob/main/R/bcbn.R#L66 . “datasets” is undefined when parallelization is not available. Location: src/init.c line 67 vs src/ctcbn.c line 283: Declaration has 6 parameters, but implementation has 8 (fs3 and repsilon are missing) https://github.com/rockwillck/CBN2Path/blob/main/R/utils.R#L82 , Should be 3:(length(lines) - 1) due to operator precedence. https://github.com/rockwillck/CBN2Path/blob/main/R/bcbn.R#L39 , converged2 is assigned but never used later. ( this is not significant, but for good practice, the code should be clean). Critical issues in multiple files in src/: free_int_cube() doesn't free the main array strdup() allocations never freed in ctcbn_() and hcbn_() bootstrap_cover_count never freed print_double_array() return values not freed Error handling disabled — NULL returns not checked read_file() return value must be freed by caller (if used) For vignette, Fixing the typo: "Note that we in this example we have used..." Making data preparation visible: lines 54-63, The genotype matrix preparation is in include=FALSE, so users don't see how to prepare their own data. Explaining why some code is not executed: lines 416-452 Adding a quick reference/workflow section at the beginning of the vignette, such as 1. Prepare genotype matrix 2. Choose CBN model (CT-CBN, H-CBN, R-CBN, or B-CBN) 3. Run model → get results 4. Extract pathway probabilities 5. Visualize and analyze Minor issues: 1. The authors showed how to generate TCGAMatrix in the vignette. Can they demonstrate how to generate the Genotype matrix and Input Poset from a conventional somatic variant analysis in details? What is the suggested source of pathways? Can the package handle all different types of variants? 2. Can the author explain how to interpret the tables showing aggregated pathway probability distributions? Especially the arrow connected colored dots. 3. In the Method section, the authors state that “CBN2Path can be installed and used mainly on Unix platforms”, but in their Git Hub repository, they demonstrated how the package can be installed in Unix, Mac, and Windows. Meanwhile, they point out that “Windows support for CBN2Path is limited . Functions will be missing key functionality; the CBN models developed at ETH-Zurich that CBN2Path is based on don’t support Windows inherently”. Please clarify. If the underlying CBN models don’t support Windows, just clearly say no Windows support for the package. 4. A brief description for some uncommon data structures might be helpful for general readers: .poset, .pat, and .lambda files? mutation quartets? Spock object? 5. It seems the package can only mutational quartets and pathways of length 4. Is that true? 6. The authors included many code snippets in the manuscript, but they didn’t show the any actual output (visualization or data). It is hard for readers to understand what the package is really doing. It is better to show a case study using real data to demonstrate the usage of the package. Is the rationale for developing the new software tool clearly explained? No Is the description of the software tool technically sound? No 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? Partly Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Partly Competing Interests: No competing interests were disclosed. Reviewer Expertise: Bioinformatics and computational biology, R package development, Systems biology I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Liu H. Reviewer Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r455075 ) The direct URL for this report is: https://f1000research.com/articles/14-834/v1#referee-response-455075 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: van daalen F. Reviewer Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r418679 ) The direct URL for this report is: https://f1000research.com/articles/14-834/v1#referee-response-418679 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 30 Sep 2025 Florian van daalen , Maastricht University Medical Centre, Maastricht, Maastricht, The Netherlands Not Approved VIEWS 0 https://doi.org/10.5256/f1000research.186025.r418679 Authors present a new R package for generating Conjunctive Bayesian Networks. Authors indicated this was motivated because current models are implement in different languages with heterogenous input and output. Additionally, authors claim recent developments highlight a need to move a ... Continue reading READ ALL Authors present a new R package for generating Conjunctive Bayesian Networks. Authors indicated this was motivated because current models are implement in different languages with heterogenous input and output. Additionally, authors claim recent developments highlight a need to move a way from maximum likelihood based frameworks. While interesting the paper contains a number of major flaws. Authors claim they are motivated to create this package because current approaches are heterogenous and implemented across different languages. However, authors do not explain why this is a problem in this specific context. Additionally, authors do not explain why their new package is the unifying solution that will solve this problem of heterogenity. Can their new package handle all input and output formats and unify these standards? Authors should clarify their motivation. The explanation of the software is insufficient. The codesnippets provided lack context. Additionally, it is frequently unclear what authors are referring to when describing the code in text. At minimum authors need to number the code snippets and include line-numbers so they can refer to these in the text. Some sentences such as "Note that the first column of the genotype matrix must be always be one" require additional explanation as it is completely unclear what is meant by this. Authors did provide a github repository which does make it possible to reverse engineer the work and potentially find anwsers, but readers cannot be expected to search through the repository to understand the manuscript. Authors provide an example case with 219 posets. However, it is unclear what the input data is, where these 219 posets come from, or what the expected output is. This makes it impossible to validate this example. Additionally, no performance metrics are given, neither in terms of model performance nor in terms of runtime complexity or any other aspects that would allow a reader to compare this package with other solutions. Despite BNs being a graphical model, authors do not provide any visuals of the models created with their new package. A discussion of the (dis)advantages compared to alternative methods is missing. However, considering the lack of performance metrics this is unsurprising. In its current form too many things are missing to approve this manuscript for indexing. Is the rationale for developing the new software tool clearly explained? Partly Is the description of the software tool technically sound? No 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? No Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? No Competing Interests: No competing interests were disclosed. Reviewer Expertise: Areas of expertise: - software engineering, machine learning, federated learning, Bayesian networks, clinical data science I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT van daalen F. Reviewer Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r418679 ) The direct URL for this report is: https://f1000research.com/articles/14-834/v1#referee-response-418679 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 29 Aug 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 29 Aug 25 read read Florian van daalen , Maastricht University Medical Centre, Maastricht, The Netherlands Haibo Liu , University of Massachusetts Chan Medical School, Worcester, 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 © 2026 Liu H. 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. 26 Feb 2026 | for Version 1 Haibo Liu , University of Massachusetts Chan Medical School, Worcester, Massachusetts, USA 0 Views copyright © 2026 Liu H. 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) Not 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 Choi-Kim and Hosseini presented their R/Bioconductor package CBN2Path, which provides a unified interface to access previous proposed conjunctive Bayesian Network models to analyze cancer progression pathways. This is potentially a useful package by democratizing the advanced models for cancer studies to R users. However, the current versions of the manuscript and package are premature, given the bugs in the code and lack of clear presentation. It is unclear whether the authors reimplement the original algorithms used by various of CBN models. Please give a little more background information about the existing implementation of these models in the Introduction section. If the author reimplemented the models in R and C languages, can the authors demonstrate the results output by their package are consistent with the original implementations for a real dataset? Scalability concern: The Bayesian network-based method is usually computing intensive. Could the author discuss the scalability of their methods? How big genotype matrices can be handled in a reasonable run time? Please discuss the limitations of the package. Issues with the R/C code: https://github.com/rockwillck/CBN2Path/blob/main/R/bcbn.R#L66 . “datasets” is undefined when parallelization is not available. Location: src/init.c line 67 vs src/ctcbn.c line 283: Declaration has 6 parameters, but implementation has 8 (fs3 and repsilon are missing) https://github.com/rockwillck/CBN2Path/blob/main/R/utils.R#L82 , Should be 3:(length(lines) - 1) due to operator precedence. https://github.com/rockwillck/CBN2Path/blob/main/R/bcbn.R#L39 , converged2 is assigned but never used later. ( this is not significant, but for good practice, the code should be clean). Critical issues in multiple files in src/: free_int_cube() doesn't free the main array strdup() allocations never freed in ctcbn_() and hcbn_() bootstrap_cover_count never freed print_double_array() return values not freed Error handling disabled — NULL returns not checked read_file() return value must be freed by caller (if used) For vignette, Fixing the typo: "Note that we in this example we have used..." Making data preparation visible: lines 54-63, The genotype matrix preparation is in include=FALSE, so users don't see how to prepare their own data. Explaining why some code is not executed: lines 416-452 Adding a quick reference/workflow section at the beginning of the vignette, such as 1. Prepare genotype matrix 2. Choose CBN model (CT-CBN, H-CBN, R-CBN, or B-CBN) 3. Run model → get results 4. Extract pathway probabilities 5. Visualize and analyze Minor issues: 1. The authors showed how to generate TCGAMatrix in the vignette. Can they demonstrate how to generate the Genotype matrix and Input Poset from a conventional somatic variant analysis in details? What is the suggested source of pathways? Can the package handle all different types of variants? 2. Can the author explain how to interpret the tables showing aggregated pathway probability distributions? Especially the arrow connected colored dots. 3. In the Method section, the authors state that “CBN2Path can be installed and used mainly on Unix platforms”, but in their Git Hub repository, they demonstrated how the package can be installed in Unix, Mac, and Windows. Meanwhile, they point out that “Windows support for CBN2Path is limited . Functions will be missing key functionality; the CBN models developed at ETH-Zurich that CBN2Path is based on don’t support Windows inherently”. Please clarify. If the underlying CBN models don’t support Windows, just clearly say no Windows support for the package. 4. A brief description for some uncommon data structures might be helpful for general readers: .poset, .pat, and .lambda files? mutation quartets? Spock object? 5. It seems the package can only mutational quartets and pathways of length 4. Is that true? 6. The authors included many code snippets in the manuscript, but they didn’t show the any actual output (visualization or data). It is hard for readers to understand what the package is really doing. It is better to show a case study using real data to demonstrate the usage of the package. Is the rationale for developing the new software tool clearly explained? No Is the description of the software tool technically sound? No 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? Partly Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Partly Competing Interests No competing interests were disclosed. Reviewer Expertise Bioinformatics and computational biology, R package development, Systems biology I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. reply Respond to this report Responses (0) Liu H. Peer Review Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r455075) 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-834/v1#referee-response-455075 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 van daalen F. 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. 30 Sep 2025 | for Version 1 Florian van daalen , Maastricht University Medical Centre, Maastricht, Maastricht, The Netherlands 0 Views copyright © 2025 van daalen F. 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) Not 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 Authors present a new R package for generating Conjunctive Bayesian Networks. Authors indicated this was motivated because current models are implement in different languages with heterogenous input and output. Additionally, authors claim recent developments highlight a need to move a way from maximum likelihood based frameworks. While interesting the paper contains a number of major flaws. Authors claim they are motivated to create this package because current approaches are heterogenous and implemented across different languages. However, authors do not explain why this is a problem in this specific context. Additionally, authors do not explain why their new package is the unifying solution that will solve this problem of heterogenity. Can their new package handle all input and output formats and unify these standards? Authors should clarify their motivation. The explanation of the software is insufficient. The codesnippets provided lack context. Additionally, it is frequently unclear what authors are referring to when describing the code in text. At minimum authors need to number the code snippets and include line-numbers so they can refer to these in the text. Some sentences such as "Note that the first column of the genotype matrix must be always be one" require additional explanation as it is completely unclear what is meant by this. Authors did provide a github repository which does make it possible to reverse engineer the work and potentially find anwsers, but readers cannot be expected to search through the repository to understand the manuscript. Authors provide an example case with 219 posets. However, it is unclear what the input data is, where these 219 posets come from, or what the expected output is. This makes it impossible to validate this example. Additionally, no performance metrics are given, neither in terms of model performance nor in terms of runtime complexity or any other aspects that would allow a reader to compare this package with other solutions. Despite BNs being a graphical model, authors do not provide any visuals of the models created with their new package. A discussion of the (dis)advantages compared to alternative methods is missing. However, considering the lack of performance metrics this is unsurprising. In its current form too many things are missing to approve this manuscript for indexing. Is the rationale for developing the new software tool clearly explained? Partly Is the description of the software tool technically sound? No 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? No Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? No Competing Interests No competing interests were disclosed. Reviewer Expertise Areas of expertise: - software engineering, machine learning, federated learning, Bayesian networks, clinical data science I confirm that I have read this submission and believe that I have an appropriate level of expertise to state that I do not consider it to be of an acceptable scientific standard, for reasons outlined above. reply Respond to this report Responses (0) van daalen F. Peer Review Report For: CBN2Path: an R/Bioconductor package for the analysis of cancer progression pathways using Conjunctive Bayesian Networks [version 1; peer review: 2 not approved] . F1000Research 2025, 14 :834 ( https://doi.org/10.5256/f1000research.186025.r418679) 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-834/v1#referee-response-418679 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 = "CBN2Path: an R\/Bioconductor package for...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-834/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-834/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-834/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Choi-Kim W and Hosseini SR'); 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-834/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-834", templates : { twitter : "CBN2Path: an R\/Bioconductor package for the analysis of cancer.... Choi-Kim W and Hosseini SR, published by " + "@F1000Research" + ", https://f1000research.com/articles/14-834/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/168810/186025") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "186025"); $(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 = { "455078": 0, "455079": 0, "455076": 0, "455077": 0, "455074": 0, "455075": 8, "455073": 0, "435630": 0, "435631": 0, "435629": 0, "455082": 0, "455080": 0, "455081": 0, "435638": 0, "435636": 0, "435637": 0, "435634": 0, "435635": 0, "435632": 0, "435633": 0, "433470": 0, "433471": 0, "433468": 0, "433469": 0, "433466": 0, "433467": 0, "433464": 0, "433465": 0, "433472": 0, "433473": 0, "410711": 0, "410718": 0, "410719": 0, "410716": 0, "410717": 0, "410714": 0, "410715": 0, "410712": 0, "410713": 0, "410720": 0, "414830": 0, "414831": 0, "414828": 0, "414829": 0, "414826": 0, "414827": 0, "414825": 0, "418678": 0, "418679": 35, "418676": 0, "418677": 0, "414834": 0, "418674": 0, "418675": 0, "414832": 0, "414833": 0, "418673": 0, "418682": 0, "418680": 0, "418681": 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 = "a676135e-e359-4c87-8c17-4c70abcb5859"; 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