CINNAMON-GUI: Revolutionizing Pap Smear Analysis... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/13-897" }, "headline": "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification", "datePublished": "2024-08-06T15:04:34", "dateModified": "2024-08-06T15:04:34", "author": [ { "@type": "Person", "name": "Luca Zammataro" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": " Background Medical imaging has seen significant advancements through machine learning, particularly convolutional neural networks (CNNs). These technologies have transformed the analysis of pathological images, enhancing the accuracy of diagnosing and classifying cellular anomalies. Digital pathology methodologies, including image analysis, have improved cervical cancer diagnostics. However, existing commercial platforms are often costly and restrictive, limiting customization and scalability. Methods CINNAMON-GUI is an open-source digital pathology tool based on CNNs for classifying Pap smear images. Transitioning to a Shiny app in Python, it offers enhanced user interface and interactivity. The application supports dynamic web interactions, advanced features for image analysis, and state-of-the-art CNN models tailored for digital pathology. Key features include intuitive UI components, real-time image and plot generation, memory-efficient data handling, and robust training capabilities with customizable CNN architectures. The tool also integrates with Labelme for defining regions of interest and allows testing on external biospecimens. Results Model A (seed 42, 100 epochs) and Model B (same architecture with adjusted augmentation parameters) were compared. Model A stabilized with training accuracy around 0.88 and validation accuracy around 0.913. Model B showed improved performance with training accuracy around 0.91 and validation accuracy around 0.95. Feature mapping highlighted critical morphological aspects, improving classification accuracy. Model B reduced misclassification errors significantly compared to Model A. Conclusions CINNAMON-GUI demonstrates the potential of an open-source platform in digital pathology, providing transparency and collaborative opportunities. The tool enhances diagnostic accuracy through feature map analysis and optimized CNN training. Future development aims to extend its application to other cancer types, leveraging its dynamic and user-friendly interface for broader use in diagnostics. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/13-897/v1", "name": "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital..." } } ] } Home Browse CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Zammataro L. CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.12688/f1000research.154455.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 CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] Luca Zammataro https://orcid.org/0000-0002-4348-6341 Luca Zammataro https://orcid.org/0000-0002-4348-6341 PUBLISHED 06 Aug 2024 Author details Author details Lunan Foldomics LLC, Houston, TX, 77057, USA Luca Zammataro Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS This article is included in the Artificial Intelligence and Machine Learning gateway. Abstract Background Medical imaging has seen significant advancements through machine learning, particularly convolutional neural networks (CNNs). These technologies have transformed the analysis of pathological images, enhancing the accuracy of diagnosing and classifying cellular anomalies. Digital pathology methodologies, including image analysis, have improved cervical cancer diagnostics. However, existing commercial platforms are often costly and restrictive, limiting customization and scalability. Methods CINNAMON-GUI is an open-source digital pathology tool based on CNNs for classifying Pap smear images. Transitioning to a Shiny app in Python, it offers enhanced user interface and interactivity. The application supports dynamic web interactions, advanced features for image analysis, and state-of-the-art CNN models tailored for digital pathology. Key features include intuitive UI components, real-time image and plot generation, memory-efficient data handling, and robust training capabilities with customizable CNN architectures. The tool also integrates with Labelme for defining regions of interest and allows testing on external biospecimens. Results Model A (seed 42, 100 epochs) and Model B (same architecture with adjusted augmentation parameters) were compared. Model A stabilized with training accuracy around 0.88 and validation accuracy around 0.913. Model B showed improved performance with training accuracy around 0.91 and validation accuracy around 0.95. Feature mapping highlighted critical morphological aspects, improving classification accuracy. Model B reduced misclassification errors significantly compared to Model A. Conclusions CINNAMON-GUI demonstrates the potential of an open-source platform in digital pathology, providing transparency and collaborative opportunities. The tool enhances diagnostic accuracy through feature map analysis and optimized CNN training. Future development aims to extend its application to other cancer types, leveraging its dynamic and user-friendly interface for broader use in diagnostics. READ ALL READ LESS Keywords python, shiny, tensorflow, CNN, image-processing, digital-pathology, cervical-cancer, pap-smear Corresponding Author(s) Luca Zammataro ( [email protected] ) Close Corresponding author: Luca Zammataro Competing interests: No competing interests were disclosed. Grant information: The author(s) declared that no grants were involved in supporting this work. Copyright: © 2024 Zammataro L. 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: Zammataro L. CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.12688/f1000research.154455.1 ) First published: 06 Aug 2024, 13 :897 ( https://doi.org/10.12688/f1000research.154455.1 ) Latest published: 06 Aug 2024, 13 :897 ( https://doi.org/10.12688/f1000research.154455.1 ) Introduction Cervical cancer is a significant cause of death for women worldwide. In 2020, there were approximately 604,000 new cases and 342,000 deaths. 1 This type of cancer is closely linked to persistent infection by certain types of human papillomavirus (HPV), particularly HPV-16 and HPV-18, which account for about 70% of cervical cancer cases. 2 , 3 The Pap test, also known as the Papanicolaou test, is a widely used screening test for the prevention and early detection of cervical cancer. It involves examining cells collected from the cervix’s surface to identify any abnormal cellular changes indicative of potential cancer or precancerous lesions. 4 However, interpreting Pap test results can be subjective and reliant on the operator’s expertise. Additionally, the test’s accuracy can be affected by various factors, including sample quality and dyskeratotic cells, which can be challenging to interpret. 5 The field of medical imaging has witnessed significant advancements due to the integration of machine learning techniques, particularly convolutional neural networks (CNNs). 6 These technologies have transformed how pathological images are analyzed, enhancing accuracy in diagnosing and classifying cellular anomalies. Digital pathology methodologies based on image analysis have been developed to enhance the accuracy and effectiveness of cervical cancer diagnosis. 7 , 8 Existing commercial platforms, like Hologic’s ThinPrep. Imaging System, BD’s FocalPoint GS Imaging System or Roche’s CINtec PLUS Cytology, integrate machine learning techniques to automate and refine the analysis of Pap smear tests, aiming to increase the speed and reliability of diagnostics. However, these technologies often come embedded within proprietary systems that are costly and restrictive in terms of customization and scalability. In this paper, we present Cinnamon-GUI (Convolutional Neural Network and Multimodal Learning with a Graphic User Interface), an open-source tool that allows users to configure sophisticated CNN architectures for classifying digital biomedical images. The tool is particularly designed for the cervical Pap smear dataset Sipakmed, a significant resource in cervical cancer research due to its comprehensive collection of high-quality images and associated clinical data. 9 Cinnamon-GUI is a unique advancement in digital pathology, offering an open-source solution based on CNN for classifying Pap smear images. Its standout features include transparency, collaboration, and the ability for users to explore, modify, and tailor the code to their specific needs. Cinnamon-GUI is open-source approach not only invites the scientific community to actively contribute to its development but also fosters a sense of belonging and shared progress, enhancing its efficiency and applicability through feedback and updates. Methods Implementation Cinnamon-GUI has transitioned to a Shiny app in Python, bringing several advantages, notably an enhanced user interface and improved interactivity. The Shiny framework 10 allows for dynamic and responsive web applications, making it easier for users to interact with machine learning models and visualize results in real-time. The application stands out for its advanced features that optimize the analysis of digital images, making it a powerful tool for the scientific community. One of its main features is using state-of-the-art TensorFlow 11 convolutional neural networks (CNN) models which can recognize and classify complex patterns in pathological images, significantly improving diagnostic accuracy. Our implementation also makes extensive use of Python libraries such as Numpy, 12 Scipy, 13 Pandas, 14 and Scikit-learn. 15 The general structure of the CNN in Cinnamon-GUI, characterized by convolutional layers, four pooling layers, one flatten layer and two dense layers, can be illustrated by Figure 1 . Figure 1. Overview of the dual workflow capabilities in Cinnamon-GUI. ** This schematic illustrates two primary operational pathways within the platform: 1) Data Processing and Model Training Workflow, where users can load pickle files from datasets to train models and generate reports post-testing, and 2) Biospecimen Annotation and Analysis Workflow, where users can load annotated Pap smear images, with annotations applied using the integrated Labelme software. This workflow supports loading the corresponding JSON annotation files and converting them and the images into a pickle dataset format for subsequent cell type prediction and classification. Additionally, this pathway facilitates the creation and expansion of datasets, enhancing the utility of Cinnamon-GUI for diverse research applications. The user interface of Cinnamon-GUI is designed to be intuitive and dynamic, facilitating workflow even for professionals without advanced technical expertise. Dynamic UI components allow users to interact easily with machine learning models and visualize results in real time. Another distinctive feature of Cinnamon-GUI is the dynamic generation and display of images and plots. Using base64 encoding, the application efficiently manages memory usage, ensuring high performance even when analyzing large datasets. Upon startup, Cinnamon-GUI initializes a log file (log.txt) to record all activities and messages during the session. This logging system is integrated with a real-time notification system that informs users about the status and progress of various operations, such as model training, data augmentation, and image classification. This feature enhances transparency and traceability of the analysis process, keeping users informed about the ongoing tasks. The application displays real-time progress during training, including a progress bar and status messages. The training process includes advanced features such as callbacks for early stopping and learning rate reduction based on validation loss. Early stopping prevents overfitting by stopping the training process when the model’s performance on a separate validation dataset stops improving. Learning rate reduction adjusts the learning rate during training to help the model converge to a better solution. These features significantly improve training efficiency. The trained model and log file are automatically saved to disk upon completion. The Training Tab includes robust data augmentation capabilities that enhance the diversity of the training dataset and improve model generalization. Users can customize various augmentation parameters, including: • Rotation Range: Randomly rotates images within a specified degree range. • Width and Height Shift Range: Randomly shifts images horizontally and vertically. • Shear Range: Applies shearing transformations. • Zoom Range: Randomly zooms into images. • Horizontal and Vertical Flip: Flips images horizontally and vertically. These augmentation techniques are applied in real-time during training, generating new variations of the images in each epoch. 16 Finally, Cinnamon-GUI offers advanced tools for image display and feature mapping. Users can select an image index to display the image and its predicted class. Additionally, feature mapping plots can be generated to visualize the activations of different layers in the model. The application generates tests on the testing dataset to evaluate model performance, comparing predicted labels with actual labels and providing detailed reports. The Cinnamon-GUI’s feature mapping function, which involves mapping the various layers of the CNN through our software, makes identifying these pathological traits much more accessible. As example of implementation, we use the Sipakmed Dataset (see Data and Software Availability). Although almost all the models we experimented with had the architecture, we conducted several tests to understand which parameters were involved in improving classification performance. These performances were evaluated based on the number of failures obtained through the evaluation of the testing datasets, trying to identify which cells the various models failed to classify correctly. We will discuss two comparative models, which we will call A (2024.07.13-01.30.20-42) and B (2024.07.01-00.58.38-42). Models A and B are identical in terms of their architecture, and optimization algorithms: both the Models use Adam , which combines the benefits of two other extensions of stochastic gradient descent, Adaptive Gradient Algorithm ( AdaGrad ) and Root Mean Square Propagation. However, the two models present some differences in the parameter settings for image augmentation. Both models were configured with a seed of 42, thus ensuring identical training sets for training and the reproducibility of tests using the same testing dataset. The latter consists of 809 images, equally distributed among the five categorical classes of Sipakmed. Model A : • Parameters: seed 42, 100 epochs, test size 0.2, batch size 32, rotation_range=20, width_shift_range=0.5, height_shift_range=0.4, shear_range=0.4, zoom_range=0.5. • Performance: • Training accuracy: stabilizes around 0.88. • Validation accuracy: stabilizes around 0.913 with some fluctuations. • Training loss: stabilizes around 2.047. • Validation loss: stabilizes around 2.155. • Misclassification: 28 dyskeratotic cells misclassified as Koilocyte cells ( Figure 3 ). Model B : • Parameters: seed 42, 100 epochs, test size 0.2, batch size 32, rotation range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2. • Performance: • Training accuracy: stabilizes around 0.91. • Validation accuracy: stabilizes around 0.95 with more variability compared to training accuracy. • Training loss: stabilizes at 1.544. • Validation loss: stabilizes around 1.381. • Misclassification: Reduced total errors to 38, with dyskeratotic cell misclassifications down to 3 ( Figure 4 ). The CNN architecture chosen for classifying the Sipakmed dataset is detailed in Table 1 . Table 1. The Cinnamon-GUI's architecture. Layer (type) Output shape Param # conv2d_1 (Conv2D) (None, 254, 254, 32) 896 batch_normalization_1 (BatchNormalization) (None, 254, 254, 32) 128 max_pooling2d_1 (MaxPooling2D) (None, 127, 127, 32) 0 conv2d_2 (Conv2D) (None, 125, 125, 64) 18496 batch_normalization_2 (BatchNormalization) (None, 125, 125, 64) 256 max_pooling2d_2 (MaxPooling2D) (None, 62, 62, 64) 0 conv2d_3 (Conv2D) (None, 60, 60, 128) 73856 batch_normalization_3 (BatchNormalization) (None, 60, 60, 128) 512 max_pooling2d_3 (MaxPooling2D) (None, 30, 30, 128) 0 conv2d_4 (Conv2D) (None, 28, 28, 256) 295168 batch_normalization_4 (BatchNormalization) (None, 28, 28, 256) 1024 max_pooling2d_4 (MaxPooling2D) (None, 14, 14, 256) 0 flatten_1 (Flatten) (None, 50176) 0 dense_1 (Dense) (None, 256) 12845312 dropout_1 (Dropout) (None, 256) 0 dense_2 (Dense) (None, 5) 1285 Operation 1. Clone the Cinnamon-GUI GitHub repository: git clone https://github.com/lunanfoldomics/Cinnamon-GUI 2. Create a virtual environment, and install required dependencies: follow the installation instructions from the GitHub repository 3. Navigate to the project directory: cd Cinnamon-GUI/dashboard-tips 4. Start the application: python cinnamon-gui.py 5. Access the application in your browser: Open your browser and navigate to ‘http://127.0.0.1:8000/’ 6. Workflows: The Cinnamon-GUI platform offers two primary operational workflows. These workflows are designed to significantly enhance research efficiency and analytical accuracy in digital pathology studies, making the platform a valuable tool for researchers ( Figure 1 ). 1. Data Processing and Model Training Workflow: With its intuitive and user-friendly interface, this pathway empowers users to engage with machine learning. Users can easily import datasets stored as pickle files, a format that preserves the data structure, ensuring fidelity during loading. The workflow is designed around TensorFlow-based models, enabling users to train these models with their datasets or upload and use a pre-trained model. Once the dataset is loaded into memory, it is normalized, and reshaped for processing. Additionally, a class definition file (TSV format) can be uploaded to define the classes used in the dataset, facilitating labeling and classification during model training and evaluation. Users can configure and implement various customizable Convolutional Neural Network (CNN) architectures tailored to their specific needs through the Training Tab. The interface allows customization of multiple hyperparameters, including the number of convolutional layers, filters, kernel sizes, activation functions, and pooling layers. Users can add fully connected layers with customizable activation functions, dropout rates, and regularization techniques such as L1 and L2 ( Figure 2 ). Users can set various parameters for training the model, including number of epochs, batch size, learning rate, and data augmentation settings. The workflow includes internal functions for image normalization and a suite of functions for randomly splitting the dataset into training and testing sets for CNN learning. Users can select from a wide range of seeds for random splitting via the scikit-learn package using a dedicated sliding bar in the GUI’s Training Tab. Users can also choose from a variety of optimization algorithms to train their models. Optionally, users can upload a pre-trained model, the architecture of which is summarized and displayed in a tabular format. This feature provides detailed information about each layer of the loaded model and its parameters, helping users better understand the structure of the model. A significant feature of this pathway is its reporting capability; after training models and conducting tests, users can generate comprehensive reports. These reports visualize performance metrics such as accuracy, loss over epochs, and more detailed statistical analyses, providing crucial insights into model behavior and efficacy. 2. Biospecimen Annotation and Analysis Workflow: Tailored for researchers working with biomedical imagery, this workflow is crucial in dataset creation and expansion. It facilitates the loading and processing annotated Pap smear images in BMP format. Annotations are initially applied using Labelme, 16 a versatile tool that allows detailed marking of cells, essential for accurate specimen identification. The platform supports importing JSON files containing these annotations, which are then converted along with the images into pickle format. This data format standardization simplifies the integration of images into the machine learning pipeline, which is used for cell-type prediction and classification. When operating in Biospecimen Annotation and Analysis, Cinnamon-GUI can become a tool for diagnosing the possible presence of cancerous cells in the evaluated specimen. Furthermore, this workflow is instrumental in enabling researchers to build robust, annotated image datasets that enhance the utility of Cinnamon-GUI across various research applications. Figure 2. User interface for configuring model training parameters in Cinnamon-GUI. This interface allows users to adjust settings crucial for deep learning model training, such as seed value for reproducibility, data augmentation techniques (rotation, width and height shifts, shear, zoom, and horizontal flip), and other preprocessing options. Advanced settings include selecting optimizers, loss functions, and learning rate adjustments. Below, convolutional layer parameters such as filter count, kernel size, activation functions, and associated max-pooling layers are customizable along with dense layer configurations, regularization options (L1 and L2), and dropout rates, enabling precise control over the model's architecture and training dynamics. Results The training accuracy for Model A increases rapidly in the initial epochs. Then, it stabilizes around 0.88, suggesting that the model learns from the training data but might not capture all the complexities. While slightly higher, the validation accuracy shows variability, indicating some instability. The training and validation losses for Model A indicate that the model is learning effectively but has room for improvement in generalization ( Figure 3 ). Figure 3. Comprehensive analysis of the machine learning Model A performance for classifying different types of cells in Pap smear tests using Cinnamon-GUI. A: Training dynamics over 100 epochs show training and validation accuracy and loss curves. The model achieves a training accuracy of 88.8% and a validation accuracy of 91.3%, with training and validation losses converging by the 100th epoch. B: Comparison of predicted versus actual counts of different cell types. The bar chart and accompanying table detail the count discrepancies across classes like Dyskeratocytes, Koilocytes, Metaplastic Cells, Parabasal Cells, and Superficial-Intermediate Cells, illustrating the model's predictive capabilities and areas for improvement. C: Scatter plot matrices represent the classification discrepancies for each cell type. Each plot filters data based on the predicted and actual class, highlighting specific images (by index) where discrepancies occur. This aids in visual error analysis and further model tuning. A deeper analysis of model A’s feature maps and neuron activations shows that dyskeratosis and koilocytosis can have overlapping features, such as abnormal nuclear shapes and sizes. Model A might need to emphasize features like circular patterns and textures in both cell types. The highlighted regions in the feature maps show strong activations around these patterns (data not shown). There might be insufficient training examples for dyskeratoses in the Sipakmed dataset, causing the model not to learn the distinctive features adequately. For example, suppose data augmentation techniques introduce more prevalent patterns in koilocytosis. In that case, the model might learn to associate these patterns more strongly with koilocytosis, even when they appear in dyskeratoses. To improve CNN accuracy, we implemented the more balanced Model B, which demonstrates significant improvements. Reduced image augmentation parameters lead to better performance. The training and validation accuracies for Model B are higher than for Model A, and the losses are lower, indicating better generalization. The reduction in total errors and dyskeratotic cell misclassifications highlights the impact of optimized training data and model parameters ( Figure 4 ). Figure 4. Detailed performance evaluation of the Model B for cell classification in Pap smear tests using Cinnamon-GUI. A: Training and validation performance over 100 epochs. The curves illustrate the model's training accuracy (top) stabilizing at 89.5% and validation accuracy (top) reaching 95.3%, with corresponding loss metrics (bottom) indicating good model convergence. B: Bar chart comparing the predicted versus actual counts for various cell types, including Dyskeratocytes, Koilocytes, Metaplastic Cells, Parabasal Cells, and Superficial-Intermediate Cells. The data demonstrate close alignment between predicted and actual counts, with a detailed breakdown in the accompanying table. Notably, the number of Dyskeratotic cells misclassified as Koilocytes has significantly decreased from 28 to 3, showcasing the model's improved specificity. C: Scatter plot matrices showing detailed discrepancies between predicted and actual classifications for each cell type. Each plot categorizes discrepancies by image index, allowing for targeted analysis of specific instances where the model's predictions deviate from actual classifications, facilitating focused diagnostic and model refinement efforts. Using feature maps, we aim to discern the morphological aspects the CNN identified and utilized during training. Understanding these aspects allows us to isolate critical patterns, which could be fundamental for accurate classification criteria in pathology. We will now present some observations derived from the feature mapping analyses. However, for editorial reasons, we will compare a superficial-intermediate cell, a koilocyte, and a dyskeratocyte from the Sipakmed dataset, classified using Model B. The feature maps can indicate that the CNN successfully captured various subcellular details, such as the nucleus’s structure and the cytoplasm’s distribution. The cell in Figure 5 has been classified as a superficial intermediate, a type of epithelial cell frequently present in Pap smear samples. The cell has a relatively small central nucleus, while the cytoplasm appears abundant and evenly distributed. The feature map analysis of Layer 1 (Batch Normalization) plays a crucial role in distinguishing the cell’s contours, particularly the edges. This underscores the early layers’ ability to capture the essential characteristics of the cell’s shape and border. Layers 11 (Max Pooling) further emphasizes critical regions of the cytoplasm and nucleus, with reduced noise and better definition of subcellular features. The convolutions in this layer capture finer details, such as texture variations that could be related to chromatin structure or the presence of vacuoles. Figure 5. Analysis of a superficial intermediate epithelial cell from a Pap smear sample using Cinnamon-GUI. Top left: Original microscopy image of the cell classified as superficial intermediate due to its small central nucleus and abundant cytoplasm. Top right: Feature maps at various convolutional layers highlighting critical regions and texture variations. Bottom panels: Activation patterns in the dense layers demonstrate how neural network processing layers contribute to the final classification decision. The early layer visualizations emphasize the cell's contours and internal textures, while the deeper layers distill these features into a final diagnostic insight. The activations in the dense layers (flatten, Dense, Dropout) provide insight into the network’s decision-making process. They show how the network has condensed the information collected in the previous layers to make the final classification. High activations in certain regions indicate that specific features are essential for classifying as a superficial intermediate cell. ( Figure 5 ). The feature mapping can distinguish dyskeratocytes from koilocytes, which are prodromal cells of a transformation into dyskeratocytes. Koilocytes (from the Greek, meaning “hollow vessel”) are squamous cells infected productively with episomal human papillomavirus (HPV) that exhibit morphological alterations indicative of HPV infection. Koilocytosis is pathognomonic, though not required, for diagnosing low-grade squamous intraepithelial lesions (LSIL). The main morphological alterations observed in koilocytosis include Karyolysis (chromatin within the nucleus appears fragmented and dispersed, giving the nucleus a translucent or granular appearance), demonstrating that the E5 and E6 proteins from HPV cooperate to induce koilocyte formation, hinting at nuclear alterations similar to Karyolysis. 17 Other alterations include nuclear hypertrophy (enlarged nucleus with increased chromatin density), nuclear enlargement, and hyperchromasia. 18 Koilocytes are indeed characterized by an increased nuclear/cytoplasmic ratio (the nucleus occupies more of the cellular space than the cytoplasm). The cell in Figure 6 represents a koilocyte correctly identified by Cinnamon-GUI; the nucleus is characteristically irregular and shows a clear central area with a denser peripheral zone known as the perinuclear halo. 17 , 18 This can be because of the HPV, which induces irregular peripheral collapse of keratins as an effect of the HPV’s E4 gene induction, leaving a clear space around the nucleus. 19 Figure 6. Detailed analysis of a koilocyte identified using Cinnamon-GUI. Top left: Original microscopy image showcasing the characteristic irregular nucleus with a clear central area and a denser perinuclear halo indicative of HPV effect. Top right: Close-up of the perinuclear halo emphasized in feature maps. Middle panels: Visualizations from Convolutional Layers 3 and 9 highlight the complex nuclear and cytoplasmic features, including the perinuclear halo and cytoplasmic vacuolations. Bottom panels: Neuronal activation patterns in the dense layers (flatten, dense layers 2 and 3). The feature maps in Layer 3 (Convolutional) show complexity, with a detailed representation of nuclear and cytoplasmic features. The perinuclear halo and nuclear irregularities are evident. Layer 9 (Convolutional) captures critical features, such as the perinuclear halo and cytoplasmic vacuolations. The CNN neuronal activations are highly specific to these patterns. As for the Superficial intermediate mentioned above, the final dense layers show a distribution of activations reflecting the model’s learning ( Figure 6 ). Finally, the image in Figure 7 shows a correctly identified dyskeratotic cell. The cell’s nucleus appears significantly altered with an irregular shape, and it is dark and compact. The cytoplasm is dense and irregular, often with evident inclusions. Dyskeratotic cells tend to show more intense and granular cytoplasm than normal cells. Figure 7. Analysis of a dyskeratotic cell using convolutional neural network techniques in Cinnamon-GUI. Top left: Microscopy image of the dyskeratotic cell displaying its characteristic irregular, dark, and compact nucleus alongside a dense and irregular cytoplasm with visible inclusions. Top right and middle: Feature maps from the convolutional and batch normalization layers highlight the cell's nuclear irregularities and cytoplasmic density variations, emphasizing the borders and internal textures. Bottom: Activation patterns from the dense layers demonstrate the CNN's ability to discern and focus on critical morphological features that help distinguish dyskeratotic cells from other cell types, showcasing intricate nuclear and cytoplasmic details crucial for accurate classification. The first layers (Batch Normalization and Max Pooling) show the detection of the cell’s basic contours. The patterns highlighted here focus on the cell’s borders and intensity differences in the cytoplasm. The intermediate layers (Convolutional and Batch Normalization) focus more on nuclear features. The model highlights areas with intensity variations in the nucleus, hyperchromatic and irregularly shaped, with varying chromatin density, indicative of potential precancerous changes. The feature maps in the more advanced layers become more complex, showing intricate patterns that combine nuclear and cytoplasmic contours. These layers allow the model to distinguish dyskeratotic cells from other cell types ( Figure 7 ). Conclusions/Discussion Although various machine learning-based solutions for digital pathology exist, the effort to build an utterly open-source platform for physicians and researchers can represent an additional diagnostic tool for the progress of digital pathology. Often, current software solutions compete, striving to propose increasingly accurate solutions for early cancer diagnosis. However, most of the time, it is necessary to deal with the limitations of available datasets. These limitations pose challenges even for the most sophisticated machine learning algorithms, not to mention the risk of overfitting on relatively small datasets, such as Sipakmed. Conversely, Cinnamon-GUI proves to be an extremely transparent tool that aims to identify the real problems of the used datasets through the analysis of feature maps, alerting researchers about the quality of predictions. Through our experience, we have, for example, understood that more issues related to inaccurate classification than the chosen CNN architecture could depend on how we attempt to extend the original dataset through image augmentation. We have realized that this is an essential part of modern machine learning and that these techniques must be used cautiously. The analysis of the feature maps and neuron activations suggests that if not accurately trained, the CNN model can confuse specific patterns present in both dyskeratoses and superficial-intermediate cells. To improve classification accuracy, it is crucial to strengthen training by playing with image augmentation settings and refining the model architecture to capture distinctive features better. We have demonstrated how image augmentation can benefit a CNN model’s performance improvement when applied in “small doses” and that it may not be necessary to hyper-transform the original dataset. Instead, reducing parameters such as width and height shift can yield better results. Indeed, using Model B, we decreased the number of errors significantly, demonstrating the critical impact of fine-tuning augmentation settings on model performance and accuracy. With the help of feature mapping, we understand the role of the early layers of the network, which are particularly effective in reinforcing contours and identifying the general shape of the cell. The subsequent and dense layers can capture fine details and texture differences crucial for accurate classification. The activation peaks indicate the most significant features the model used to make the classification. Cinnamon-GUI, with its fully interactive interface, controls, and extreme ease of use, along with its accurate plots, represents a user-friendly tool in the field of Digital Pathology. It allows even non-experts to manipulate complex CNN architectures without any programming experience, empowering them to contribute to the field. Although the CNN models implemented within the code are limited to four convolutional layers and four pooling layers, the number of configurations that can be explored with our tool is vast, giving users confidence in their ability to explore and experiment. Another powerful feature of Cinnamon-GUI is the ability to import external specimens and build new datasets using a manual annotation system based on the LabelMe software. Cinnamon-GUI can extend its training capabilities using external datasets provided by the user or be limited to making the best possible predictions and classifications when used as a query system. Another necessary functionality is multimodal learning, which integrates various data types to enhance analysis accuracy. Although this capability is intended only for research purposes, it represents a significant step towards a more comprehensive understanding of pathological conditions through analyzing heterogeneous data. We believe that the use of Cinnamon-GUI is not limited to the analysis of Pap smears alone. We are working towards making Cinnamon-GUI a powerful platform for the early diagnosis of many other types of cancers in the future, instilling hope and optimism in the potential impact of our work. Data and software availability • Source code available from: https://github.com/lunanfoldomics/Cinnamon-GUI • Archived software: https://doi.org/10.5281/zenodo.13109219 • License: OSI approved open license software is under GNU Affero General Public License v3.0. SPDX-License-Identifier: AGPL-3.0-only The Sipakmed database, 9 which consists of 4049 color images of cells from cervical pap smears, represents a vital example of this tool. Images have been classified into five cellular subclasses: Superficial-Intermediate Cells, Parabasal Cells, Metaplastic Cells, Koilocytes, and Dyskeratocytes. For our work, the database was restructured into a numpy array and subsequently inserted into a Pandas DataFrame, with each row corresponding to a sequence of 65536 pixels, each represented by an RGB triplet for color and associated with an output label. Once loaded into a NumPy vector, the images are reshaped into 256×256 matrices. Once the Sipakmed dataset is downloaded, it needs to be unzipped into a directory, which we might call “sipakmed.” The main directory structure of SipakMed is not particularly complex, but it is essential to understand where the images are located within the five cellular categories to correctly construct the pickle file. Therefore, a script must be generated to search for images within the sipakmed directory and generate the pickle file. A pickle version of Sipakmed is downloadable from here: https://www.kaggle.com/datasets/lucazammataro/sipakmed-dataset-for-cinnamon-gui The pre-trained Model B described in the paper is downloadable from here: https://www.kaggle.com/datasets/lucazammataro/cinnamon-gui-model-b-sipakmed/data You can create a Pickle Training Dataset from Sipakmed, downloading it from https://www.cs.uoi.gr/~marina/sipakmed.html Acknowledgement The author declares that Lunan Foldomics LLC, may potentially benefit from the research findings reported in this article. References 1. Sung H, Ferlay J, Siegel RL, et al. : Global Cancer Statistics 2020: GLOBOCAN Estimates of Incidence and Mortality Worldwide for 36 Cancers in 185 Countries. CA Cancer J. Clin. 2021 May; 71 (3): 209–249. PubMed Abstract | Publisher Full Text 2. Zammataro L, Lopez S, Bellone S, et al. : Whole-exome sequencing of cervical carcinomas identifies activating ERBB2 and PIK3CA mutations as targets for combination therapy. Proc. Natl. Acad. Sci. USA. 2019 Nov; 116 (45): 22730–22736. PubMed Abstract | Publisher Full Text | Free Full Text 3. Walboomers JM, Jacobs MV, Manos MM, et al. : Human papillomavirus is a necessary cause of invasive cervical cancer worldwide. J. Pathol. 1999 Sep; 189 (1): 12–19. <a target="xrefwindow" id="d409122e901" href="https://doi.org/10.1002/(SICI)1096-9896(199909)189:1 Publisher Full Text 4. Papanicolaou GN, Traut HF: The Diagnostic Value of Vaginal Smears in Carcinoma of the Uterus**This study has been aided by the Commonwealth Fund. Presented before the New York Obstetrical Society, March 11, 1941. Am. J. Obstet. Gynecol. 1941; 42 (2): 193–206. Publisher Full Text Reference Source 5. Walavalkar V, Tommet D, Fischer AH, et al. : Evidence for increasing usage of low-grade squamous intraepithelial lesion, cannot exclude high-grade squamous intraepithelial lesion (LSIL-H) Pap test interpretations. Cancer Cytopathol. 2014 Feb; 122 (2): 123–127. PubMed Abstract | Publisher Full Text 6. Zammataro L, Rovetta S, Greco D: MEDIGUI-ConvNet–Interactive Architecture Combining the Power of Convolutional Neural Networks and Medical Imaging. INI-DH 2024: Workshop on Innovative Interfaces in Digital Healthcare, in conjunction with International Conference on Advanced Visual Interfaces. 2024; pp. 3–7. 7. Alsubai S, Alqahtani A, Sha M, et al. : Privacy Preserved Cervical Cancer Detection Using Convolutional Neural Networks Applied to Pap Smear Images. Comput. Math. Methods Med. 2023; 2023 : 9676206–9676208. PubMed Abstract | Publisher Full Text | Free Full Text 8. Rahaman MM, Li C, Yao Y, et al. : DeepCervix: A deep learning-based framework for the classification of cervical cells using hybrid deep feature fusion techniques. Comput. Biol. Med. 2021; 136 : 104649. PubMed Abstract | Publisher Full Text Reference Source 9. Plissiti M, Dimitrakopoulos P, Sfikas G, et al. : Sipakmed: A New Dataset for Feature and Image Based Classification of Normal and Pathological Cervical Cells in Pap Smear Images.2018; pp. 3144–3148. 10. Development team: Shiny for Python.2024. Reference Source 11. Abadi M, Agarwal A, Barham P, et al. : TensorFlow: Large-Scale Machine Learning on Heterogeneous Systems.2015. Reference Source 12. Harris CR, Millman KJ, van der Walt SJ , et al. : Array programming with NumPy. Nature. 2020 Sep; 585 (7825): 357–362. PubMed Abstract | Publisher Full Text | Free Full Text 13. Virtanen P, Gommers R, Oliphant TE, et al. : SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python. Nat. Methods. 2020; 17 : 261–272. PubMed Abstract | Publisher Full Text | Free Full Text 14. McKinney W: Data structures for statistical computing in python. Proceedings of the 9th Python in Science Conference. 2010; pp. 51–56. others. 15. Pedregosa F, Varoquaux G, Gramfort A, et al. : Scikit-learn: Machine learning in Python. J. Mach. Learn. Res. 2011; 12 (Oct): 2825–2830. 16. Wada K: Labelme: Image Polygonal Annotation with Python. Reference Source 17. Krawczyk E, Suprynowicz F, Liu X, et al. : Koilocytosis: a cooperative interaction between the human papillomavirus E5 and E6 oncoproteins. Am. J. Pathol. 2008; 173 (3): 682–688. PubMed Abstract | Publisher Full Text | Free Full Text 18. Lawson J, Glenn W, Heng B, et al. : Koilocytes indicate a role for human papilloma virus in breast cancer. Br. J. Cancer. 2009; 101 : 1351–1356. PubMed Abstract | Publisher Full Text | Free Full Text 19. Lhee MJ, Cha YJ, Bae JM, et al. : Diagnostic Algorithm to Reflect Regressive Changes of Human Papilloma Virus in Tissue Biopsies. Yonsei Med. J. 2014; 55 : 331–338. PubMed Abstract | Publisher Full Text | Free Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 06 Aug 2024 ADD YOUR COMMENT Comment Author details Author details Lunan Foldomics LLC, Houston, TX, 77057, USA Luca Zammataro Roles: Conceptualization, Data Curation, Formal Analysis, Investigation, Methodology, Project Administration, Resources, Software, Supervision, Validation, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information The author(s) declared that no grants were involved in supporting this work. Article Versions (1) version 1 Published: 06 Aug 2024, 13:897 https://doi.org/10.12688/f1000research.154455.1 Copyright © 2024 Zammataro L. 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 Zammataro L. CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.12688/f1000research.154455.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 06 Aug 2024 Views 0 Cite How to cite this report: Casalino G. Reviewer Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r349037 ) The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-349037 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 02 Jan 2025 Gabriella Casalino , University of Bari, Bari, Italy Approved VIEWS 0 https://doi.org/10.5256/f1000research.169489.r349037 The article "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification" by Luca Zammataro presents an innovative open-source tool to improve the classification and diagnosis of Pap smear images. CINNAMON-GUI uses convolutional neural networks (CNNs) to address challenges ... Continue reading READ ALL The article "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification" by Luca Zammataro presents an innovative open-source tool to improve the classification and diagnosis of Pap smear images. CINNAMON-GUI uses convolutional neural networks (CNNs) to address challenges in digital pathology, particularly in cervical cancer diagnostics. It combines sophisticated machine learning techniques with an interactive, user-friendly interface to make complex image processing accessible even to non-experts. One of the key strengths of the work is its open-source nature, fostering collaboration and customization within the medical and scientific communities. CINNAMON-GUI offers real-time interactivity, allowing users to visualize and understand classification results and analyze CNN layers to gain deeper insights into image features. The application is designed to support non-expert users while addressing a critical medical challenge, enhancing trustworthiness through transparency and adaptability. The capability to annotate, analyze, and integrate various datasets makes it a highly versatile tool. Including dynamic UI components and integrating with external software like Labelme further enriches its usability. Although the interface assumes some familiarity with the structure of deep neural networks, a potential limitation is its reliance on users' technical knowledge for customization. An additional layer of abstraction that provides default settings for absolute beginners could enhance accessibility. This would allow users with no technical expertise to benefit from the tool while gradually understanding its capabilities. Overall, this work is valuable to digital pathology and medical image analysis. Its potential to support the diagnosis of other pathologies in the future, coupled with the prospect of natural language explanations for identified regions, holds promise for broader adoption and impact. By prioritizing transparency, collaboration, and ease of use, CINNAMON-GUI is well-positioned to drive medical diagnostics and research advancements. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: I work in computational intelligence, specializing in methods for intelligent analysis. My primary focus lies in the medical domain, where I have experience with a diverse range of medical data, including omics, acoustic features, vital parameters, video, and signal processing. I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Casalino G. Reviewer Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r349037 ) The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-349037 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: Grizzi F. Reviewer Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r312178 ) The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-312178 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 09 Oct 2024 Fabio Grizzi , Humanitas University, IRCCS Humanitas Research Hospital, Rozzano, Italy Approved VIEWS 0 https://doi.org/10.5256/f1000research.169489.r312178 Luca Zammataro's article marks a significant advancement in the adoption of appropriate tools for analyzing cytological and histopathological entities, which are often challenging to assess objectively through microscopy alone. The proposed tool, Cinnamon-GUI (CINNAMON-GUI), highlights the potential of an open-source ... Continue reading READ ALL Luca Zammataro's article marks a significant advancement in the adoption of appropriate tools for analyzing cytological and histopathological entities, which are often challenging to assess objectively through microscopy alone. The proposed tool, Cinnamon-GUI (CINNAMON-GUI), highlights the potential of an open-source platform in digital pathology, offering both transparency and collaborative opportunities. This tool improves diagnostic accuracy by utilizing feature map analysis and optimized CNN training. Future developments aim to expand its application to other cancer types, broadening its role in diagnostics through its dynamic and user-friendly interface. While Zammataro introduces the tool for classifying Pap smear images, its underlying principles can be applied to other clinical challenges. This manuscript is highly recommended for researchers focused on computer-aided image analysis systems in their work. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests: No competing interests were disclosed. Reviewer Expertise: My research focuses on tumor complexity and the interactions between tumor cells and both the innate and adaptive immune systems. This includes exploring non-linearity, chaos theory, fractals, and AI-based computer algorithms within the biological context. I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Grizzi F. Reviewer Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r312178 ) The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-312178 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 06 Aug 2024 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 06 Aug 24 read read Fabio Grizzi , IRCCS Humanitas Research Hospital, Rozzano, Italy Gabriella Casalino , University of Bari, Bari, Italy Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Casalino G. 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. 02 Jan 2025 | for Version 1 Gabriella Casalino , University of Bari, Bari, Italy 0 Views copyright © 2025 Casalino G. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions The article "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification" by Luca Zammataro presents an innovative open-source tool to improve the classification and diagnosis of Pap smear images. CINNAMON-GUI uses convolutional neural networks (CNNs) to address challenges in digital pathology, particularly in cervical cancer diagnostics. It combines sophisticated machine learning techniques with an interactive, user-friendly interface to make complex image processing accessible even to non-experts. One of the key strengths of the work is its open-source nature, fostering collaboration and customization within the medical and scientific communities. CINNAMON-GUI offers real-time interactivity, allowing users to visualize and understand classification results and analyze CNN layers to gain deeper insights into image features. The application is designed to support non-expert users while addressing a critical medical challenge, enhancing trustworthiness through transparency and adaptability. The capability to annotate, analyze, and integrate various datasets makes it a highly versatile tool. Including dynamic UI components and integrating with external software like Labelme further enriches its usability. Although the interface assumes some familiarity with the structure of deep neural networks, a potential limitation is its reliance on users' technical knowledge for customization. An additional layer of abstraction that provides default settings for absolute beginners could enhance accessibility. This would allow users with no technical expertise to benefit from the tool while gradually understanding its capabilities. Overall, this work is valuable to digital pathology and medical image analysis. Its potential to support the diagnosis of other pathologies in the future, coupled with the prospect of natural language explanations for identified regions, holds promise for broader adoption and impact. By prioritizing transparency, collaboration, and ease of use, CINNAMON-GUI is well-positioned to drive medical diagnostics and research advancements. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise I work in computational intelligence, specializing in methods for intelligent analysis. My primary focus lies in the medical domain, where I have experience with a diverse range of medical data, including omics, acoustic features, vital parameters, video, and signal processing. I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (0) Casalino G. Peer Review Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r349037) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-349037 keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2024 Grizzi 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. 09 Oct 2024 | for Version 1 Fabio Grizzi , Humanitas University, IRCCS Humanitas Research Hospital, Rozzano, Italy 0 Views copyright © 2024 Grizzi 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) 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 Luca Zammataro's article marks a significant advancement in the adoption of appropriate tools for analyzing cytological and histopathological entities, which are often challenging to assess objectively through microscopy alone. The proposed tool, Cinnamon-GUI (CINNAMON-GUI), highlights the potential of an open-source platform in digital pathology, offering both transparency and collaborative opportunities. This tool improves diagnostic accuracy by utilizing feature map analysis and optimized CNN training. Future developments aim to expand its application to other cancer types, broadening its role in diagnostics through its dynamic and user-friendly interface. While Zammataro introduces the tool for classifying Pap smear images, its underlying principles can be applied to other clinical challenges. This manuscript is highly recommended for researchers focused on computer-aided image analysis systems in their work. Is the rationale for developing the new software tool clearly explained? Yes Is the description of the software tool technically sound? Yes Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others? Yes Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool? Yes Are the conclusions about the tool and its performance adequately supported by the findings presented in the article? Yes Competing Interests No competing interests were disclosed. Reviewer Expertise My research focuses on tumor complexity and the interactions between tumor cells and both the innate and adaptive immune systems. This includes exploring non-linearity, chaos theory, fractals, and AI-based computer algorithms within the biological context. I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard. reply Respond to this report Responses (0) Grizzi F. Peer Review Report For: CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based Digital Pathology Image Classification [version 1; peer review: 2 approved] . F1000Research 2024, 13 :897 ( https://doi.org/10.5256/f1000research.169489.r312178) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/13-897/v1#referee-response-312178 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 = "CINNAMON-GUI: Revolutionizing Pap Smear Analysis...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/13-897/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/13-897/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/13-897/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Zammataro L'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/13-897/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/13-897", templates : { twitter : "CINNAMON-GUI: Revolutionizing Pap Smear Analysis with CNN-Based.... Zammataro L, published by " + "@F1000Research" + ", https://f1000research.com/articles/13-897/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/154455/169489") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "169489"); $(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 = { "318853": 0, "318854": 0, "318855": 0, "318860": 0, "318861": 0, "318862": 0, "318856": 0, "318857": 0, "318858": 0, "318859": 0, "315439": 0, "315444": 0, "315445": 0, "315446": 0, "325815": 0, "315447": 0, "315440": 0, "315441": 0, "315442": 0, "315443": 0, "325820": 0, "322876": 0, "325821": 0, "322877": 0, "325822": 0, "322878": 0, "325823": 0, "322879": 0, "325816": 0, "315448": 0, "325817": 0, "325818": 0, "325819": 0, "322875": 0, "322884": 0, "325824": 0, "322880": 0, "322881": 0, "322882": 0, "322883": 0, "330725": 0, "330724": 0, "345575": 0, "345574": 0, "330723": 0, "330722": 0, "349037": 8, "312180": 0, "312181": 0, "312182": 0, "312183": 0, "312178": 16, "312179": 0, "312184": 0, "312185": 0, "312186": 0, "312187": 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 = "a818cc62-ee47-4f0c-b6c6-9501c381d29b"; 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.