Feature optimized hybrid model for prediction of... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/14-78" }, "headline": "Feature optimized hybrid model for prediction of myocardial infarction", "datePublished": "2025-01-14T15:52:42", "dateModified": "2025-01-14T15:52:42", "author": [ { "@type": "Person", "name": "Sarita Mishra" }, { "@type": "Person", "name": "Manjusha Pandey" }, { "@type": "Person", "name": "Siddharth Swarup Routaray" } ], "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 Cardiovascular disease is rampant worldwide and has become the leading factor in increasing the global mortality rates. According to the World Heart Federation, death toll due to CVD has increased from 12.1 million in 1990 to around 19 million in 2019. Myocardial Infarction (MI) is a condition where the heart muscle dies due to reduced or inhibited flow of oxygenated blood. It has affected approximately 3 million people worldwide, with more than 1 million deaths in the United States annually. Such unusual proliferation in global death toll due to CVD can be reduced to a great extent by predicting the risk of CVD at an early stage. Method In this paper, several feature selection techniques including Variance-based, Mutual Information (MI), Maximum Relevance Minimum Redundancy (MRMR), Boruta, and Recursive Feature Elimination (RFE) algorithms are used feature optimization. For class prediction, the Logistic Regression (LR), Support Vector Machine (SVM), Decision Tree (DT), and Adaboost algorithms were implemented in their ordinary, One-vs-Rest (OVR) and One-vs-One (OVO) methods. Result The performance of Adaboost model has significantly improved by using feature selection techniques, that is, the accuracy of 74% (without any feature selection taking 5.3 seconds) is increased to 85% (with Boruta feature selection taking only 2.17 seconds training time) and 88% (with MRMR feature selection taking 1.6 seconds training time). Similarly, the DT-OVO model’s performance has improved from 84% (without any feature selection taking 1.48 seconds training time) to 86% (with Boruta feature selection taking 0.58 training time). For other models, the performance is maintained with reduced model training times. Conclusion This research paper prioritizes on feature selection in developing machine learning models for CVD prediction. This conclusion is justified by demonstrating the significant reduction in model training times for the 72 models generated while maintaining or even improving the model’s predictive performance. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/14-78", "name": "Feature optimized hybrid model for prediction of myocardial infarction" } } ] } Home Browse Feature optimized hybrid model for prediction of myocardial infarction ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Mishra S, Pandey M and Routaray SS. Feature optimized hybrid model for prediction of myocardial infarction [version 1; peer review: awaiting peer review] . F1000Research 2025, 14 :78 ( https://doi.org/10.12688/f1000research.160393.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 ▬ ✚ Research Article Feature optimized hybrid model for prediction of myocardial infarction [version 1; peer review: awaiting peer review] Sarita Mishra https://orcid.org/0000-0002-3415-2542 1 , Manjusha Pandey 1 , Siddharth Swarup Routaray 1 Sarita Mishra https://orcid.org/0000-0002-3415-2542 1 , Manjusha Pandey 1 , Siddharth Swarup Routaray 1 PUBLISHED 14 Jan 2025 Author details Author details 1 School of Computer Engineering, Kalinga Institute of Industrial Technology, Bhubaneswar, Odisha, India Sarita Mishra Roles: Conceptualization, Investigation, Methodology, Writing – Original Draft Preparation Manjusha Pandey Roles: Methodology, Supervision, Visualization, Writing – Review & Editing Siddharth Swarup Routaray Roles: Methodology, Supervision, Visualization, Writing – Review & Editing OPEN PEER REVIEW REVIEWER STATUS AWAITING PEER REVIEW Abstract Background Cardiovascular disease is rampant worldwide and has become the leading factor in increasing the global mortality rates. According to the World Heart Federation, death toll due to CVD has increased from 12.1 million in 1990 to around 19 million in 2019. Myocardial Infarction (MI) is a condition where the heart muscle dies due to reduced or inhibited flow of oxygenated blood. It has affected approximately 3 million people worldwide, with more than 1 million deaths in the United States annually. Such unusual proliferation in global death toll due to CVD can be reduced to a great extent by predicting the risk of CVD at an early stage. Method In this paper, several feature selection techniques including Variance-based, Mutual Information (MI), Maximum Relevance Minimum Redundancy (MRMR), Boruta, and Recursive Feature Elimination (RFE) algorithms are used feature optimization. For class prediction, the Logistic Regression (LR), Support Vector Machine (SVM), Decision Tree (DT), and Adaboost algorithms were implemented in their ordinary, One-vs-Rest (OVR) and One-vs-One (OVO) methods. Result The performance of Adaboost model has significantly improved by using feature selection techniques, that is, the accuracy of 74% (without any feature selection taking 5.3 seconds) is increased to 85% (with Boruta feature selection taking only 2.17 seconds training time) and 88% (with MRMR feature selection taking 1.6 seconds training time). Similarly, the DT-OVO model’s performance has improved from 84% (without any feature selection taking 1.48 seconds training time) to 86% (with Boruta feature selection taking 0.58 training time). For other models, the performance is maintained with reduced model training times. Conclusion This research paper prioritizes on feature selection in developing machine learning models for CVD prediction. This conclusion is justified by demonstrating the significant reduction in model training times for the 72 models generated while maintaining or even improving the model’s predictive performance. READ ALL READ LESS Keywords Cardiovascular Disease, Machine Learning, One-vs-One, One-vs-All, Feature Selection. Corresponding Author(s) Sarita Mishra ( [email protected] ) Close Corresponding author: Sarita Mishra Competing interests: No competing interests were disclosed. Grant information: This research work was funded by the Kalinga Institute of Industrial Technology, Deemed to be University. I confirm that the funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Mishra S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Mishra S, Pandey M and Routaray SS. Feature optimized hybrid model for prediction of myocardial infarction [version 1; peer review: awaiting peer review] . F1000Research 2025, 14 :78 ( https://doi.org/10.12688/f1000research.160393.1 ) First published: 14 Jan 2025, 14 :78 ( https://doi.org/10.12688/f1000research.160393.1 ) Latest published: 14 Jan 2025, 14 :78 ( https://doi.org/10.12688/f1000research.160393.1 ) 1. Introduction Cardiovascular disease (CVD) refers to any obstruction in the normal functioning of the heart. Myocardial Infarction (MI) is a type of heart disease caused by decreased or complete stoppage of blood flow to a portion of the myocardium. It is a condition in which the heart muscle dies because of reduced or inhibited flow of oxygenated blood caused by partial occlusion of the coronary artery. Factors such as diets rich in fat, alcohol consumption, sedentary lifestyle, lack of proper sleep, work stress and many more usually lead to such obstructions or blockages that inhibit the proper flow of blood resulting to a heart attack. Myocardial infarction may be “silent,” and go undetected, or could lead to a catastrophic event leading like sudden death. The primary cause of amplification of MI cases in the US is the prevalence of coronary artery disease among people. Based on the statistics provided by WHO, around 17.9 million annual deaths occur due to CVD globally. 1 In India, the increase in heart failure cases is mostly due to coronary heart disease, diabetes, hypertension, obesity, etc. 2 People who are suffering or are likely to suffer from cardiovascular disease show symptoms such a rise in blood pressure, increased glucose levels, overweight, etc. 3 However, today it has become possible to combat the increasing mortality rates due to MI, or CVD in general. Powerful and optimized machine learning models are able to predict the disease at an early stage and also recommend ways to cure it. 4 Most ML models developed categorize heart disease patients into two classes: healthy or affected, however models that classify patients into multiple classes based on level of impact of disease is somewhat limited. This research work focuses on multiclass classification of heart disease patients using a Myocardial Infarction dataset taken from the UCI repository. To diminish the burden of training on the model, the number of predictors were reduced using feature selection techniques like Variance-based, Mutual Information (MI) based, Maximum Relevance Minimum Redundancy (MRMR), Boruta, and Recursive Feature Elimination (RFE) based methods. These feature-reduced datasets were partitioned into training and testing data followed by training ML models like LR, SVM, DT, and Adaboost. These algorithms were executed in their traditional procedure, using One-vs-all (OVA) method, and using One-vs-one (OVO) method and all these models were analyzed with respect to the accuracy, recall, and precision provided by them. Besides these performance metrics, a comparison of the model training times taken by the 60 models using the 6 feature selection scenarios is also illustrated. Section 2 discusses some of the research works that have played a crucial role in providing a foundation for this research work. Section 3 discusses the flow of work and describes the dataset and algorithms applied in this research. Section 4 presents the results obtained and finally the paper is concluded in Section 5 . 2. Literature review Rashmi G. Saboji et al. 5 have used genetic search to obtain 13 important predictors out of 76 attributes of Cleveland heart disease dataset. They also used the Switzerland and Hungary heart disease datasets containing the same 13 predictors. Upon these datasets, Random forest and Naive Bayes algorithms were applied on varying training dataset sizes (200,400, 600 instances). Both algorithms were compared in terms of the accuracy obtained and it was observed that the RF model gave better accuracy than NB for all 3 training data sizes, that is, 88%, 96%, and 98% for 200 instances, 400 instances, and 600 instances respectively in the training data. Kirsi Varpa et al. 1 have conducted experiments on an Otoneurological Disorder dataset containing a multinomial target attribute (nine classes in the target attribute) by implementing KNN and SVM in ordinary, OVA, and OVO methodologies. SVM was implemented using both linear and RBF kernel functions. All the nine models were compared against a 5-NN baseline model (which gave 89.5% accuracy) and it was observed that 5-NN with OVO yielded the best performance with 95% accuracy. G. Manikandan et al. 6 have compared the LR, DT, SVM, RF, and XGBoost models for predicting heart disease. First the Boruta feature selection technique was applied on the Cleveland heart disease dataset, which resulted in selection of 6 out of 13 predictors, followed by application of the aforementioned ML models on the reduced dataset. This research concluded that the LR combined with Boruta model outperformed all the other models with an accuracy of 88.52%. Asif Nawaz et al., 7 in their work, suggested a model based on hybridization of data sampling and cost-sensitive learning for handling imbalanced dataset. They have used the Myocardial Infarction (MI) dataset which contained 1700 patient records and was highly imbalanced at the ratio 1:5.67. They have compared multiple class balancing methods like SMOTE, ADASYN, Tomek-link, ENN, weighted XGBoost with their proposed method which gave a better performance in terms of accuracy, ROC-AUC, and MCC. The combination of data sampling and cost-sensitive learning using XGBoost for classification gave an accuracy of 91.98%. Abedayo Ogunpola et al. 8 compared seven different ML and DL algorithms like, LR, SVM, KNN, RF, Gradient boosting, XGBoost, and CNN by applying them on two datasets: Cardiovascular Heart disease dataset from Mendeley database and Cleveland Heart disease dataset from Kaggle database. These algorithms were compared based on their accuracy, precision, recall, and F1-score, and it was observed that XGBoost outperformed the other models. 3. Methods This section discusses the flow of work of this research work. First, the MI patients dataset was collected from the UCI repository and was preprocessed to handle missing values and removal of trivial attributes like patient Id. Next, the original dataset was split into training and testing datasets followed by balancing the classes in training dataset using SMOTE. Further, feature selection techniques are applied on the dataset to select a smaller number of relevant predictors followed by classification algorithms to predict the patient class. The Figure 1 below shows the workflow of the implementation. Figure 1. Flow of work. Synthetic Minority Oversampling Technique (SMOTE) is a class balancing method in which synthetic instances are created for minority class using some simple statistical operations. In this method, first the difference between any two neighboring samples (X i and X j ) of minority class is computed and this difference is multiplied with a random value between 0 to 1, referred to as lambda. The resultant set of values is added to X i or X j to produce a new instance. 3.1 Dataset description This study considers a Myocardial Infarction dataset containing 1700 patient records from the Krasnoyarsk Inter-district Clinical Hospital, Russia, available in the UCI repository. This dataset has 124 attributes including one patient Id column, one target attribute called Lethal Outcome, and remaining 122 attributes include information like patient’s demographic details, heart disease history, patient condition during admission to hospital, condition after 24 hours, 48 hours, and 72 hours of admission, patient condition during admission to ICU, condition after 24 hours, 48 hours, and 72 hours of admission to ICU, use of several drugs and condition of the patient after 24 hours, 48 hours and 72 hours of use of the drug. The target attribute has 8 classes from 0 to 7, indicating the cause of death of the patient. This dataset is designed such a way that maximum importance is given to the initial hours of the patient’s condition after a particular treatment. The below Figure 2 , Figure 3 , and Figure 4 represent the count of target attribute classes, count of target attribute classes with respect to the gender of patient, and the count of target attribute classes after balancing the dataset using SMOTE. In Figure 2 and 3 , the count of target attribute classes is shown including and excluding class 0 in order to highlight the imbalance in class. Figure 2. Count plot for Lethal Outcome. Figure 3. Count plot for Lethal Outcome with respect to Gender of patient. Figure 4. Count plot for Lethal Outcome after data oversampling using SMOTE. 3.2 Feature selection algorithms used Feature selection is a crucial pre-processing activity before making predictions using ML models. It helps in reducing the burden of training the model by selecting a few selective predictors from all available features of the dataset. 9 – 11 Several algorithms exist for the selection of relevant features which can be categorized into three methods: Filter method, Wrapper method, and Embedded method. Filter method feature selection techniques individually check the relationship between each feature and the target attribute. It uses correlation to compute the dependency of the target attribute on a particular feature, and determines whether the target is negatively or positively correlated with the feature. Examples of filter methods include Chi-square test, Variance based, Mutual Information, Fisher’s score, etc. Wrapper method feature selection techniques involve testing the classification model performance based of different feature subsets, that is, the features are added and removed dynamically and the model is trained upon every possible combination. The feature subset that gives the best performance is selected as the most optimal set of features. Due to its working method, it is also known as greedy method of feature selection. Examples of wrapper method include Forward Selection, Recursive Feature Elimination, Backward Selection, Boruta, etc. Embedded method feature selection combines the advantages of filter methods and wrapper methods. This method takes care of the machine training iterative process while maintaining the minimum computation cost. Examples of embedded method are Lasso and Ridge Regression. In this research, five different FS techniques are applied on the Myocardial Infarction dataset, which include the Variance based, Mutual Information based, Maximum Relevance Minimum Redundancy, Boruta and Recursive Feature Elimination based feature selection. Variance based Feature Selection: Higher the variance of a feature, more is the dependency of target attribute upon that feature, lower the variance, lesser will be the dependency. In this method, the variance of each feature is computed and all features having variance less than a certain threshold are eliminated. In our research, the threshold variance was set to 0.2 and it was observed that out of 124, out 33 features were accepted. The below Figure 5 depicts the pseudo code for selecting features using this method. Figure 5. Pseudo code for Variance based FS. Mutual Information (MI) based FS: MI refers to the amount of dependency between two variables. An importance score greater than zero indicates that there exits some dependency between the two variables and an importance score equal to zero implies that the variables are completely independent of each other. The mutual information between 2 variable X and Y, given by I(X,Y), is computed using the following formula: I ( X , Y ) = H ( X ) − H ( X | Y ) Such that H(X) indicates the entropy in variable X and H(X|Y) depicts the entropy in X when Y is true. Entropy refers to the amount of information contained in a random variable. In this MI feature selection technique, the MI between the target attribute and every other feature is computed to determine the degree of dependency of the target attribute on that feature. Based on the computed importance scores, the top ‘K’ features are selected for training the model. Figure 6 depicts the pseudocode for selecting features using this method. Figure 6. Pseudo code for MI based feature selection. The below Figures 7 , 8 , 9 , and 10 provide the ‘Accuracy’ vs ‘Number of features selected using MI’ method plot for the LR, DT SVM, and Adaboost algorithms respectively with the number of features ranging between 1 to 95. Figure 7. Accuracy vs Feature count plot for MI and Logistic Regression model. Figure 8. Accuracy vs Feature count plot for MI and Decision Tree model. Figure 9. Accuracy vs Feature count plot for MI and Support Vector Machine model. Figure 10. Accuracy vs Feature count plot for MI and Adaboost model. Maximum Relevance Minimum Redundancy (MRMR) based Feature Selection: This technique is an improved form of the MI feature selection approach. MI may lead to selection of all the features that are important for the target attribute. However, this may include multiple features which are highly correlated, that is, extremely similar, therefore having only one of those features would be sufficient to train the model. The MRMR approach handles this issue by retaining only one of the multiple similar features that are equally important for the target attribute. The basic principle of MRMR method lies in computing the importance score of each feature in terms of its relevance and redundancy with respect to the target attribute. At each step, the importance score of each unselected feature is calculated using either the difference (relevance minus redundancy) or quotient (relevance divided by redundancy) approach. The below Figure 11 depicts the pseudo code for selecting features using this method. Figure 11. Pseudo code for MRMR based feature selection. The below Figures 12 , 13 , 14 , and 15 provide the ‘Accuracy’ vs ‘Number of features selected using MRMR method plot for the LR, DT SVM, and Adaboost algorithms respectively with the number of features ranging between 1 to 95. Figure 12. Accuracy vs Feature count plot for MRMR and Logistic Regression model. Figure 13. Accuracy vs Feature count plot for MRMR and Decision Tree model. Figure 14. Accuracy vs Feature count plot for MRMR and Support Vector Machine model. Figure 15. Accuracy vs Feature count plot for MRMR and Adaboost model. Boruta: In this technique, a copy of all original features, with shuffled rows are created and added to the original dataset. This additional set of features is commonly referred to as Shadow features. 12 The new dataset is then provided to a random forest model which computes the importance of each feature and the shadow feature having the highest importance is identified. All features of the original dataset that have an importance value higher than the identified shadow feature are retained. This process is repeated for certain number of times (minimum 20 times), and the original features that are retained for majority of the iterations are selected for final model training. In our study, we have used 100 iterations to select the optimal features. Figure 16 depicts the pseudo code for selecting features using this method. Figure 16. Pseudo code for Boruta based FS. Recursive Feature Elimination (RFE) based feature selection is another attribute selection method which attempts to obtain the best feature subset of size ‘K’ where ‘K’ is the number of features required. This objective is achieved by eliminating the less important features and retaining the relevant ones which help in improving the model performance. In this method, the predictors are assigned ranks based on the feature_importances_ attribute of the predictive model being used removing the ones with lowest importance. This process was performed iteratively using the reduced feature-subset until the desired number of features was obtained. Figure 17 depicts the pseudocode for selecting features using this method. Figure 17. Pseudo code for RFE based feature selection. 3.3 Class prediction algorithms used Logistic Regression is a supervised regression and classification algorithm that assumes each data point to be independent of each other and no outliers should be present in the dataset. Ideally it handles datasets having a binomial target attribute, but can handle multinomial target attributes with softmax function. The logistic regression algorithm uses a sigmoid function to generate a probability value that indicates the probability of a tuple belonging to a particular class. 13 , 14 Support Vector Machine is another machine learning algorithm used to classify data points into two or more classes by trying to find an optimal hyperplane that separates the different data points. Out of all the possible hyperplanes, the one that provides the maximum margin, known as the Maximal Margin Hyperplane (MMH), is selected as the most optimal one. 15 – 17 SVM has a kernel hyperparameter which is a mathematical function used to map the instances to a high-dimensional space to be able to easily obtain the MMH if the data is non-linearly separable. 18 Some of the commonly used kernel functions are sigmoid, linear, radial basis function, polynomial function, etc. Decision tree is a tree-structures regression and classification model consisting of test on attributes as internal nodes, values of these attributes as branches to the next level, and class labels as the leaf nodes. At each level, attributes are are chosen based on metrics like gini impurity, entropy, and information gain. This process continues until a pure node is obtained, that is, each value of that attribute belongs to the same class. Entropy refers to the amount of uncertainty in the attribute considered. Information gain refers to the reduction in entropy after splitting the dataset based on a certain attribute. Adaptive Boosting or Adaboost is an ensemble learning algorithm in which the weak learner is trained iteratively and each successive model gives higher weightage to the misclassified data points. The final Adaboost model is obtained as an ensemble of these weak learners based on the model weights, where the highest weight is given to the model with the highest accuracy and the lowest weight is given to the model with the lowest accuracy. One-vs-All (OVA) is a way of implementing multinomial classification problem using ‘n’ binary classifiers where ‘n’ implies the number of categories in the target attribute. Each classifier M i is dedicated to a single class C i considering class C i as 1 and other classes as 0. Each binary classifier predicts whether an instance belongs to class Ci or not. The average of the accuracy of each each model is considered to be the final accuracy of the OVA model. 16 One-vs-One (OVO) is another method of executing multiclass classification using multiple binary classifiers, where a binary classifier is built for every pair of target classes C i and C j , that is, the number of binary classifiers required is n*(n-1)/2, where ‘n’ is the number of classes in the target attribute. Each data point is then classified based on majority vote applied on results of all models. 1 4. Results The models generated by each of the aforementioned algorithms in their ordinary, one-vs-all, and one-vs-one approaches under various feature selection scenarios are compared in terms of the accuracy, precision, recall, and F1-score provided by each of them. Tables 1 to 6 present the evaluation metrics provided by each algorithm under the six scenarios (with no feature selection, variance based feature selection, mutual information based feature selection, maximum relevance minimum redundancy based feature selection, Boruta feature selection and recursive feature elimination) respectively. Table 1. Performance metrics of 4 classification models without feature selection. No feature selection Logistic Regression (122 features) Decision Tree (122 features) SVM (122 features) Adaboost (122 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 82 81 83 84 73 84 91 91 91 74 90 90 Precision 90 90 90 86 88 89 86 89 86 89 89 90 Recall 82 81 83 84 73 85 91 91 91 74 90 90 F1-score 86 85 86 85 80 87 88 90 88 80 90 90 Table 2. Performance metrics of 4 classification models with Variance based (>0.2) feature selection. Variance feature selection Logistic Regression (32 features) Decision Tree (32 features) SVM (32 features) Adaboost (32 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 51 49 55 68 55 75 84 83 84 72 80 83 Precision 86 85 85 79 82 80 79 80 80 80 82 83 Recall 51 49 55 68 55 75 84 83 84 72 80 83 F1-score 62 60 66 72 66 77 81 80 80 86 81 83 Table 3. Performance metrics of 4 classification models with Mutual Information based feature selection. MI feature selection Logistic Regression (85 features) Decision Tree (43 features) SVM (50 features) Adaboost (60 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 82 80 84 80 73 84 90 90 90 83 90 90 Precision 90 90 91 85 88 88 87 88 87 88 89 90 Recall 82 80 84 80 73 84 90 90 90 83 90 90 F1-score 86 85 87 82 80 85 88 89 88 85 90 90 Table 4. Performance metrics of 4 classification models with MRMR based feature selection. MRMR feature selection Logistic Regression (84 features) Decision Tree (18 features) SVM (61 features) Adaboost (56 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 82 79 82 84 77 82 90 90 90 88 90 91 Precision 90 90 90 86 87 86 87 87 87 86 88 90 Recall 82 79 82 84 77 82 90 90 90 88 90 91 F1-score 85 84 85 85 81 84 88 88 88 87 89 90 Table 5. Performance metrics of 4 classification models with Boruta feature selection. Boruta feature selection Logistic Regression (95 features) Decision Tree (95 features) SVM (95 features) Adaboost (95 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 82 80 82 84 75 86 90 90 91 85 90 91 Precision 90 90 90 87 88 89 85 86 86 88 89 90 Recall 82 80 82 84 75 86 90 90 91 85 90 91 F1-score 86 84 86 85 80 87 88 88 88 86 89 90 Table 6. Performance metrics of 4 classification models with RFE based feature selection. RFE feature selection Logistic Regression (70 features) Decision Tree (40 features) SVM (58 features) Adaboost (16 features) Simple OVA OVO Simple OVA OVO Simple OVA OVO Simple OVA OVO Accuracy 81 79 81 84 70 86 91 91 91 74 82 85 Precision 90 90 90 87 88 88 87 88 87 86 86 87 Recall 81 79 81 84 70 86 91 91 91 74 82 85 F1-score 85 83 85 85 78 87 89 89 89 79 84 96 A graphical representation of the aforementioned metrics is also shown below in the bar graphs. Figures 18 , 19 , 20 , 21 , 22 , and 23 indicate the accuracy, precision, recall, and f1-score of all the four algorithms (in ordinary, OVA, and OVO implementations) under the six scenarios, that is, without any feature selection, with variance based, MI based, MRMR based, Boruta, and RFE based feature selection methods respectively. Figure 18. Performance metrics of 4 classification models with No feature selection. Figure 19. Performance metrics of 4 classification models with Variance based feature selection. Figure 20. Performance metrics of 4 classification models with Mutual Information feature. Figure 21. Performance metrics of 4 classification models with MRMR feature selection. Figure 22. Performance metrics of 4 classification models with Boruta feature selection. Figure 23. Performance metrics of 4 classification models with RFE feature selection. It can be observed from the above tables and graphs that out of the 60 models implemented, the highest accuracy obtained without any feature selection is 91% by SVM-OVO model with 122 features. However, the same accuracy is also achieved by the Adaboost-OVO model with 95 features selected using Boruta and with less than half number of features, i.e., 58 features selected using RFE feature selection and with only 56 features selected using MRMR feature selection. The second highest accuracy of 90% is provided by the Adaboost-OVO model using 122 features and the same performance is also achieved by the SVM model with only 50 features, 61 features, and 91 features selected using MI based, MRMR based, and Boruta feature selection methods respectively, as well as, by the Adaboost-OVA model with 60 features selected using MI feature selection. Besides the performance metrics discussed above, emphasis is laid upon the use of various feature selection methods by comparing the model training times taken by all the 60 models with the reduced feature sets. These training times are an indication of burden on the model, lower the training time, lower is the burden on the model. The below Table 7 provides the model training times in seconds. Table 7. Model training times for different feature selection techniques (in seconds). Algorithm Mode of Implementation No FS Variance FS Boruta FS MI FS MRMR RFE LR Ordinary 0.475 0.462 0.221 0.276 0.260 0.419 OVA 1.216 0.853 0.480 0.578 0.428 0.858 OVO 0.955 1.062 0.395 0.498 0.413 0.721 DT Ordinary 0.621 0.354 0.256 0.208 0.088 0.295 OVA 3.689 2.382 1.451 0.925 0.311 1.709 OVO 1.485 1.389 0.580 0.448 0.177 0.760 SVM Ordinary 1.289 1.561 0.548 0.457 0.474 1.254 OVA 4.627 4.641 1.804 1.691 1.429 4.684 OVO 1.554 1.793 0.637 0.655 0.691 1.648 Adaboost Ordinary 5.284 3.135 2.169 2.258 1.564 1.067 OVA 34.651 24.067 15.183 14.569 10.250 6.754 OVO 27.842 23.871 11.458 11.044 7.509 7.530 Figure 24 shows the training times taken by the 4 algorithms for six feature selection scenarios: No feature selection, Variance based FS, Boruta FS, Mutual Information based FS, Minimum Redundancy Maximum Relevance based FS, and Recursive Feature Elimination based FS in their ordinary implementation. Similarly, Figure 19 and Figure 20 show the training times taken by the 4 algorithms for 6 feature selection scenarios in their OVA and OVO implementations respectively. Figure 24. Ordinary model training times for different feature selection (in seconds). It can be observed from the Figures 24 , 25 , and 26 that the model training times are somewhat decreasing for the LR and DT models and have significantly reduced for the SVM and Adaboost models. This decrease in training times is a clear implication of the reduced burden upon the prediction models as they do not have to learn large amounts of data while maintaining the model performance. Figure 25. OVA model training times for different feature selection (in seconds). Figure 26. OVO model training times for different feature selection (in seconds). 5. Conclusion The primary objective of this research work is to strike a balance between the predictive performance of the model and the burden of training the model. As discussed in Section 4 , the use of selective predictors extracted by the application of feature selection techniques has provided similar results to those of the models without feature selection. It can also be observed that for some sophisticated models such as Adaboost, the performance has significantly improved by the use of feature selection techniques, that is, the accuracy of 74% (without any feature selection taking 5.3 seconds) is increased to 85% (with Boruta feature selection taking only 2.17 seconds training time) and 88% (with MRMR feature selection taking 1.6 seconds training time). Similarly, the DT-OVO model’s performance has improved from 84% (without any feature selection taking 1.48 seconds training time) to 86% (with Boruta feature selection taking 0.58 training time). It can be noted that the performance of DT-OVO model has improved from 84% accuracy with 122 features (taking 1.48 seconds training time) to 86% with only 40 features (taking only 0.76 seconds training time) selected using RFE. The advantages of these reduced training times can be clearly noticed when dealing with a large number of data instances. Overall from this experiment it is clear that, while maintaining a decent level of predictive performance of the model, it is essential to keep the number of predictors optimal so as to reduce the model training burden. In future, the several feature selection techniques can be hybridized and used upon machine learning models as well as ensembled model to enhance the predictive performance while keeping a check on the number of essential features. Data availability statement Third party data The Myocardial Infarction dataset used in this research is freely available to public for research purpose. It is downloaded from the UCI Repository and can be obtained from the following link. https://archive.ics.uci.edu/dataset/579/myocardial+infarction+complications Licence details: This dataset is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license. It can be cited as follows: Golovenkin, S., Shulman, V., Rossiev, D., Shesternya, P., Nikulina, S., Orlova, Y., & Voino-Yasenetsky, V. (2020). Myocardial infarction complications [Dataset]. UCI Machine Learning Repository. https://doi.org/10.24432/C53P5M . Acknowledgement I would like to express my gratitude to my family and my supervisors for their constant support and guidance throughout this research work. I would also like to acknowledge the financial support offered by Kalinga Institute of Industrial Technology, Deemed to be University in publishing this work. References 1. Varpa K, Joutsijoki H, Iltanen K, et al. : Applying one-vs-one and one-vs-all classifiers in k-nearest neighbour method and support vector machines to an otoneurological multi-class problem. Studies in Health Technology and Informatics. 2011; 169 : 579–583. PubMed Abstract | Publisher Full Text 2. Dorairaj P, Jeemon P, Roy A: Cardiovascular diseases in India: Current epidemiology and future directions. Circulation. 2016; 133 (16): 1605–1620. Publisher Full Text 3. Selvakumari SJ, Fernandez S, Jeyanthi JA, et al. : An Extensive Survey on Heart Disease Prediction. Annals of R.S.C.B. 2021; 25 (4): 13013–13020. 1583-6258. 4. Naser MA, Majeed AA, Alsabah M, et al. : A Review of Machine Learning’s Role in Cardiovascular Disease Prediction: Recent Advances and Future Challenges. Algorithms. 2024; 17 (2): 78. Publisher Full Text 5. Saboji R: A scalable solution for heart disease prediction using classification mining technique.2017; 1780–1785. Publisher Full Text 6. Manikandan G, Pragadeesh B, Manojkumar V, et al. : Classification models combined with Boruta feature selection for heart disease prediction. Informatics in Medicine Unlocked. 2024; 44 : 101442. Publisher Full Text 7. Asif Newaz M, Salman Mohosheu M, Al Noman A: Predicting complications of myocardial infarction within several hours of hospitalization using data mining techniques. Informatics in Medicine Unlocked. 2023; 42 : 101361. Publisher Full Text 8. Ogunpola A, Saeed F, Basurra S, et al. : Machine Learning-Based Predictive Models for Detection of Cardiovascular Diseases. Diagnostics. 2024; Vol. 14 (144): MDPI. PubMed Abstract | Publisher Full Text | Free Full Text 9. Anbarasi M, Anupriya E, Iyengar NCSN: Enhanced prediction of heart disease with feature subset selection using genetic algorithm. International Journal of Engineering Science Technologies. 2010; 2 (10): 5370–5376. 10. Bashir S, et al. : Improving heart disease prediction using feature selection approaches. 2019 16th International Bhurban Conference on Applied Sciences and Technology (IBCAST). IEEE; 2019. 11. Escamila G, Karen A, El Hassani AH, et al. : Classification models for heart disease prediction using feature selection and PCA. Informatics in Medicine Unlocked. 2020; 19 : 100330. Publisher Full Text 12. Agarwal Y, Chhikara R, Rana S: Boruta based machine learning model for heart disease prediction. International Journal of Science and Research Archive. 2023; 10 (01): 768–774. Publisher Full Text 13. Sreenivasulu K, Anuradha B, Reddy ACO, et al. : Cardiovascular Syndrome Prediction Using Machine Learning Algorithms. International Journal of Intelligent Systems And Applications in Engineering (IJISAE). 2024; 12 (15s): 548–555. 14. Chandra Reddy NS, Shue Nee S, Zhi Min L, et al. : Classification and Feature Selection Approaches by Machine Learning Techniques: Heart Disease Prediction. International Journal of Innovative Computing. 2019; 9 (1). Publisher Full Text 15. Khourdifi Y, Mohamed B: Heart disease prediction and classification using machine learning algorithms optimized by particle swarm optimization and ant colony optimization. International Journal of Intelligent Engineering and Systems. 2019; 12 (1): 242–252. Publisher Full Text 16. Mishra S, Pandey M, Rautaray SS: A Review on Machine Learning Algorithms for Binary Classification of Heart Disease Patients. Proceedings of the International Conference on Computational and Intelligent Data Science (ICCIDS). SSRN Electronic Journal. Publisher Full Text 17. Joshi A, Gunwant H, Sharma M, et al. : Early prognosis of acute myocardial infarction using machine learning techniques.2022; pp. 815–829. Publisher Full Text 18. Takci H: Improvement of Heart Attack Prediction by the Feature Selection Methods. Turkish Journal of Electrical Engineering and Computer Sciences. 2018; 26 (1): 1–10. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 14 Jan 2025 ADD YOUR COMMENT Comment Author details Author details 1 School of Computer Engineering, Kalinga Institute of Industrial Technology, Bhubaneswar, Odisha, India Sarita Mishra Roles: Conceptualization, Investigation, Methodology, Writing – Original Draft Preparation Manjusha Pandey Roles: Methodology, Supervision, Visualization, Writing – Review & Editing Siddharth Swarup Routaray Roles: Methodology, Supervision, Visualization, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This research work was funded by the Kalinga Institute of Industrial Technology, Deemed to be University. I confirm that the funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Article Versions (1) version 1 Published: 14 Jan 2025, 14:78 https://doi.org/10.12688/f1000research.160393.1 Copyright © 2025 Mishra S et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Mishra S, Pandey M and Routaray SS. Feature optimized hybrid model for prediction of myocardial infarction [version 1; peer review: awaiting peer review] . F1000Research 2025, 14 :78 ( https://doi.org/10.12688/f1000research.160393.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: AWAITING PEER REVIEW AWAITING PEER REVIEW ? 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 Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 14 Jan 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status AWAITING PEER REVIEW 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 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 = "Feature optimized hybrid model for prediction...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-78/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-78/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-78/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Mishra S et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/14-78/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/14-78", templates : { twitter : "Feature optimized hybrid model for prediction of myocardial infarction. Mishra S et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-78/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/160393/176284") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "176284"); $(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 = { "371333": 0, "371332": 0, "370311": 0, "371335": 0, "370310": 0, "371334": 0, "371331": 0, "371330": 0, "370317": 0, "370316": 0, "370319": 0, "370318": 0, "370313": 0, "371337": 0, "370312": 0, "371336": 0, "474506": 0, "370315": 0, "371339": 0, "474505": 0, "370314": 0, "371338": 0, "484117": 0, "484116": 0, "484115": 0, "484114": 0, "484113": 0, "380069": 0, "400166": 0, "380068": 0, "400167": 0, "403879": 0, "380071": 0, "380070": 0, "400165": 0, "380065": 0, "380064": 0, "380067": 0, "380066": 0, "400174": 0, "400172": 0, "400173": 0, "380073": 0, "400170": 0, "380072": 0, "400171": 0, "400168": 0, "400169": 0, "382391": 0, "382397": 0, "382396": 0, "382399": 0, "382398": 0, "382392": 0, "382395": 0, "382394": 0, "382401": 0, "382400": 0, "476737": 0, "476736": 0, "474581": 0, "474580": 0, "474579": 0, "474578": 0, "369133": 0, "369132": 0, "369135": 0, "369134": 0, "369129": 0, "369131": 0, "369130": 0, "369137": 0, "369136": 0, "369138": 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 = "5b1cc0e1-100a-4d21-a293-40b1437e59c3"; 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.